|
![]() |
Clases y Objetos |
Anterior | Siguiente |
Unas definiciones clásicas, antes de nada.
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. 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. 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.
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. 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:
La herencia es la característica clave de los sistemas orientados a objeto para propiciar la reusabilidad:
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. 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
Sistema interfaz gráfico de usuario
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. Una clase abstracta es una descripción
incompleta de algo. Un conjunto de operaciones y atributos que por sí solos no describen
nada. 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. |
|