You are on page 1of 10

UNIVERSIDAD DE EL SALVADOR

FACULTAD DE INGENIERÍA Y ARQUITECTURA


ESCUELA DE INGENIERÍA ELÉCTRICA
PROGRAMACION I

Asignación 5:
Herencia
Docente:
Ing. Walter Zelaya
Instructor:
Daniel Jiménez
Alumnos:
Pinto Zetino, Wendy Abigail PZ16002
Morataya Romero, Luis Fernando MR16079
Rivas Portillo, Rafael Armando RP16051
Rodas Cruz, José Ronaldo RC16031
GL: 01

Ciudad Universitaria, 20 de Noviembre del 2017


INTRODUCCION
Esta guía de laboratorio contiene el nuevo tema HERENCIA.

La 'herencia' es una de las piedras angulares de la POO ya que ésta permite la creación de
clasificaciones jerárquicas. Con la herencia, es posible crear una clase general que defina tratos
comunes a una serie de elementos relacionados. Esta clase podría luego ser heredada por otras
clases más específicas, cada una agregando solo aquellas cosas que son únicas para la clase
'heredera'.

OBJETIVOS

OBJETIVO GENERAL

- Crear clases a través de la herencia de clases existentes.

- Describir la manera en que la herencia promueve la reutilización de software.

- Diferenciar entre herencia simple y múltiple.

- Usar constructores y destructores en las jerarquías de herencias de clases.

OBJETIVO ESPECÍFICO

- Que los estudiantes puedan dominar el uso de herencia en C++, así como implementar
programas en C++ que utilicen la característica de la herencia.
Marco teórico.

La herencia es la capacidad de compartir atributos y métodos entre clases. Es la propiedad que


permite definir nuevas clases usando como base clases ya existentes. La nueva clase (clase
derivada) hereda los atributos comportamiento que son específicos de ella. La herencia es una
herramienta poderosa que proporciona un marco adecuado para producir software fiable,
comprensible, de bajo costo, adaptable y reutilizable. La herencia o relación es-un es la relación
que existe entre dos clases, en la que una clase denominada derivada o subclase se crea a partir de
otra ya existente, denominada clase base o superclase.

Evidentemente, la clase base y la clase derivada tienen código y datos comunes, de modo que si se
crea la clase derivada de modo independiente,se duplicaría mucho de lo que ya se ha escrito para
la clase base. C++ soporta el mecanismo de derivación que permite crear clases derivadas, de
modo que la nueva clase hereda todos los datos miembro que pertenecen a la clase ya existente.

La declaración de derivación de clases debe incluir el nombre de la clase base de la que se deriva y
el especificador de acceso que indica el tipo de herencia (pública, privada y protegida). La primera
línea de cada declaración debe incluir la sintaxis siguiente:

Tipos de Herencia.

La relación de herencia entre clases puede ser: pública (public), privada (private) ó protegida
(protected). La relación que se utiliza con mayor frecuencia es la pública.
Dependiendo del número de clases y de cómo se relacionen, la herencia puede ser:

a) Simple.

b) Múltiple.

c) De niveles múltiples.

Con independencia del tipo de herencia, una clase derivada no puede acceder a variables y
funciones privadas de su clase base. Para ocultar os detalles de la clase base y de clases y
funciones externas a la jerarquía de clases, una clase base utiliza normalmente elementos
protegidos en lugar de elementos privados. Suponiendo herencia pública, los elementos protegidos
son accesibles a las funciones miembro de todas las clases derivadas.

Herencia Simple.

Cuando sólo se tiene una clase base de la cual hereda la clase derivada, se dice que hay herencia
simple (Figura 1.a). Sin embargo, la herencia simple no excluye la posibilidad de que de una
misma clase base se pueda derivar más de una subclase o clase derivada (Figura 1.b).
Cuando se necesita representar un concepto general y a partir de éste, conceptos más específicos,
resulta conveniente organizar la información usando herencia. Esto permite compartir atributos y
métodos ya definidos, evita la duplicidad y, por otra parte, proporciona mayor claridad en la
representación quese haga de la información. Es decir, se logra un mejor diseño de la solución del
problema. Existen numerosos casos en los cuales se da este tipo de relación.
En la Figura 2 se presentan algunos ejemplos de herencia simple.

En la figura 2a, la clase


Persona es la
clase base y Empleado es la clase derivada. Un objeto de esta clase también es un objeto de la
clase “Persona”, por lo tanto tendrá los atributos y métodos de ambas clases.
En la figura 2b, la clase Mamífero es la clase base y Vacuno y Equino son las clases derivadas. En
este caso, se dice que todo “Vacuno” y todo “Equino” también son objetos de la clase “Mamífero”
y en consecuencia tendrán todos los atributos y métodos que heredan de la clase base.

