0% encontró este documento útil (0 votos)
17 vistas20 páginas

Herencia

Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Está en la página 1/ 20

HERENCIA

HERENCIA

¿Qué es herencia?
- Mecanismo que permite la definición de una clase a partir de la
definición de otra ya existente.
- Permite compartir automáticamente métodos y datos entre clases,
subclases y objetos.
- Ligada a la reutilización del código en la Programación Orientada a
Objetos
Existen dos tipos:

HERENCIA SIMPLE
HERENCIA MÚLTIPLE
HERENCIA SIMPLE

En C++, nos referimos a HERENCIA como un


mecanismo de abstracción creado con el fin de
facilitar y mejorar el diseño de las clases de un
programa, usada para crear nuevas clases a partir
de clases previamente creadas, siempre y cuando
éstas tengan un tipo de relación especial.
Para no romper el principio de
encapsulamiento,se proporciona un
nuevo modo de visibilidad de
funciones con ‘protected’, por
tanto cualquier método que tenga
visibilidad protected se
comportará como pública en la
clase y en las que componen.
En herencia simple, las
clases derivadas, heredan
los datos y funciones de
la clase base, permitiendo
de esta manera que las
clases derivadas redefinan
sus comportamientos
(polimorfismo) y añadan
comportamientos nuevos,
propios de las clases
derivadas.
Para poder comprender con más
claridad lo que es la herencia
simple, a continuación veremos
algunos ejemplos:
- Si la clase ‘Perro’ es una
subclase de la clase
‘Mamífero’ y a la vez, ésta es
una subclase de la clase
‘Animal’, entonces ‘Perro’
heredará atributos tanto de
‘Mamífero’ como de ‘Animal’.
EXCEPCIONES
Una clase derivada hereda TODOS los miembros de la
clase base, con algunas excepciones que siguen de
elementos que NO pueden heredarse:

- Constructores
- Destructores
- Miembros Estáticos
- Operadores de Asignación
- Funciones ‘Friend’
RAZÓN DE LA HERENCIA

Derivar una nueva clase de otra existente, sólo tiene


sentido si se modifica en algo su comportamiento y/o
su interfaz y esto se consigue de tres formas no
excluyentes:
- AÑADIENDO
- SOBRESCRIBIENDO
- REDEFINIENDO
SINTAXIS
Para declarar una clase derivada de una clase
previamente definida, usamos la siguiente sintaxis
La declaración del constructor de la clase ‘Derivada’
debe incluir un llamado al constructor de la clase
‘Base’, por lo que usaremos entonces, la siguiente
sintaxis
SOBRECARGA DE CONSTRUCTORES
DE CLASES DERIVADAS
Los constructores de las clases derivadas
también pueden sobrecargarse, podemos crear
distintos constructores para diferentes
inicializaciones posibles, y también usar
parámetros con valores por defecto.
DESTRUCTORES DE CLASES
DERIVADAS
Cuando se destruye un objeto de una clase derivada,
primero se invoca al destructor de la clase derivada,
si existen objetos miembro a continuación se invoca a
sus destructores y finalmente al destructor de la
clase o clases base. Si la clase base es a su vez una
clase derivada, el proceso se repite recursivamente.
EJEMPLO
// Clase base Persona // Clase derivada Empleado:
class Empleado : public Persona
class Persona
{
{ public:
public: Empleado(string, int, float);
Persona(string, int ); void Imprime_empleado();
void Imprime_persona();
protected:
protected: float salarioAnual;
string nombre; };
int edad;
};
EJERCICIO
#include<iostream> Persona::Persona(string Nom, int Ed){
Nombre= Nom;
#include<string.h>
edad=Ed;
#include<stdlib.h> }
using namespace std;
class Persona{ void Persona::Imprime_persona(){
protected: cout<<"Nombre: "<<nombre<<endl;
cout<<"Edad: "<<edad<<endl;
string nombre;
cout<<endl;
int edad; }
public:
Persona(string , int );//Constructor con parametros
void Imprime_persona();//Metodo Imprimir
};
//Definición de clase Empleado como clase //Declaración del método constructor. Invoca al
Derivada constructor de la clase base
class Empleado: public Persona
Empleado::Empleado(string Nom, int Ed, float
{
sal):Persona(Nom, Ed){
protected: salario=sal;
float salario; }
public:
Empleado(string, int , float ); Empleado::~Empleado(){
cout<<"Activando destructor clase
void Imprime_empleado();
derivada"<<endl;
~Empleado(); }
};
void Empleado::Imprime_empleado(){
Imprime_persona();
cout<<"Salario= "<<salario<<endl;
}
int main(){
Persona *Persona1= new Persona(“Marco", 21);//Objeto clase base
Empleado *Empleado1=new Empleado(“Omar", 20, 25000);//Objeto clase derivada

Persona1 -> Imprime_persona();


Empleado1 -> Imprime_empleado();

delete Persona1;
delete Empleado1;
system("pause>null");
}
EJERCICIO HERENCIA

• Realice un programa de herencia simple que contenga la clase base persona la cual se
compone de: nombre, edad, genero, rfc y como clase derivadas tendremos la clase
estudiante y empleado., cada uno con sus propios atributos. Al alumno hay que calcular
promedio de n calficaciones y al profesor hay que calcular su salario..

También podría gustarte