sábado, 18 de julio de 2015

3.2.1 Herencia Simple.

Cuando sólo se tiene una clase base de la cual hereda la clase derivada, se dice que hay herencia simple (figura 1.a). Sin embargo, la herencia simple no excluye la posibilidad de quede una misma clase base se pueda derivar más de una subclase o clase derivada.
Cuando se necesita representar un concepto general y a partir de éste, conceptos más específicos, resulta conveniente organizar la información usando herencia. Esto permite compartir atributos y métodos ya definidos, evita la duplicidad y, por otra parte, proporciona mayor claridad en la representación que se haga de la información. Es decir, se logra un mejor diseño de la solución del problema. Existen numerosos casos en los cuales se da este tipo de relación. En la Figura 2 se presentan algunos ejemplos de herencia simple.
En la figura 2a, la clase Persona es la clase base y Empleado es la clase derivada. Un objeto de esta clase también es un objeto de la clase “Persona”, por lo tanto tendrá los atributos y métodos de ambas clases. En la figura 2b, la clase Mamífero es la clase base y Vacuno y Equino son las clases derivadas. En este caso, se dice que todo “Vacuno” y todo “Equino” también son objetos de la clase “Mamífero” y en consecuencia tendrán todos los atributos y métodos que heredan de la clase base. La herencia pública permite que los miembros privados de la clase base se puedan acceder sólo por medio de los métodos de dicha clase. Los miembros protegidos de la clase base podrán ser usados por los métodos de las clases derivadas, pero no por sus clientes.
Los miembros públicos estarán disponibles para los métodos de las clases derivadas y para todos sus clientes.
class Base
{ private:
// Miembros declarados en la sección privada: accesibles sólo para miembros de esta clase
protected:
/* Miembros declarados en la sección protegida: accesibles sólo para miembros de esta
clase y de sus derivadas */
public:
// Miembros declarados en la sección pública: accesibles para todos
};
Para declarar una clase derivada de una clase previamente definida se utiliza la siguiente sintaxis:
class Base
{ // Declaración de atributos y métodos de la clase Base
};
// Relación de herencia pública entre las clases Base y Derivada
class Derivada : public Base
{ // Declaración de atributos y métodos de la clase Derivada
};
Con la palabra reservada public en el encabezado de la declaración de la clase “Derivada” se hace referencia a que dicha clase hereda los atributos y métodos de la clase “Base”.
La declaración del constructor de la clase “Derivada” debe incluir un llamado al constructor de la clase “Base”.

Para ello se utiliza la siguiente sintaxis:


Derivada :: Derivada (parámetros) : Base (parámetros propios de la clase Base)
{ // Cuerpo del constructor de la clase Derivada
}
Cuando se declara un objeto del tipo de la clase derivada se invoca al constructor de ésta. De este constructor lo primero que se ejecuta es la llamada al constructor de la clase base, y posteriormente se ejecutan sus propias instrucciones.
En cuanto a los parámetros, al invocar al constructor de la clase base se le deben proporcionar los parámetros que necesita para asignar valores a los atributos propios de la clase base y que la clase derivada hereda. En el cuerpo de la clase derivada se harán las asignaciones correspondientes a los atributos propios de esta clase.

No hay comentarios.:

Publicar un comentario