Programación I - Unidad 7: P.O.O. - Herencia

12
Freddy Tejada - Escobar, MSc. Programación I - Unidad 7: P.O.O. - Herencia

Transcript of Programación I - Unidad 7: P.O.O. - Herencia

Page 1: Programación I - Unidad 7: P.O.O. - Herencia

Freddy Tejada-Escobar, MSc.

Programación I - Unidad 7: P.O.O. - Herencia

Page 2: Programación I - Unidad 7: P.O.O. - Herencia

Unidad 7: Programación Orientada aObjetos - Herencia

Introducción

Clases base y clases derivadas

Miembros protected

Relación entre las clases base y las clases derivadas

Creación y uso de clases

Creación de una jerarquía de herencia entre clases

La jerarquía de herencia mediante el uso de datos protected

La jerarquía de herencia mediante el uso de datos private

Los constructores y destructores en las clases derivadas

Herencia public, protected y private

Page 3: Programación I - Unidad 7: P.O.O. - Herencia

Objetivos

Crear clases heredando de clases existentes.

Comprender el mecanismo de abstracción de la herencia.

Distinguir entre los diferentes tipos de herencia.

Implementar jerarquías de herencia en C++

Distinguir entre jerarquías de herencia seguras (bien definidas) einseguras.

Conocer cómo la herencia promueve la reutilización de código.

Page 4: Programación I - Unidad 7: P.O.O. - Herencia

Después de la agregación o composición, el mecanismo más utilizado para alcanzaralgunos de los objetivos más preciados en el desarrollo de software como lo son lareutilización y la extensibilidad.

La reutilización de software (código fuente) ahorra tiempo durante el desarrollo deprogramas. También fomenta la utilización de código probado y depurado de alta calidad,lo cual incrementa la probabilidad de que el sistema se implemente en forma efectiva.

A través de ella, los diseñadores pueden crear nuevas clases partiendo de una clase o deuna jerarquía de clases preexistente (ya comprobadas y verificadas) evitando con ello elrediseño, la modificación y verificación de la parte ya implementada.

La herencia facilita la creación de objetos a partir de otros ya existentes e implica queuna subclase obtiene todo el comportamiento (métodos) y eventualmente los atributos(variables) de su superclase.

Introducción

Page 5: Programación I - Unidad 7: P.O.O. - Herencia

Al crear una clase, en lugar de escribir datos miembro y funciones miembrocompletamente nuevos, podemos designar que la nueva clase herede los miembros deuna ya existente. La clase existente se llama clase base, y la clase nueva es la clasederivada.

Una clase derivada representa a un grupo más especializado de objetos. Por lo general,una clase derivada contiene los comportamientos heredados de su clase base además decomportamientos adicionales.

Una clase derivada también puede personalizar los comportamientos que hereda de laclase base. Una clase base directa es la clase base a partir de la cual una clase derivadahereda en forma explícita. Una clase base indirecta es la que se hereda de dos o másniveles hacia arriba en la jerarquía de clases. En el caso de la herencia simple, una clasese deriva de una sola clase base.

C++ también soporta la herencia múltiple, en la cual una clase derivada hereda de variasclases base ( posiblemente no relacionadas).

Introducción

Page 6: Programación I - Unidad 7: P.O.O. - Herencia

Un objeto de una clase es un objeto de otra clase también.

Como todo objeto de una clase derivada es un objeto de su clase base, y unaclase base puede tener muchas clases derivadas, el conjunto de objetosrepresentados por una clase base es por lo general mayor que el conjunto deobjetos representado por cualquiera de sus clases derivadas.

• Las relaciones de herencia forman estructuras jerárquicas similares a los árboles.Una clase base existe en una relación jerárquica con sus clases derivadas. Aunquelas clases pueden existir de manera independiente, una vez que se emplean enrelaciones de herencia, se afilian con otras clases. Una clase se convierte ya seaen una clase base (suministrando miembros a las otras clases), en una clasederivada (heredando sus miembros de otra clase), o en ambas.

Clases base y clases derivadas

Page 7: Programación I - Unidad 7: P.O.O. - Herencia

Clases base y clases derivadas

Page 8: Programación I - Unidad 7: P.O.O. - Herencia

Ejemplo 1: Desarrollaremos una jerarquía de herencia simple con cinco niveles

(representada por los diagramas de clases UML). Una comunidad universitariaque tiene miles de miembros.

Descripción de las clases:

Estos miembros consisten en empleados, estudiantes y exalumnos. Losempleados pueden ser docentes o administrativos.

Los miembros docentes pueden ser administradores (como los decanos y losdirectores de departamento) o maestros. Sin embargo, algunosadministradores también imparten clases.

Clases base y clases derivadas

Page 9: Programación I - Unidad 7: P.O.O. - Herencia

Ejemplo 2: Ahora considere la jerarquía de herencia para Figura. Esta jerarquía comienza con

la clase base Figura.

Las clases FiguraBidimensional y FiguraTridimensional se derivan de la clase baseFigura (un objeto Figura puede ser FiguraBidimensional o FiguraTridimensional).

El tercer nivel de esta jerarquía contiene algunos tipos más específicos de objetosFiguraBidimensional y FiguraTridimensional.

Clases base y clases derivadas

Page 10: Programación I - Unidad 7: P.O.O. - Herencia

Jerarquía de una clase

La relación padre-hijo entre clases puede representarse desde un punto de vistajerárquico, denominado vista de clases en árbol.

La vista en árbol comienza con una clase general llamada superclase o clase base(a la que algunas veces se hace referencia como clase primaria, clase padre, claseprincipal, o clase madre; existen muchas metáforas genealógicas).

Las clases derivadas (clase secundaria o subclase) se vuelven cada vez másespecializadas a medida que van descendiendo en el árbol. Por lo tanto, se suelehacer referencia a la relación que vincula una clase secundaria con una claseprimaria mediante la frase es una x o y.

Clases base y clases derivadas

Page 11: Programación I - Unidad 7: P.O.O. - Herencia

Jerarquía de una clase

Herencia Simple

Clases base y clases derivadas

Page 12: Programación I - Unidad 7: P.O.O. - Herencia

Jerarquía de una clase

Herencia Múltiple

Clases base y clases derivadas