CLASES DERIVADAS: HERENCIA. La herencia o relacion es-un es la relacion que existe entre dos...

16
CLASES DERIVADAS: HERENCIA

Transcript of CLASES DERIVADAS: HERENCIA. La herencia o relacion es-un es la relacion que existe entre dos...

Page 1: CLASES DERIVADAS:  HERENCIA.  La herencia o relacion es-un es la relacion que existe entre dos clases, en la que una clase denominada se crea a partir.

CLASES DERIVADAS:

HERENCIA

Page 2: CLASES DERIVADAS:  HERENCIA.  La herencia o relacion es-un es la relacion que existe entre dos clases, en la que una clase denominada se crea a partir.

La herencia o relacion es-un es la relacion que existe entre dos clases, en la que una clase denominada se crea a partir de otras ya existente, denominada clase base.

La declaracion de la derivacion de clases debe incluir el nombre de la clase base de la que se deriva y especificador de acceso que indica el tipo de herencia(Publica, Privada y Protegida).

Page 3: CLASES DERIVADAS:  HERENCIA.  La herencia o relacion es-un es la relacion que existe entre dos clases, en la que una clase denominada se crea a partir.

class nombre_clase : tipo_herencia nombre_clase_base

class Triangulo : public Figura {

public: //seccion publica

……..private:

//seccion privada……

};

Page 4: CLASES DERIVADAS:  HERENCIA.  La herencia o relacion es-un es la relacion que existe entre dos clases, en la que una clase denominada se crea a partir.

Considerese una clase Prestamo y tres clases derivadas de ella: Pago_fijo, Pago_variable e Hipoteca.

class Prestamo { protected:

› float capital;› float tasa_interes;

public:Prestamo( float, float);virtual int CrearTablaPagos(float[MAX_TERM][NUM_COLUMNAS])=C;

};

Class Hipoteca : public Prestamo {private:int num_recibos;int recibos_por_anyo;float pago;

public:Hipoteca(int, int, float, float, float);int CrearTablaPagos(float [MAX_TERN][NUM_COLUMNAS]);

};

Page 5: CLASES DERIVADAS:  HERENCIA.  La herencia o relacion es-un es la relacion que existe entre dos clases, en la que una clase denominada se crea a partir.

Herencia publica: es aquella en que el especificador de acceso es public(publico).

Herencia privada: es aquella en que el especificador de acceso es private(privado).

Herencia protegida: es aquella en que el especificador de acceso es protected(protegido).

Page 6: CLASES DERIVADAS:  HERENCIA.  La herencia o relacion es-un es la relacion que existe entre dos clases, en la que una clase denominada se crea a partir.

#include “fstring.h”class Publicacion {

public:void NombrarEditor(const char *s);void PonerFecha(unsigned long fe);

private: string editor;unsigned long fecha;

};class Revista : public Publicacion {public:

void NumerosPorAnyo(unsigned n);void FijarCirculacion(unsigned long n);

private: unsigned numerosPorAnyo;unsigned long circulacion;

};

class Libro : public Publicacion {public:

void PonerISBN(const char *s);void PonerAutor(const char *s);

private:Dstring ISBN;Dstring autor;

};

Page 7: CLASES DERIVADAS:  HERENCIA.  La herencia o relacion es-un es la relacion que existe entre dos clases, en la que una clase denominada se crea a partir.

Tipo de herencia

Tipo de elemento

¿Accesible a clase derivada?

Public publicprotectedprivate

SiSiNo

Private publicprotectedprivate

SiSiNo

Page 8: CLASES DERIVADAS:  HERENCIA.  La herencia o relacion es-un es la relacion que existe entre dos clases, en la que una clase denominada se crea a partir.

Significa que una clase derivada tiene acceso a los elementos públicos y protegidos de su clase base.

Page 9: CLASES DERIVADAS:  HERENCIA.  La herencia o relacion es-un es la relacion que existe entre dos clases, en la que una clase denominada se crea a partir.

