La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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.

Presentaciones similares


Presentación del tema: "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."— Transcripción de la presentación:

1 CLASES DERIVADAS:  HERENCIA

2  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).

3 class nombre_clase : tipo_herencia nombre_clase_base class Triangulo : public Figura { public: //seccion publica …….. private: //seccion privada …… };

4  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]); };

5  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).

6 #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; };

7 Tipo de herenciaTipo de elemento¿Accesible a clase derivada? Publicpublic protected private Si No Privatepublic protected private Si No

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

9  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 };

10  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.

11 Tipos de herencia Acceso a miembro base Acceso a miembro a clase derivada public protected private public protected inaccesible privatepublic protected private protected inaccesible privatepublic protected private inaccesible

12 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;//Correcto i2=0;//Correcto i3=0;//Error }; Base b; b.i1=0;//correcto b.i2=0;//Error b.i3=0;//Error D1 d1; d1.i1=0;//Error d1.i2=0;//Error d1.i3=0;//Error D2 d2; d2.i1=0;//Error d2.i2=0;//Error d2.i3=0;//Error D3 d3; d3.i1=0;//Correcto d3.i2=0;//Error d3.i3=0;//Error

13 class D4 : protected base{ public: base::i1; }; D4 d4; d4.i1=0;//correcto

14 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; Sintaxis ClaseD::ClaseD(Parametros) : ClaseB(Parametros), ListaMbrD{ //Cuerpo del constructo };

15 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); };

16 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); }


Descargar ppt "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."

Presentaciones similares


Anuncios Google