Herencia Dwarft (2004-08-15)

Es un ejemplo muy sencillo de hacer una herencia simple.

Una herencia es para aprovechar código. Al heredar los datos publicos y protegidos la sub-clase desde la superclase, esta sub-clase podra utilizar esos datos y constructores desde la clase como si los hubiera declarado dentro.

Yo entiendo una herencia como si fuese la superclase la programacion y luego las sub-clases serian los lenguajes de programacion, es decir, C, C++, Pascal, Visual Basic...

De esta manera cosas que tengan todos los lenguajes en común estará en la superclases y las cosas concretas de cada lenguaje estaran en las sub-clases o variantes.

#include <iostream.h> // Biblioteca para la entrada/salida de datos

main() //Comienza la funcion principal
{
  class vehiculo  //Declaramos la superclase vehiculo
  {
    protected:  //Le ponemos tipo protegido a los datos para que se pasen a la variante
              float peso; //Variable tipo decimal que guardara el peso
              int ruedas; //Variable tipo intero que guardara el nº de ruedas
    public:  //Le ponemos tipo publico a los constructores para poder utilizarlos en todo el programa
            void iniciar(float p,int r) //Este constructor se dedica a enlazar las variables del
            { //main principal con las de las clases por eso se pasan por parametros
              peso = p;  //La variable peso sera igual a la variable p
              ruedas = r;  //La variable ruedas sera igual a la variable r
            }; //Fin del constructor iniciar
            float ob_peso(void) //Constructor de tipo decimal que muestra el peso
            { return peso; }; //Devuelve el peso con return
            int ob_ruedas(void) //Constructor de tipo entero que muestra el nº de ruedas
            { return ruedas; }; //Devuelve las ruedas con return
  };  //Fin de la declaracion de la superclase vehiculo
  class motocicleta:public vehiculo //Declaramos la clase variante llamada motocicleta
  { //Hacemos que se pase todo lo protegido y publico a esta variante con :public vehiculo
    private: //Aunque por defecto si no se pone el tipo es private, pero lo ponemos
             int pasajeros;  //Variable de tipo entero que guardara el nº de pasajeros
             int combustible; //Variable de tipo entero que guardara el combustible
             char tipo; //Variable de tipo caracter que guardara una tecla
    public:  //Le ponemos tipo publico a los constructores para poder utilizarlos en todo el programa
            void iniciar(int pj,int com,int r,float p) //Este constructor se dedica a enlazar las
            { //variables del main principal con las de las clases por eso se pasan por parametros
              pasajeros = pj;  //La variable pasajeros sera igual a pj
              combustible = com;  //La variable combustible sera igual a com
              ruedas = r; //La variable ruedas sera igual a r
              peso = p; //La variable peso sera igual a p
            };  //Fin del constructor iniciar
            int ob_pasajeros(void) //Constructor tipo entero para obtener el nº de pasajeros
            { cout << endl << "Que tipo de moto es ?";  //Datos de salida
              cout << endl << "Grande: Pulse G - Chica: Pulse C\\n";  //Datos de salida
                   cin >> tipo;  //Dato de entrada hacia la variable tipo char llamada tipo
              if((tipo == 'g') || (tipo == 'G')) //Si hemos pulsado g o G
              { pasajeros=pasajeros+1; }  //pasajeros se incrementara 1
              if((tipo == 'c') || (tipo == 'C')) //Si hemos pulsado c o C
              { pasajeros=pasajeros-1; }  //pasajeros se decrementara 1
              return pasajeros;  //Devuelve con return el valor de la variable pasajeros
            };  //Fin del constructor ob_pasajeros
            int ob_combustible(void) //Constructor tipo entero para obtener el nº de combustible
            { //Se utiliza el mismo valor anterior con la variable char tipo
              if((tipo == 'g') || (tipo == 'G')) //Si habiamos pulsado g o G
              { combustible=combustible+20; }  //El valor de combustible sera 20 mas
              if((tipo == 'c') || (tipo == 'C')) //Si habiamos pulsado c o C
              { pasajeros=20; }                //El valor de combustible sera 20
              return combustible;  //Devuelve con return el valor de combustible
            };  //Fin del constructor ob_combustible
  }; //Fin de la declaracion de la clase variante motocicleta

  int r=2,pj=2,com=20; //Declaramos variables enteras:
                       //r sera el numero de ruedas
                       //pj sera el numero de pasajeros
                       //com sera el numero de combustible
  float p=96.5;  //Declaramos variables decimales:
                 //p sera el peso

  motocicleta moto;  //Declaramos una variable tipo sub-clase moticicleta llamada moto

  moto.iniciar(pj,com,r,p); //Llamamos al constructor iniciar desde moto, le pasamos los parametros
  pj=moto.ob_pasajeros(); //Asignamos el valor del constructor ob_pasajeros a pj

  cout << endl << "Caracteristicas de un ciclomotor";  //Datos de salida
  cout << endl << "Peso: " << moto.ob_peso() << "kg";  //Datos de salida, llamamos a ob_peso
  cout << endl << "Ruedas: " << moto.ob_ruedas();      //Datos de salida, llamamos a ob_ruedas
  cout << endl << "Pasajeros: " << pj;                 //Datos de salida, ponemos a mostrar pj
  cout << endl << "Combustible: " << moto.ob_combustible() << "litros"; //Datos de salida, llamamos
  cout << endl;                                                         //a ob_combustible

  cin.get();  //Limpia el buffer
  cin.get();  //Espera a que pulses una tecla
} //Fin de la funcion principal

Regresar a ejemplos