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

Sería importante que sepas esto Java representa una opción poderosa para el desarrollo de aplicaciones informáticas dirigidas al escritori...