viernes, 3 de abril de 2015

Herencia en Visual C++

Buenos días lectores les escribo este viernes santo, para explicarles un poco sobre la Herencia en Visual C++, la herencia esta presente en todos o en la mayoría de los lenguajes de programación y es esencial en la llamada POO (Programación Orientada a Objetos). Vamos a ver que es la herencia:

Si hablamos del aspecto biológico de la herencia podemos pensar que cada uno de nosotros posee algún rasgo de nuestro padre y algún rasgo de nuestra madre, adicional a eso, cada uno de nosotros tenemos nuestros propios rasgos, pues bien se dice por ejemplo, que por herencia tenemos los ojos verdes, porque alguno de nuestros padres o abuelos los tuvieron así, la herencia en programación es muy similar, una clase padre puede heredar a todos sus hijos sus mismos métodos o funciones, de tal manera que, los hijos tendrán todos los métodos de sus padres mas los propios, creando de esta manera una clase aún mas completa.

En el ejemplo que les propongo veremos una clase llamada Gato, y el Gato puede comer, dormir, correr, maullar, etc; pero vamos a suponer que existe un mundo alternativo y bizarro, donde además de haber gatos normales existen gatos voladores, no todos los gatos vuelas, únicamente los gatos voladores, sin embargo los gatos voladores también maullan, comen, corren, duermen, pero además de todo esto también vuelan. Vamos a crear primeramente la clase padre, y la clase padre será, en efecto la clase Gato



#include <iostream>
#include <string>
using namespace std;
namespace Animales 
{

 
 class Gato
 {
 public:
  Gato (string nombre, int edad, string color)
  {
   _nombre = nombre; _edad=edad; _color=color;
  }
  Gato()
  {

  }
  string maulla()
  {
   accion="Miau Miau";
   return accion;
  }
  string duerme()
  {
   accion = "El gato esta dormido, no hagas ruido";
   return accion;
  }
  string corre()
  {
   accion ="El gato esta corriendo";
   return accion;
  }
  string caza()
  {
   accion="El gato esta cazando";
   return accion;
  }

 private:
  string _nombre;
  int _edad;
  string _color;
  string accion;

 };
}

Como pueden ver yo cree un espacio de nombres llamado Animales y dentro del namespace Animales tendré las clases de todos los animales que crearé, el Gato normal, como les comentaba maulla, duerme, come y caza, el GatoVolador a su vez puede hacer lo mismo, pero además puede volar, el código traté de que fuera entendible a simple vista pero si tienen alguna duda no vacilen en preguntar. Ahora vamos a crear la clase hijo llamada GatoVolador en un archivo de cabecera aparte. El archivo quedará de la siguiente manera:


#include <iostream>
#include "Animales.h"
using namespace Animales;
class GatoVolador : public Gato {
public:
 string vuela()
 {
  accion = "El gato esta volando";
  return accion;
 }
 GatoVolador()
 {

 }
private:
 string accion;
};

Si se fijan en la línea 4 class GatoVolador : public Gato { es en donde haré la herencia, estoy indicando que crearé una clase llemada GatoVolador y que es hija de la clase Gato, de este modo, GatoVolador heredó todos los métodos creados en Gato y solo necesitaremos crear el método único que tiene GatoVolador que será vuela(), quiere decir que los gatos que tendran el método vuela, únicamente será los GatoVolador, ya que los Gato, no poseen el método por lo cual no pueden volar, pero los GatoVolador si podran cazar, comer, maullar, dormir, etc, como lo veremos en el programa principal:


#include "Volador.h"

using namespace std;
using namespace Animales;
Gato g1;
GatoVolador g2;
void main()
{
 g1= Gato::Gato("Silvestre", 1, "Negro");
 cout <<g1.maulla();
 g2= GatoVolador::GatoVolador();
 cout <<g2.caza();
 cout <<g2.vuela();
 cout <<g2.duerme();
 system ("pause");
}

Como podemos ver tenemos dos instancias, la primera g1 hace referencia a la clase Gato en cambio g2 hace referencia a la clase GatoVolador, el g1, puede maullar, pero también podría el g2, el g2 adicionalmente puede volar, cosa que no podrá realizar g1, sin embargo g2, puede realizar cualquier cosa que haga g1, debido a que GatoVoldor hereda de la clase Gato, la herencia es muy poderosa en programación y entender su uso resulta vital para el desarrollo de aplicaciones, espero este artículo haya quedado claro para las personas que me leen y si no, pueden preguntar. Les agradecería su comentario, aún más un +1, para que más gente lo lea o todavía mas que aparte del comentario y del +1 le dieran clic a algún anuncio. Muchas gracias por su tiempo, nos leemos a la próxima.

Banderas de Visitantes

Flag Counter