Significa que un usuario de la clase derivada no tiene acceso a ninguno de sus elementos de la clase base. El formato es:

class ClaseDerivada : private ClaseBase {public: //Sección publica

Protected://Sección privada

Private://sección privada

};

Page 10: CLASES DERIVADAS:  HERENCIA.  La herencia o relacion es-un es la relacion que existe entre dos clases, en la que una clase denominada se crea a partir.

Los miembros públicos y protegidos de la clase base se convierten en miembros protegidos de la clase derivada y los miembros privados de la clase se vuelven inaccesibles.

Page 11: CLASES DERIVADAS:  HERENCIA.  La herencia o relacion es-un es la relacion que existe entre dos clases, en la que una clase denominada se crea a partir.

Tipos de herencia

Acceso a miembro base

Acceso a miembro a clase derivada

public publicprotectedprivate

publicprotectedinaccesible

private publicprotectedprivate

protectedprotectedinaccesible

private publicprotectedprivate

privateprivateinaccesible

Page 12: CLASES DERIVADAS:  HERENCIA.  La herencia o relacion es-un es la relacion que existe entre dos clases, en la que una clase denominada se crea a partir.

class Base{public:

int i1;Protected:

int i2;Private:

int i3;};class D1 : private Base{

void f();};class D2 : protected Base{

void g();};Class D3 : public Base{

void h();};

Void D1::f(){i1=0;//Correctoi2=0;//Correctoi3=0;//Error

};Base b;b.i1=0;//correctob.i2=0;//Errorb.i3=0;//ErrorD1 d1;d1.i1=0;//Errord1.i2=0;//Errord1.i3=0;//ErrorD2 d2;d2.i1=0;//Errord2.i2=0;//Errord2.i3=0;//ErrorD3 d3;d3.i1=0;//Correctod3.i2=0;//Errord3.i3=0;//Error

Page 13: CLASES DERIVADAS:  HERENCIA.  La herencia o relacion es-un es la relacion que existe entre dos clases, en la que una clase denominada se crea a partir.

class D4 : protected base{public:

base::i1;};

D4 d4;d4.i1=0;//correcto

Page 14: CLASES DERIVADAS:  HERENCIA.  La herencia o relacion es-un es la relacion que existe entre dos clases, en la que una clase denominada se crea a partir.

class B1{public:

B1(){cout <<“C-B1”<<endl;}};class B2{public:

B2(){cout <<“C-B1<<endl;}};class D : public B1, B2{public:

D(){cout <<“C-D”<<endl;}};D d1;

SintaxisClaseD::ClaseD(Parametros) : ClaseB(Parametros), ListaMbrD{//Cuerpo del constructo};

Page 15: CLASES DERIVADAS:  HERENCIA.  La herencia o relacion es-un es la relacion que existe entre dos clases, en la que una clase denominada se crea a partir.

Class Punto{public:

Punto(int xv, int yv);//…};class Punto3D : public Punto{public:

Punto3D(int xv, int yv, int zv);void fijarz();

private:int z;

};Punto3D::Punto3D(int xv, int yv, int zv) : Punto(xv, yv){

fijarz(zv);};

Page 16: CLASES DERIVADAS:  HERENCIA.  La herencia o relacion es-un es la relacion que existe entre dos clases, en la que una clase denominada se crea a partir.

class C1{public:

C1(int n);~C1();

private:int *pi, l;

};C1::C1(int n) : l(n){

cout <<l<<“ enteros se asignan”<<endl;}C1::~C1(){

cout<<l<<“ enteros son liberados”<<endl;delete []pi;

}Class C2 : public C1{public:

C2(int n);~C2();

private:char *pc;int l;

};C2::C2(int n) :C1(n), l(n){

cout <<l<<“caracteres designados”<<endl;pc=new char[1];

}C2::~C2(){

cout <<l<<“caracteres son liberados”<<endl;delete []pc;

}

void main(){C2 a(50), b(100);}