PROGRAMACION ORIENTADA A OBJETOS: HERENCIA

domingo, 7 de febrero de 2010

PROGRAMACION ORIENTADA A OBJETOS: HERENCIA

9.1- Introduccion
9.2- Superclases y Subclases
9.3- Miembros protected
9.4- Relación entre superclases y subclases
9.5. Constructores en las subclases
9.6. Ingeniería de Software con herencia
9.7. Clase de objeto
9.8. (Opcional) GUI Estudio de caso: visualizacion de texto e imagenes
9.9. Wrap-Up


Introducción

En este capítulo se hablara acerca de la Programación Orientada Objetos (POO) y se introducirá una de sus características principales, la herencia, que es una forma de reutilización de software en la que se crea una nueva clase absorbiendo los miembros de una clase existente, y se mejoran con nuevas capacidades, o con modificaciones en las capacidades ya existentes. Con la herencia, los programadores ahorran tiempo durante el desarrollo, al reutilizar software probado y depurado de alta calidad. Esto también aumenta la probabilidad de que un sistema se implemente con efectividad.
Al crear una clase, en vez de declarar miembros completamente nuevos, el programador puede designar que la nueva clase herede los miembros de una clase existente. Esta clase existente se conoce como superclase, y la nueva clase se conoce como subclase. Cada subclase puede convertirse en la superclase de futuras subclases.
Una subclase generalmente agrega sus propios campos y métodos. Por lo tanto, una subclase es más específica que su superclase y representa un grupo más especializado de objetos. Generalmente, la subclase exhibe los comportamientos de su superclase junto con comportamiento adicionales específicos de esta subclase. Es por ello que la herencia se le conoce algunas veces como especialización.
La superclase directa es la superclase a partir de la cual la subclase hereda en forma explícita. Una superclase indirecta es cualquier clase arriba de la superclase directa en la jerarquía de clases, la cual define las relaciones de herencia entre las clases. En java, la jerarquía de clases empieza con la clase Object (en el paquete java.lang), a partir de cual se extienden (o “heredan”) todas las clases en Java, ya sea en forma directa o indirecta. En el caso de la herencia simple, una clase se deriva de una superclase directa.
Con la POO, los programadores se enfocan en los elementos comunes entre los objetos en el sistema, en vez de enfocarse en los casos especiales.
Es necesario hacer una diferencia entre la relación “es un” y la relación “tiene un”, La relación “es un” representa a la herencia. En este tipo de relación, un objeto de una subclase puede tratarse también como un objeto de su superclase. Por ejemplo, un automóvil es un vehículo. En contraste, la relación “tiene un” identifica a la composición. En este tipo de relación, un objeto contiene referencia a objetos como miembros. Por ejemplo, un automóvil tiene un volante de dirección (y un objeto automóvil tiene una referencia a un objeto volante de dirección).
Las clases nuevas pueden heredar de las clases en las bibliotecas de clases. Las organizaciones desarrollan sus propias bibliotecas de clase y pueden aprovechar las que ya están disponibles en todo el mundo. Es probable que algún día, la mayoría de software nuevo se construya a partir de componentes reutilizables estándar, como sucede actualmente con la mayoría de los automóviles y del hardware de computadora. Esto facilitaría el desarrollo de software más poderoso, abundante y económico.












Conclusión
En este capitulo se trato el concepto de herencia: la habilidad de crear clases mediante la absorción de los miembros de una clase existente, mejorándolos con nuevas capacidades. Se aprendió las nociones de las superclases y las subclases, y se utilizó la palabra clave extends para crear una subclase que hereda miembros de una superclase. En este capítulo se estudio el modificador de acceso protected; los métodos de la subclase pueden acceder a los miembros protected de la superclase. Se aprendió también como acceder a los miembros de la superclase mediante super. Se vio además cómo se utilizan los constructores en las jerarquías de herencia. Por último, se trato acerca de los métodos de la clase Object, la superclase directa o indirecta de todas las clases en Java.

Autoevaluación
9.1 Complete las siguientes oraciones:
a) ________________ es una forma de reutilización de software, en la que nuevas clases adquieren los miembros de las clases existentes, y se mejoran con nuevas capacidades.
b) Los miembros _______________ de una superclase pueden utilizarse en la declaración de la superclase y en las declaraciones de las subclases.
c) En una relación ______________, un objeto de una subclase puede ser tratado también como un objeto de su superclase.
d) En una relación _______________, el objeto de una clase tiene referencias a objetos de otras clases como miembros.
e) En la herencia simple, una clase existe en una relación _____________ con sus subclases.
f) Los miembros ______________ de una superclase son accesible en cualquier parte en donde el programa tenga una referencia a un objeto de esta superclase, a un objeto de una de sus subclases.
g) Cuando se crea la instancia de un objeto de una subclase, el _______________ de una superclase se llama en forma implícita o explícita.
h) Los constructores de una subclase puede llamar a los constructores de la superclase mediante la palabra clave _______________.
9.2 Conteste con verdadero o falso a cada una de las siguientes proposiciones; en caso de ser falso, explique por qué.
a) Los constructores de la superclase no son heredados por las subclases.
b) Una relación “tiene un” se implementa mediante la herencia.
c) Una clase Auto tiene una relación “es un” con las clases VolanteDirección y Frenos.
d) La herencia fomenta la reutilización de software comprobada, de alta calidad.
e) Cuando una subclase redefine al método de una superclase utilizando la misma firma, se dice que la subclase sobrecarga a ese método de la superclase.

Respuestas a los ejercicios de autoevaluación
9.1 a) Herencia. b) public y protected. c) “es un” o de herencia. d) “tiene-un” o composición. e) jerárquica. f) public. g) constructor. h) super.
9.2 a) Verdadero. b) Falso. Una relación “tiene un” se implementa mediante la composición. Una relación “es-un” se implementa mediante la herencia. c) Es falso. La clase Auto tiene una relación “es-un” con la clase vehiculo. d) Verdadero. e) Falso. Esto se conoce como sobrescritura, no sobrecarga; un método sobrecargado tiene el mismo nombre, pero una firma distinta.

Ejercicios
9.3 Muchos programas escritos con herencia podrían escribirse mediante la composición, y viceversa. Vuelve a escribir las clases EmpleadoBaseMasComision4 (figura 9.13) de la jerarquía EmpleadoPorComision3-EmpleadoBaseMasComision4 para usar la composición en vez de herencia. Una vez que haga esto, valore los méritos relativos de las dos metodologías para los problemas de EmpleadoPorComision3 y EmpleadoBaseMasComision4, así como también para los programas orientados a objetos en general. ¿Cuál metodología es más natural? ¿Por qué?
9.4 Describa las formas en las que la herencia fomenta la reutilización de software, ahorra tiempo durante el desarrollo de los programas y ayuda a prevenir errores.
9.5 Dibuje una jerarquía de herencia para los estudiantes en una universidad, de manera similar a la jerarquía que se muestra en la figura 9.2. Use a Estudiante como la superclase de la jerarquía, y después extienda Estudiante con las clases EstudianteNoGraduado y EstudianteGraduado. Siga extendiendo la jerarquía con el mayor número de niveles que sea posible. Por ejemplo, EstudiantePrimerAnio, EstudianteSegundoAnio, EstudianteTercerAnio y EstudianteCuartoAnio, podrían extender EstudianteNoGraduado, y EstudianteDoctorado y EstudianteMaestria podrían ser subclases de EstudianteGraduado. Después de dibujar la jerarquía, hable sobre las relaciones que existen entre las clase.













No hay comentarios:

Publicar un comentario