Documente Academic
Documente Profesional
Documente Cultură
Una razón para utilizar la herencia es que permite reutilizar código de proyectos
anteriores dándole la flexibilidad de hacer ligeras modificaciones si el viejo código no
hace exactamente lo que Usted necesita en su nuevo proyecto. No tiene sentido
empezar cada nuevo proyecto desde cero ya que una parte del código ciertamente
será reutilizado en varios programas, sin embargo, es fácil cometer un error si Usted
trata de modificar la clase original. Otra razón para utilizar la herencia es si el proyecto
requiere de varias clases las cuales son muy similares pero con algunas diferencias. En
éste capítulo nos concentraremos en el mecanismo de la herencia y cómo
implementarla en un programa. C++ permite heredar toda o una parte de los
miembros ó métodos de una clase, modificar algunos y agregar nuevos miembros si
no están disponibles en la clase padre.
La implementación de vehiculo
Se recomienda crear una carpeta para guardar en ella los archivos vehiculo.h y
vehiculo.cpp ya que serán utilizados en los siguientes ejemplos, empezando con el
siguiente programa cuyo código llamado transpte.cpp utiliza la clase vehiculo que
nosotros haremos un poco especial utilizandola sin modificación como clase base en
los próximos ejemplos para ilustrar la herencia, ésta utiliza una clase existente y le
agrega funcionalidad para cumplir una tarea posiblemente más compleja.
// Archivo transpte.cpp
#include <iostream.h>
#include "vehiculo.h"
int main()
{
vehiculo carro, moto, camioneta, sedan;
carro.inicializa(4, 3000.0);
moto.inicializa(2, 900.0);
camioneta.inicializa(18, 45000.0);
sedan.inicializa(4, 3000.0);
cout << "El carro tiene " << carro.obtiene_llantas() << " llantas.\n";
cout << "La camioneta tiene una capacidad de " << camioneta.llanta_carga()
<< " libras por llanta.\n";
cout << "La moto pesa " << moto.obtiene_peso() << " libras.\n";
cout << "El sedan pesa " << sedan.obtiene_peso() << " libras, y tiene "
<< sedan.obtiene_llantas() << " llantas.\n";
return 0;
}
No debe haber problema alguno para comprender la operación del programa, éste
declara cuatro objetos de la clase vehiculo, los inicializa y despliega algunos datos
para ilustrar que la clase vehiculo puede ser utilizada como una clase simple porque
es en realidad una clase simple. Nos referimos a ella como una clase simple en
contraste a llamarla clase base ó clase derivada tal y como lo haremos muy pronto.
Compile y ejecute el programa, incluyendo los archivos vehiculo.cpp y vehiculo.h, el
resultado es el siguiente:
Implementación de camion
En el siguiente código está especificado la implementación de la clase camion, en
realidad no presenta nada nuevo, sin embargo nos será útil para demostrar como se
utilizan juntas las clases que estamos estudiando.
// Archivo camion.cpp flete = max_carga;
#include "camion.h" }
void camion::ini_camion(int cuantos, float float camion::eficiencia(void){ return flete /
max_carga) (flete + peso);}
{ int camion::pasajeros(void){ return
pasajeros_carga = cuantos; pasajeros_carga;}
monociclo.inicializa(1, 12.5);
cout << "El monociclo tiene " << monociclo.obtiene_llantas() << " llantas.\n";
cout << "La capacidad del monociclo es " << monociclo.llanta_carga()
<< " libras por llanta.\n";
cout << "El monociclo pesa " << monociclo.obtiene_peso() << " libras.\n\n";
car sedan;
sedan.inicializa(4, 3500.0, 5);
cout << "El sedan transporta " << sedan.pasajeros() << " pasajeros.\n";
cout << "El sedan pesa " << sedan.obtiene_peso() << " libras.\n";
cout << "La capacidad por llanta del sedan es " << sedan.llanta_carga()
<< " libras or llanta.\n\n";
camion semi;
semi.inicializa(18, 12500.0);
semi.ini_camion(1, 33675.0);
cout << "El semi pesa " << semi.obtiene_peso() << " libras.\n";
cout << "La eficiencia del semi es " << 100.0 * semi.eficiencia() << " por ciento.\n";
return 0;
}
Los archivos de cabecera para las tres clases están incluidas en las líneas 4 a la 6 así
que el programa puede utilizar los componentes de las clases. Observe que las
implementaciones de las tres clases no están aquí a la vista y no es necesario, esto
permite al código ser utilizado sin tener acceso al código fuente para la
implementación de las clases, sin embargo los archivos de cabecera de definición
deben estar disponibles. En éste programa de ejemplo solo se ha declarado un objeto
de cada clase pero debe quedar claro que se puede declarar cuantos objetos sean
necesarios en el programa. El resultado de la ejecución del programa es:
El monociclo tiene 1 llantas.
La capacidad del monociclo es 12.5 libras por llanta.
El monociclo pesa 12.5 libras.