Tutorial de Java

Clases y Objetos

Anterior | Siguiente
Unas definiciones clásicas, antes de nada.

Clase

Una clase define un miembro real o una entidad abstracta. Es el tipo o clasificación de datos. Una clase define el comportamiento y atributos de un grupo de objetos de características similares.

Objeto

Un objeto es una instancia o variable de una clase. Se dice que pertenece a la clase. Un objeto se distingue de otros miembros de la clase por sus atributos.

Clases Relacionadas

Una clase describe un conjunto de objetos con un comportamiento común y atributos relacionados. Probablemente a estas alturas de la lectura la clase coche resulte ya pesada, así que se hace necesario un cambio de aires y utilizar otra clase de objetos.

  • Una clase relacionada es Fútbol, que es una especialización de la clase Pelota.
  • Otra clase relacionada es Equipo_deportivo, que es una generalización de la clase Pelota

Los objetos rara vez caen dentro de grupos completamente distintos. A menudo existe solapamiento entre el comportamiento de los grupos de objetos. Esto se ve incluso en la clase Pelota.

La clase PelotaDeTenis es como la clase Pelota, pero modifica su comportamiento para ser utilizada en el tenis. Por contra, la clase Equipamiento_Deportivo es una generalización de Pelota, pero las características comunes de todos los objetos del campo de juego se encuentran en ella.

La jerarquía mostrada se explota en la orientación a objetos para propiciar la reusabilidad a través de un mecanismo que es la herencia.

Herencia

La herencia es un mecanismo que permite la definición de una clase a partir de la definición de otra ya existente. La herencia permite a un conjunto de clases relacionadas permanecer bajo un único paraguas, de forma que puedan ser consideradas y manejadas colectivamente.

La herencia permite el refinamiento o especialización de una clase existente:

  • Se pueden definir los miembros
  • Se pueden ocultar los miembros
  • Se pueden añadir nuevos miembros

La herencia es la característica clave de los sistemas orientados a objeto para propiciar la reusabilidad:

  • Es la parte orientada de los sistemas de objetos
  • Implementa las relaciones es-un (type of) o es-una-clase-de (instance of)

La clase Pelota es la clase padre (o base, o superclase) en la jerarquía de abajo. Sus métodos y atributos son heredados por las clases derivadas (hijas o subclases). Para los objetos de las clases derivadas no es evidente si los métodos son nativos a Rugby o Fútbol, o si han sido derivados de una clase de nivel superior.

Fútbol es una clase de Pelota. Fútbol tiene todos los atributos y operaciones de Pelota. No obstante, la clase Fútbol ha ocultado (hecho privada) la operación desinflar (sacándola del interfaz público) y sobrecargando el método lanzar con una implementación apropiada para el fútbol.

La herencia es una forma de especialización en la que las clases hijas son refinadas para tener el comportamiento y atributos adecuados para la aplicación de que se trate. Al poder las clases derivadas añadir, redefinir y ocultar miembros, la herencia se convierte en reusabilidad programable.

Otra razón para redefinir un método es que la clase base proporcione una implementación no óptima. A la luz del contexto en que se usen, las subclases pueden proporcionar una implementación óptima. Por ejemplo, mejores algoritmos y técnicas de almacenamiento pueden ser posibles en determinadas clases derivadas.

Modelado con Objetos

Los problemas se pueden modelar en los términos específicos del dominio. Una de las ventajas de la aproximación orientada a objetos es que permite que el problema sea representado en términos específicos del dominio. Esto permite a los diseñadores construir modelos que se proyectan directamente en el problema de la aplicación.

Sistema escuela

  • Clase Libro
  • Clase Pizarra
  • Clase Tiza
  • Clase Diploma
  • Clase Borrador

Sistema interfaz gráfico de usuario

  • Clase Pantalla
  • Clase Ventana_De_Texto
  • Clase Botón
  • Clase Barra_De_Desplazamiento
  • Clase Ventana_De_Dialogo

La ventaja de crear modelos cercanos al dominio es que son fáciles de comprender, hay menor probabilidad de cometer errores y descuidos, y los modelos pueden ser verificados por los usuarios que definen los requisitos.

Clases Abstractas

Una clase abstracta es una descripción incompleta de algo. Un conjunto de operaciones y atributos que por sí solos no describen nada.

  • Las clases abstractas no pueden ser instanciadas
  • No es posible crear objetos o variables
  • Describen partes de objetos
  • Creadas por generalización, características comunes, pero no completas
  • Utilizadas en polimorfismo para definir operaciones comunes
  • Las clases abstractas se utilizan junto con la herencia

Hay mucho interés en torno al polimorfismo. Los métodos pueden ser polimórficos si se aplican objetos de distintas clases para conseguir el mismo significado semántico. Por ejemplo, lanzar puede ser implementado tanto para un objeto PelotaDeTenis como para el objeto Béisbol.

He aquí un ejemplo de clase abstracta. En un sistema de clase GUI (interfaz gráfica de usuario), los métodos para la GUI pueden ser abstraídos para conseguir la definición de múltiples interfaces. Por ejemplo, si se supone que la clase ventana de diálogo es una clase abstracta; esto permite que la implementación de la clase sea manejada por el programador.

Los siguientes serían ejemplo de la clase VentanaDeDialogo:

La anterior una ventana habitual y la siguiente una ventana especial y particular de nuestra visión del interfaz.

Navegador

Home | Anterior | Siguiente | Indice | Correo