Documentos de Académico
Documentos de Profesional
Documentos de Cultura
10 HERENCIA
Introducción
Durante las primeras unidades se estudiaron los tipos abstractos de datos y los
principales conceptos de POO, así como su implementación en lenguaje C++ a través
de las clases, pero no se trató con suficiente profundidad uno de los conceptos más
importantes de un lenguaje oriento a objetos, la herencia.
Objetivo General
Objetivos específicos
La herencia permite utilizar clases existentes, llamadas clases base, para crear nuevas
clases,
La herencia es la propiedad que permite definir nuevas clases usando como base las
clases ya existentes, es decir, reutilizar el código ya desarrollado para reducir el
código redundante en los nuevos componentes de clases. La herencia es una
herramienta poderosa que proporciona un marco adecuado para la producción de
software confiable, adaptable y reutilizable, disminuyendo costos y tiempo en su
desarrollo.
Las clases derivadas, además, pueden añadir sus propios datos y comportamientos o
cambiar aquellos elementos de la clase base que necesitan sean diferentes.
{ public:
//Sección públic
private:
//Sección privada …
};
En la declaración anterior los dos puntos (:) son el símbolo para derivación o herencia
y el tipo de herencia puede ser public, private o protected, que en general determina
qué especificador de acceso a miembro tendrán, en la clase derivada, los miembros
que se heredaron de la clase base, como se explicará más adelante; si no se especifica
ningún tipo de herencia, por defecto se asigna el tipo de herencia private. Dentro de
los tipos de herencia aparece el tipo protected, que es un especificador de acceso a
miembro adicional que se utiliza solamente en el caso de trabajar con herencia.
class Vector2D{
public:
Vector2D(double=0, double=0);
magnitudVector2D();
protected:
double x;
double y;
};
x=l;
y=a;
magnitudVector3D ();
private:
double z;
protected:
y=a;
z=f;
//Definición del constructor Caja en el caso de que los datos heredados fueran private
z=f;
Si los datos heredados por la clase Vector3D son privados, y teniendo en cuenta que
los datos privados solo se pueden acceder desde las funciones miembro de la clase,
es necesario hacer un llamado a alguna función miembro de la clase Vector2D dentro
del constructor de Vector3D para poder inicializarlos, en este caso se hace un llamado
al constructor de Vector2D, dentro de lo que se conoce como una lista de inicialización
de miembros (después del paréntesis de los parámetros se escribe el operador dos
puntos (:) y se llama la función correspondiente).
- Herencia public: Este tipo de herencia especifica que los datos y funciones
miembro heredados de la clase base conservan el mismo especificador de
acceso en la clase derivada, es decir, los miembros públicos de la clase base
protected Protected
private Private
protected Protected
private Private
protected Private
private Private
<clase base2>,…
{
public:
//Sección pública
private:
//Sección privada
};
Esta característica se debe tener en cuenta siempre que se vaya a establecer una
jerarquía de herencia para un programa orientado a objetos.
En cambio, cuando se utiliza un objeto de una clase determinada como dato miembro
de otra clase, se establece una relación ”tiene un”, en la que un objeto hace parte de
la implementación de otra clase, sin entregar sus datos y funciones para que hagan
parte de la definición de la nueva clase. Este tipo de relación se conoce comúnmente
como Composición.
//Declaración de la
Motor{ public:
Motor();
void setMotor(double,
double); double
getPotencia(); double
getCilindraje(); void
imprimir(); double
torqueMotor();
private:
double potencia;
double cilindraje;
//Definición de la clase
Vehiculo class
Vehiculo{ public:
Vehiculo(double,
Motor); void
setPrecio(double);
double
getPrecio(); void
imprimirVehiculo();
private:
double precio;
Motor VS1000;
};
Resumen
La herencia es una propiedad que permite al programador crear nuevas clases a partir
de clases ya existentes. A las clases existentes se les conoce como clases base y a
las nuevas clases se les conoce como clases derivadas.
Actividades complementarias
CircunferenciaCirculo 2 r AreaCirculo r2
Construya una clase derivada Cilindro a partir de la case Circulo, que contenga el
miembro adicional h, para especificar la altura del cilindro. Además funciones
miembro que permitan calcular el área y el volumen del cilindro, que están dadas por
las siguientes ecuaciones:
Lecturas recomendadas