1 / 16

CLASES DERIVADAS: HERENCIA

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 de otras ya existente, denominada clase base.

damon
Download Presentation

CLASES DERIVADAS: HERENCIA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. Significa que una clase derivada tiene acceso a los elementos públicos y protegidos de su clase base.

  8. 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 };

  9. 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.

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

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

  12. 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 };

  13. 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); };

  14. 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); }

More Related