Title: CLASES DERIVADAS:
1- CLASES DERIVADAS
- HERENCIA
2CLASES DERIVADAS
- 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 EJEMPLO
- class nombre_clase tipo_herencia
nombre_clase_base - class Triangulo public Figura
-
- public
- //seccion publica
- ..
- private
- //seccion privada
-
-
4 EJEMPLO 2
- Considerese una clase Prestamo y tres clases
derivadas de ella Pago_fijo, Pago_variable e
Hipoteca. - class Prestamo
-
- protected
- float capital
- float tasa_interes
- publicPrestamo( float, float)
- virtual int CrearTablaPagos(floatMAX_TERMNUM_C
OLUMNAS)C -
- Class Hipoteca public Prestamo
- private
- int num_recibos
- int recibos_por_anyo
- float pago
5Especificadores de Acceso
- 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 EJEMPLO 3
- 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
-
7Tipos de Herencias
Tipo de herencia Tipo de elemento Accesible a clase derivada?
Public public protected private Si Si No
Private public protected private Si Si No
8Herencia Publica
- Significa que una clase derivada tiene acceso a
los elementos públicos y protegidos de su clase
base. -
9Herencia Privada
- 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
-
10Herencia Protegida
- 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.
11Tipos de Herencias y accesos que permiten
Tipos de herencia Acceso a miembro base Acceso a miembro a clase derivada
public public protected private public protected inaccesible
private public protected private protected protected inaccesible
private public protected private private private inaccesible
12Ejemplo
- 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 D1f() i10//Correcto i20//Correcto i
30//Error Base b b.i10//correcto b.i20//
Error b.i30//Error D1 d1 d1.i10//Error d1.i2
0//Error d1.i30//Error D2 d2 d2.i10//Error d
2.i20//Error d2.i30//Error D3
d3 d3.i10//Correcto d3.i20//Error d3.i30//E
rror
13Operadores de Resolución de ámbito
- class D4 protected base
- public
- basei1
-
- D4 d4
- d4.i10//correcto
14Constructores
- class B1
- public
- B1()cout ltltC-B1ltltendl
-
- class B2
- public
- B2()cout ltltC-B1ltltendl
-
- class D public B1, B2
- public
- D()cout ltltC-Dltltendl
-
- D d1
- Sintaxis
- ClaseDClaseD(Parametros) ClaseB(Parametros),
ListaMbrD - //Cuerpo del constructo
15Ejemplo
- 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
-
- Punto3DPunto3D(int xv, int yv, int zv)
Punto(xv, yv) - fijarz(zv)
16Destructores
- class C1
- public
- C1(int n)
- C1()
- private
- int pi, l
-
- C1C1(int n) l(n)
- cout ltltlltlt enteros se asignanltltendl
-
- C1C1()
-
- coutltltlltlt enteros son liberadosltltendl
- delete pi
-
- Class C2 public C1
- public
- C2(int n)
- C2()