Programación orientada a objetos con NetBeans 7.1
La programación
orientada a objetos utiliza objetos y las interacciones que se pueden
establecer entre ellos. Incluye varias técnicas entre las que se destacan la
herencia, el abstraccionismo, el polimorfismo y el encapsulamiento. Estas
técnicas utilizadas en forma adecuada y combinada permiten diseñar y
desarrollar sistemas informáticos de calidad en cuanto a su arquitectura y
desempeño. En la actualidad existen muchos lenguajes que soportan la
programación orientada a objetos y es raro encontrar uno que no lo haga. Muchas
suites de desarrollo, además de la herramienta de creación de la aplicación,
ofrecen utilitarios que permiten el
diseño conceptual del mismo. Entre estos utilitarios se encuentran diseñadores
de diagramas UML que implementan diseñadores de código e interfaces que
facilitan el desarrollo de aplicaciones.
Los objetos son
entidades que comparten las mismas características. Se agrupan en clases
funcionales y pueden ser utilizados mediante instanciación. Conceptualmente, un
objeto posee dos contextos: un estado y un comportamiento. El estado se refiere
a la configuración inicial de todos y cada uno de los atributos de un objeto.
El comportamiento son los cambios que se producen en los estados iniciales de
un objeto o la lógica que se ejecuta en un método de la clase instanciada. La
identidad del objeto es otra característica presente en los objetos y se refiere
a la identificación unívoca del mismo dentro de la colección de objetos de la aplicación.
Finalmente, el tiempo de vida del objeto alude a la duración que tiene de vida
dentro de la vida general de la aplicación.
Para comprender el
amplio mundo de la programación orientada a objetos, es necesario definir
algunos conceptos importantes.
Concepto |
Descripción
|
Clase |
Una clase conjunta elementos que comparten las mismas
propiedades y métodos. La instanciación de una clase crea lo que se denomina
un objeto. Existen superclases y subclases. Con ello se crea lo que se llama
jerarquía de clases, donde la clase padre hereda a las clases hijas. |
Herencia |
Es la facilidad mediante la cual una clase hereda las
propiedades y métodos públicos de otra clase. La herencia puede ser simple o
múltiple. Es simple cuando una clase hereda solamente de otra clase superior
(se convierte una relación subclase – superclase) mientras que la herencia
múltiple es cuando la clase hereda de 2 o más clases superiores. En Java y
.NET sólo existe la herencia simple. |
Objeto |
Es una
entidad instanciada de una clase provista de propiedades o atributos (datos)
y de comportamiento o funcionalidad (métodos) que básicamente responden a
eventos. El objeto puede instanciarse de una clase directamente o de una
clase derivada la cual hereda de otra. |
Método |
Constituye
la lógica de un objeto. Algoritmo que se implementa para realizar una
determinada operación sobre los atributos de la clase o de una clase
derivada. |
Evento |
Es el
encargado de que un método se ejecute. Entre los eventos programáticos más
comunes se tiene el clic que se produce sobre un botón, el keypress sobre un
objeto texto o change que se produce sobre dropdown. |
Mensaje |
Constituye
la comunicación que se establece entre objetos para intercambiar parámetros
sean de entrada, salida o ambos. Mediante parámetros se establece un esquema
de colaboración entre objetos. |
Propiedad |
Se le
denomina también atributo o dato de la clase. Constituye el contenedor de un
valor de un tipo de dato determinado. Un método puede variar ese contenido. |
También se debe agregar
cuáles son las propiedades principales de la programación orientada a objetos.
La tabla 3.2 muestra algunas de estas propiedades.
Concepto |
Descripción |
Abstracción |
Representa las
características esenciales de un objeto, sin tener la preocupación de las
demás características que no lo son. Se preocupa más de los detalles
importantes de la implementación de un objeto, separando el comportamiento
esencial. Abstracción es describir una entidad del mundo real, por compleja
que sea, y utilizar dicha descripción en un programa.Ejemplo de
abstraccionismo es la de un motor. Este motor puede ser muy genérico y
comportarse de tal forma cuando es implementado por un motor a explosión,
eléctrico o a vapor. |
Encapsulamiento |
Significa la conjunción de
elementos que abstractamente se consideran pertenecientes a una entidad, con
mayor cohesión entre los componentes de la misma. No se debe confundir con el
principio de ocultamiento. |
Modularidad |
Tiene como objetivo
descomponer una aplicación en otras más pequeñas (módulos) que sea lo más
acoplada posible a sí misma (independiente) |
Ocultación |
Es el sistema de
aislamiento generalmente de las propiedades de un objeto para proteger su integridad
y el acceso desautorizado que pueda modificar su contenido. Sólo los métodos
internos o pertenecientes a la clase pueden modificar dichas propiedades. Se
puede afirmar acordes con la Ley de Demeter. |
Polimorfismo |
Se refiere a la capacidad
de los objetos de comportarse de acuerdo a la funcionalidad requerida. Es
decir, establecer diferentes comportamientos para los métodos, por ejemplo, del objeto, que implementan diversas
funcionalidades de acuerdo con parámetros recibidos a través de los mismos. |
Clases abstractas
Una clase abstracta
implementa la estructura genérica de la funcionalidad que deberá ser implementada en una clase
derivada. Una clase abstracta en realidad no puede usarse, es decir, no se
puede instanciar en un objeto para ser utilizada. Más bien se deriva en otra
clase y sobre ésta es que se crea la instanciación. Una clase abstracta se
puede crear o definir cuándo se necesita englobar objetos de tipo diferente y
se quiere implementar polimorfismo. Supóngase que se requiere crear un sistema
que sea lo suficientemente genérico (parametrizable) pero que establezca
ALFAOMEGA los métodos que obligatoriamente deben realizarse.
Ejercicio: creación de
una clase abstracta llamada vehículo
public abstract class
vehiculo {
protected int modelo;
protected String color;
protected String marca;
protected double precio;
Scanner Lector = new
Scanner(System.in); //para procesar lecturas de
//teclado a usar en clases
//derivadas
public vehiculo (int modelo, String color,
String marca, double precio ){
this.modelo = modelo;
this.color = color;
this.marca = marca;
this.precio = precio;
}
public vehiculo(); //declara un constructor vacío.
{}
public abstract void registrarVehiculo();
}
Ejercicio: creación de
la clase automóvil que reescribe el método abstracto
public class automovil extends vehiculo {
@Override
public void registrarVehiculo() {
String estilo;
//coupe, sedan, compacto...
System.out.print("Digite el modelo del automóvil: ");
modelo =
Lector.nextInt();
System.out.print("Digite el color del automóvil: ");
color = Lector.next();
System.out.print("Digite el precio del automóvil: ");
precio =
Lector.nextInt(); }
}
No hay comentarios:
Publicar un comentario