La herencia pública permite que los miembros privada de la clase base se puedan acceder sólo por
medio de los métodos de dicha clase. Los miembros protegidos de la clase base podrán ser usados
por los métodos de las clases derivadas, pero no por sus clientes.

Los miembros públicos estarán disponibles para los


métodos de las clases derivadas y para todos sus clientes.

class Base
{ private:

// Miembros declarados en la sección privada:accesibles sólo para miembros de esta clase

protected:
/* Miembros declarados en la sección protegida: accesibles sólo para miembros de esta clase y de
sus derivadas */

public:
// Miembros declarados en la sección pública:accesibles para todos
};

Para declarar una clase derivada de una clase previamente definida se utiliza la siguiente sintaxis:

Con la
palabra
reservada
public en
el encabezado de la declaración de la clase “Derivada” se hace referencia a que dicha clase hereda
los atributos y métodos de la clase “Base”.

La declaración del constructor de la clase “Derivada” debe incluir un llamado al constructor de la


clase “Base”.
Para ello se utiliza la siguiente sintaxis:

Cua
ndo
se
decl
ara
un objeto del tipo de la clase derivada se invoca al constructor de ésta. De este constructor lo
primero que se ejecuta es la llamada al constructor de la clase base, y posteriormente se ejecutan
sus propias instrucciones.

En cuanto a los parámetros, al invocar al constructor de la clase base se le deben proporcionar los
parámetros que necesita para asignar valores a los atributos propios de la clase base y que la clase
derivada hereda. En el cuerpo de la clase derivada se harán las asignaciones correspondientes a los
atributos propios de esta clase.

Herencia Múltiple.

En el tipo de herencia múltiple se usan dos o más clases base para derivar una clase. Es decir, la
clase derivada comparte los atributos y los métodos de más de una clase (Figura 3).

Para
defin
ir una
relaci
ón de
heren
cia
múlti
ple se
utiliza la siguiente sintaxis:
Cuando la palabra reservada public, precede el nombre de cada una de las clases se hace referencia
a que la clase “Derivada” hereda atributos y métodos de todas ellas.
Para definir el constructor de la clase “Derivada”, se procede de la siguiente manera:

Al
llamar al
construc
tor de la
clase
Derivada, primero se ejecuta el constructor de la clase Base1, después el constructor de la clase
Base2, y así sucesivamente hasta el constructor de la clase Basen. Por último, se ejecutan las
instrucciones que aparezcan en el cuerpo del constructor de la clase Derivada.

Herencia de Niveles Múltiples.

Se presenta cuando una clase derivada se usa como base para definir otra clase derivada. Es decir,
existen diferentes niveles de herencia: en el primero, la clase derivada hereda los miembros de una
clase base, mientras que en el segundo, la clase derivada funciona a su vez como una clase base y
de esta forma comparte con una tercera clase sus propios miembros y los que heredó (Figura 4).
Esta relación 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 más específicos. Cuantos más niveles se deriven, mas especificidad se definirá.

La figura 5 presenta un ejemplo de herencia de múltiples niveles. El nivel superior representa la


clase más general, la clase “Árbol”. Luego, la clase “Frutal” es una clase derivada de la primera, lo
cual indica que los frutales son una clase más específica de árboles. Por último, se define la clase
Cítrico como una subclase de la clase “Frutal”. Esta relación también indica que los cítricos son
una variante, una clase más específica, de los árboles frutales.
ASIGNACION
Terminar la Clase Base Persona según se muestra en el diagrama de jerarquías anteriormente most
rado.
CONCLUSIONES

 Ayuda a los programadores a ahorrar código y tiempo, ya que la clase padre ha sido
implementada y verificada con anterioridad, restando solo referenciar desde la clase derivada a
la clase base.

 Los objetos pueden ser construidos a partir de otros similares. Para ello es necesario que exista
una clase base (que incluso puede formar parte de una jerarquía de clases más amplia).

 La clase derivada hereda el comportamiento y los atributos de la clase base, y es común que se
le añada su propio comportamiento o que modifique lo heredado.

 Toda clase pueden servir como clase base para crear otras.

BIBLIOGRAFIA

https://es.wikipedia.org/wiki/Herencia_(inform%C3%A1tica)#Ventajas

http://informatica.utem.cl/~mcast/ESDATOS/POO/herencia.pdf

You might also like