Anda di halaman 1dari 18

P.O.O.

HERENCIA SIMPLE
Una clase derivada es un tipo de dato definido por el usuario que
tiene la propiedad de heredar datos y funciones miembro de uno o
mas clases, definidas previamente.

La clase inicial usada como clase base para la clase derivada se


conoce como clase base, padre o superclase.
La clase derivada se conoce como derivada, hija o subclase.
Una clase derivada puede a su vez ser una clase base, dando lugar
a la jerarqua de clases.
Una clase derivada hereda todos los miembros de la clase base y
puede acceder a los datos miembros pblicos y protegidos de la
clase base como si fueran miembros de ella misma.
Una clase derivada no tiene acceso a los miembros privados de la
clase base.

ALGORITMOS Y ESTRUCTURA DE DATOS

P.O.O. HERENCIA SIMPLE

Sistema Real

Class cliente
{
private:
char Ruc[11];
char RazonSocial[60];
public:
Cliente(char r[], char *rs[]);
.
.
};

Cliente
Ruc
RazonSocial
BuscarCliente()
ActualizarDatos()

Producto
Codigo
Descripcion
Stock
ComprobarStock()
AcualizarStock()

Tienda
Clientes
Productos
CrearCliente()
CrearProducto()
VenderProducto()

ALGORITMOS Y ESTRUCTURA DE DATOS

P.O.O. HERENCIA SIMPLE


Las clases no son suficientes para conseguir los objetivos de reutilizacin.

Conocimiento
Descripcin Fsica
Opinin
Comparacin con
otras entidades
Experiencias
Personales
Concepto
Libro

Libro
Titulo
Autor
NroPaginas
Abrir()
Cerrar()
IrAPagina(n)
LeerPagina(n)

ALGORITMOS Y ESTRUCTURA DE DATOS

P.O.O. HERENCIA SIMPLE


La herencia es el segundo concepto central en la
programacin orientada a objetos.
Publicacin

Libro

Medicina

Revista

Deporte

Espectculo

La herencia hace posible la reusabilidad


ALGORITMOS Y ESTRUCTURA DE DATOS

P.O.O. HERENCIA SIMPLE


Los programadores siempre han
procurado evitar la escritura del mismo
cdigo dos veces, o reinventar la
rueda.
La herencia es la ultima solucin para
este tipo de problema y el mas
poderoso.
Un nuevo acercamiento poderoso para
la reusabilidad aparece en OOP., la
biblioteca de clases.

ALGORITMOS Y ESTRUCTURA DE DATOS

P.O.O. HERENCIA SIMPLE


La herencia es una
cualidad esencial
de los sistemas
orientado a objetos.

Figura

Figura 3D

Figura 2D

Circulo

Cuadrado Triangulo

La herencia es
bsicamente un
mecanismo que
utiliza la o.o.p. Para
implementar
polimorfismo

Esfera

Cubo

Tetraedro

ALGORITMOS Y ESTRUCTURA DE DATOS

P.O.O. HERENCIA SIMPLE


Supongamos que se tiene la
clase
Persona
con
los
siguientes atributos:
Nombre
Direccion
Edad
Estado civil
En base a la clase Persona
definimos la clase Alumno,
definimos las caractersticas de
Alumno.
Codigo
Facultad
Ao Ingreso
El resto las hereda.

Nombre
Direccion
Edad
Estado civil

Codigo
Facultad
Ao Ingreso
El resto las hereda

ALGORITMOS Y ESTRUCTURA DE DATOS

P.O.O. HERENCIA SIMPLE


Herencia
Es aquella propiedad de la
programacin orientada a objetos
que le permite a una clase,
llamada clase derivada, compartir
la estructura y el comportamiento
de otra clase llamada clase base.

Clase Base

Clase Derivada

ALGORITMOS Y ESTRUCTURA DE DATOS

P.O.O. HERENCIA SIMPLE


Superclase. - Es la clase de la cual
heredan otras clases. Representan
una generalizacin de las subclases.
Se denomina tambin clases bases o
clases padres.
Subclase.- Es la clase que hereda de
una o mas clases. Representan una
especializacin de la clase base. Se
denomina tambin clase derivada o
clases hijas.
B es una clase derivada de A

Clase A

Clase B

ALGORITMOS Y ESTRUCTURA DE DATOS

