Unidades poo

Solo disponible en BuenasTareas
  • Páginas : 17 (4108 palabras )
  • Descarga(s) : 0
  • Publicado : 22 de mayo de 2011
Leer documento completo
Vista previa del texto
Unidad 3 Herencia
Cuando una clase hereda de otra, la clase derivada incorpora todos los miembros de la clase base además de los suyos propios.
La herencia es una herramienta muy importante en muchos aspectos del desarrollo de aplicaciones:
Organización del diseño.
Reusabilidad de clases (propias o no).
Mejora del mantenimiento.
Tomando como base la clase TObjGraf se van a construir dosnuevas clases, TCirculo y TCuadrado, que derivan de TObjGraf. Esto significa que los objetos de estas clases tienen asociados las propiedades y métodos de la clase base, TObjGraf, además de los suyos propios. En la figura 5.3 esquematizamos el mecanismo de herencia para las nuevas clases y las nuevas propiedades que se asocian a los objetos de las clases derivadas.
Figura 5.3. Lasclases TCirculo y TCuadrado heredan las propiedades y métodos de la clase TObjGraf.4

En ObjGraf.h:
//*************************************************/
// Definicion de la clase derivada TCirculo
// Deriva de la clase base TObjGraf
//*************************************************/

class TCirculo : public TObjGraf {

public:

int Radio; // Propiedad exclusiva de TCirculo

};//*************************************************/
// Definicion de la clase derivada TCuadrado.
// Deriva de la clase base TObjGraf
//*************************************************/

class TCuadrado : public TObjGraf {

public:

int Lado; // Propiedad exclusiva de TCuadrado

};
Antes del nombre de la clase base hay que poner public, esto es así porque C++ permite también la herencia private.Pero ésta no se suele usar, por lo que nosotros supondremos que sólo existe la public.
 
5.5.1. Herencia de Constructores y Destructores (Inicialización de Clases II)
Los constructores y destructores de una clase no son heredadas automáticamente por sus descendientes. Deberemos crear en las clases hijas sus propios constructores y destructores. Es posible, no obstante, emplear los constructores dela clase base pero hay que indicarlo explícitamente. De ser así, es necesario saber:
1.que los constructores y destructores de las clases base son invocados automáticamente antes que los constructores de las clases derivadas, y
2.que los destructores de las clases derivadas se invocan antes que los de las clases base.
Para determinar con qué parámetros se llaman a los constructores de lasclases base, se utiliza la lista de inicialización.
En ObjGraf.h:
//*************************************************/
// Definicion de la clase derivada TCirculo
// Deriva de la clase base TObjGraf
//*************************************************/

class TCirculo : public TObjGraf {

public:

int Radio; // Propiedad exclusiva de TCirculo

// Metodo constructor

TCirculo(TPaintBox *_PaintBox, TColor _Color=clBlack,
int _X=0, int _Y=0, int _Radio=1);

};

//*************************************************/
// Definicion de la clase derivada TCuadrado.
// Deriva de la clase base TObjGraf
//*************************************************/

class TCuadrado : public TObjGraf {

public:

int Lado; // Propiedad exclusiva de TCuadrado// Metodo constructor

TCuadrado (TPaintBox * _PaintBox, TColor _Color=clBlack,
int _X=0, int _Y=0, int _Lado=1);

};
En ObjGraf.cpp:
TCirculo :: TCirculo (TPaintBox * _PaintBox, TColor _Color,
int _X, int _Y, int _Radio) :
TObjGraf (_PaintBox, _Color, _X, _Y)
{
Radio = _Radio;
}

TCuadrado :: TCuadrado (TPaintBox * _PaintBox,TColor _Color,
int _X, int _Y, int _Lado) :
TObjGraf (_PaintBox, _Color, _X, _Y)
{
Lado = _Lado;
}
 
5.5.2. Clases Abstractas
Clase abstracta: es una clase que no está completamente especificada (posee métodos sin implementar), por lo tanto no se pueden crear instancias de la misma. Una clase abstracta se usa para servir de clase base a otras...
tracking img