You are on page 1of 15

Universidad Nacional Mayor de San Marcos

Universidad del Per, Decana de Amrica

Facultad de Ciencias Matemticas

E.A.P. Matemtica

CURSO: PROGRAMACION DE
COMPUTADORAS II

Prof. Luis Vicente Bazalar Guerrero

Introduccin
Hay dos mecanismos para construir clases utilizando otras clases:
Decir que una nueva clase es una especializacin de una clase existente y que
tiene unas cosas (atributos y mtodos) ms que la clase general: Herencia.
Pegar objetos de otras clases dentro de una nueva clase: Composicin.
Ejemplos de composicin y herencia:
Clase persona y clase empleado.
Herencia: un empleado es una persona.

Clase persona y clase domicilio.


Composicin: una persona tiene un domicilio.

Introduccin
Ejemplos de composicin y herencia:
Clase empresa, clase empleado y clase jefe de grupo de
empleados.
Herencia entre empleado y jefe: Un jefe es un empleado.
Composicin entre empresa y empleado o jefe.
Estos son los mecanismos esenciales para evitar la repeticin de cdigo y
permitir la reusabilidad, y por tanto la reutilizacin de software, que es una de
las caractersticas ms importantes de la programacin orientada por Objeto.

En C++, el efecto de la reutilizacin de cdigo son similares tanto en la


composicin como en la herencia (lo cual tiene sentido, pues ambas son dos
formas de crear nuevos tipos utilizando tipos ya existentes). Sin embargo su
uso, funcionamiento, declaracin e implementacin son diferentes.

Herencia
Es el proceso mediante el cual un objeto de una clase adquiere propiedades
definidas en otra clase que lo preceda en una jerarqua de clasificaciones.
Permite la definicin de un nuevo objeto a partir de otros, agregando las
diferencias entre ellos.

La herencia es la columna vertebral de la POO. Permite a los programadores


crear una jerarqua entre un grupo de clases que tienen caractersticas similares.

Figura 1.

Relacin de Herencia y diagrama de


clases
Es el proceso mediante el cual un objeto de una clase adquiere propiedades
definidas en otra clase que lo preceda en una jerarqua de clasificaciones.
Permite la definicin de un nuevo objeto a partir de otros, agregando las
diferencias entre ellos.

La herencia (generalizacin/especializacin) representa la relacin es un o es


una entre clases, por ejemplo:
Un profesor es un empleado, Un obrero es un empleado.
Un carro es un vehculo, Una bicicleta es un vehculo.
Un mamfero es un animal, Un ave es un animal.
La herencia es un tipo de jerarqua de clases en la que cada subclase (clase hija,
clase derivada) pueden acceder tanto a los atributos como a los mtodos
pblicos y protegidos de la superclase (clase padre, clase base). Cada subclase o
clase hija en la jerarqua es siempre una extensin de la(s) superclase(s) que
adems incorpora atributos y mtodos propios.

Relacin de Herencia y diagrama de


clases
En el diagrama de clases: La herencia se representa mediante una relacin de
generalizacin/especificacin, que se denota con un tringulo de la siguiente
forma:

Figura 2

Relacin de Herencia y diagrama de


clases
Ejemplo: El siguiente diagrama de clases muestra la relacin de Herencia entre
la superclase Animal y sus subclases

Figura 3
Las clases heredan los datos y mtodos de la superclase. Un mtodo heredado
puede ser sustituido por uno propio si ambos tienen el mismo nombre.

Tipos de Herencia
La relacin de herencia entre clases puede ser: pblica (public), privada
(private) protegida (protected), es decir, la herencia se clasifica segn el modo
de acceso a los miembros de la clase base, por lo cual tenemos:
Pblica (public): los modos de acceso a los miembros de la clase base se
quedan igual en la clase derivada.
Protegida (protected): los miembros public de la clase base pasan a ser
protected. El resto se queda igual.
Privada (private): todos los miembros de la clase base pasan a ser private en
la derivada.
La relacin que se utiliza con mayor frecuencia es la pblica.

Tipos de Herencia
La herencia tambin puede ser del tipo donde dependa el nmero de clases y de
cmo se relacionen, es decir, la herencia puede ser: puede ser simple (cada clase
tiene slo una superclase) o mltiple (cada clase puede tener asociada varias
superclases).

Por ejemplo:
La clase Docente y la clase Estudiante heredan las propiedades de la clase
Persona (superclase, herencia simple). La clase Preparador (subclase) hereda
propiedades de la clase Docente y de la clase Estudiante (herencia mltiple).

Herencia Simple

Herencia Mltiple
Figura 4

Tipos de Herencia
Herencia Simple:
Cuando slo se tiene una superclase de la cual hereda a una subclase, se dice
que hay herencia simple. Sin embargo, la herencia simple no excluye la
posibilidad de que de una misma clase base se pueda derivar ms de una
subclase o clase derivada.

Figura 5

Tipos de Herencia
Herencia Simple:
Cuando se necesita representar un concepto general y a partir de ste, conceptos
ms especficos, resulta conveniente organizar la informacin usando herencia.
Esto permite compartir atributos y mtodos ya definidos, evita la duplicidad y,
por otra parte, proporciona mayor claridad en la representacin que se haga de
la informacin. Es decir, se logra un mejor diseo de la solucin del problema.
Existen numerosos casos en los cuales se da este tipo de relacin.
La herencia pblica permite que los miembros privados de la clase base se
puedan acceder slo por medio de los mtodos de dicha clase. Los miembros
protegidos de la clase base podrn ser usados por los mtodos de las clases
derivadas, pero no por sus clientes. Los miembros pblicos estarn disponibles
para los mtodos de las clases derivadas y para todos sus clientes.

Tipos de Herencia
Herencia Mltiple:
En el tipo de herencia mltiple se usan dos o ms clases base para derivar una
clase. Es decir, la clase derivada comparte los atributos y los mtodos de ms de
una clase.

Figura 6

Tipos de Herencia
Herencia de Niveles Mltiples(Adicional):
Se presenta cuando una subclase se usa como base para definir otra clase
superclase. Es decir, existen diferentes niveles de herencia: en el primero, la
subclase hereda los miembros de una clase superclase, mientras que en el
segundo, la subclase funciona a su vez como una superclase y de esta forma
comparte con una tercera clase sus propios miembros y los que hered.
Esta relacin puede extenderse a tantos niveles como lo requiera el problema
que se est resolviendo.
Este tipo de herencia es muy til cuando es necesario representar, a partir de
conceptos generales, conceptos ms especficos. Cuantos ms niveles se
deriven, mas especificidad se definir.

Tipos de Herencia
Herencia de Niveles Mltiples(Adicional):
El nivel superior representa la clase ms general, la clase rbol. Luego, la clase
Frutal es una clase derivada de la primera, lo cual indica que los frutales son
una clase ms especfica de rboles. Por ltimo, se define la clase Ctrico como
una subclase de la clase Frutal. Esta relacin tambin indica que los ctricos
son una variante, una clase ms especfica, de los rboles frutales.

Figura 7.

Constructores y destructores en la
herencia
Construccin objeto clase derivada:
Primero se construye la parte heredada de la clase(s) base: Se ejecutan
constructores de las clases base.

Por ltimo se ejecuta el cdigo del constructor de la clase derivada.


Destruccin objeto clase derivada:
El proceso es a la inversa que en la construccin.

Se ejecuta primero el destructor de la clase derivada y a continuacin los de


las clases base.

You might also like