P.O.O. HERENCIA SIMPLE


DECLARACION DE UNA CLASE DERIVADA
class <Nombre clase derivada>: <Acceso>
base1>[,<Acceso><Nombre clase base2>,..]

<Nombre

clase

{ private/protected:
<Tipo dato > <Datos Miembros>;
public:
<Funciones Miembros>;
};
Donde el acceso puede ser:

ALGORITMOS Y ESTRUCTURA DE DATOS

10

P.O.O. HERENCIA SIMPLE


private: Los miembros public y protected de la clase
base son privados en la clase derivada.
protected: Los miembros public y protected de la clase
base son protected en la clase derivada.
public: Los miembros public de la clase base son
public en la clase derivada y los miembros protected de
la clase base son protected en la clase derivada.

ALGORITMOS Y ESTRUCTURA DE DATOS

11

P.O.O. HERENCIA SIMPLE


//Dada una clase llamada Coche y la subclase Recorrido, se pide
implementar el programa usando Herencia
#include <iostream>
#include <string.h>
using namespace std;
void Inicia(int &,int &,char *,char *,int&);
//Declaracion de la clase
class Coche
{ private:
char placa[15],marca[25];
int afab;
public:
Coche();

ALGORITMOS Y ESTRUCTURA DE DATOS

12

P.O.O. HERENCIA SIMPLE


Coche(char *,char *,int);
void Read();
void Mostrar();
};
class Recorrido : public Coche
{ private:
int millas,glncons;
public:
Recorrido();
Recorrido(int, int, char *, char *, int);
void Read();
void Mostrar();
};//Fin de la subclase Recorrido

ALGORITMOS Y ESTRUCTURA DE DATOS

13

P.O.O. HERENCIA SIMPLE


//Programa princiapal
int main()
{ int ayo,millas,galon;
char placa[15],marca[25];
Inicia(millas,galon,placa,marca,ayo);
Recorrido P;
P.Mostrar();
P=Recorrido(millas,galon,placa,marca,ayo);
P.Mostrar();
P.Read(); P.Mostrar();
}

ALGORITMOS Y ESTRUCTURA DE DATOS

14

P.O.O. HERENCIA SIMPLE


void Inicia(int &mi,int &ga,char *pl,char *ma,int &af)
{ cout<<"Marca del Coche...";gets(ma);
cout<<"Numero Placa......";gets(pl);
cout<<"Ao Fabricacion.. ";cin>>af;
cout<<"Millas recorridas.. ";cin>>mi;
cout<<"Galones Consumidos...";cin>>ga;
}
Coche::Coche()
{ afab=0;placa[0]='\0';
marca[0]='\0';
}

ALGORITMOS Y ESTRUCTURA DE DATOS

15

P.O.O. HERENCIA SIMPLE


Coche::Coche(char *pl, char *ma, int af)
{ strcpy(placa,pl); strcpy(marca,ma); afab=af;
}
void Coche::Read()
{ cout<<"LECTURA DE DATOS"<<endl;
cout<<"Numero Placa......";gets(placa);
cout<<"Marca del Coche...";gets(marca);
cout<<"Ao Fabricacion.. ";cin>>afab;
}
void Coche::Mostrar()
{ cout<<"Marca del Coche..."<<marca<<endl;
cout<<"Numero Placa......"<<placa<<endl;
cout<<"Ao Fabricacion.. "<<afab<<endl;
}
ALGORITMOS Y ESTRUCTURA DE DATOS

16

P.O.O. HERENCIA SIMPLE


Recorrido::Recorrido()
{ millas=0; glncons=0;
}
Recorrido::Recorrido(int mi,int ga,char *pl,char *ma,int af):Coche(pl, ma, af)

{ millas=mi; glncons=ga;
}
void Recorrido::Read()
{ Coche::Read();
cout<<"Millas recorridas.. ";cin>>millas;
cout<<"Galones Consumidos...";cin>>glncons;
}
ALGORITMOS Y ESTRUCTURA DE DATOS

17

P.O.O. HERENCIA SIMPLE


void Recorrido::Mostrar()
{ Coche::Mostrar();
cout<<"Millas recorridas.. "<<millas<<endl;
cout<<"Galones Consumidos..."<<glncons<<endl;
}

ALGORITMOS Y ESTRUCTURA DE DATOS

18