6

Aplicando Herencia en C++

134Puntos

hace 5 años

La herencia es la capacidad que tienen algunas clases (clase derivada) de heredar miembros y funciones de otras clases padre (clase base) y así crear jerarquías en nuestro programa.
Una parte importante en la herencia es el tipo de acceso que se tiene a la información y miembros de la clase, estos son los siguientes:

  • Public: Los datos y funciones en esta área pueden ser accedidos por quien sea, al heredar de otra clase con sus datos se mantienen como públicos.
  • Private: Ahora, los datos y funciones en esta área solo pueden ser accedidos por la clase y no por otros. Usando apuntadores uno puede saltarse esta regla pero no es recomendado.
  • Protected: Funciona igual que private, la diferencia es que las clases derivadas pueden acceder a los datos miembro de la clase base que heredan cuando en private esto no es posible.
Captura de Pantalla 2019-04-16 a la(s) 17.31.18.png

Para entender mejor este concepto hagamos un ejemplo:

Lo primero que debemos hacer es detectar características en común.
Hay que tener en cuenta que la herencia se utiliza principalmente en la resolución de problemas complejos que buscan eficacia en el programa mediante la reducción de código.

Para este ejemplo tomaremos una temática de mascotas donde el común es que todos son animales, todos ellos tienen una dieta alimenticia que podemos agrupar en 3 clasificaciones básicas.

Captura de Pantalla 2019-04-16 a la(s) 17.36.28.png

Para este ejemplo los clasificaremos en Herbívoro, Carnívoro y Omnívoro.

  • Ahora que hemos realizado este filtro podremos agregar algunos animales por clasificación alimenticia.
  • El disponer de herencia trae consigo varias ventajas:
  • Cada vez que se crea un objeto este lleva consigo las características de la clase que hereda, podemos crear muchos perros, gatos, etc y ellos conllevaran las características que asignemos , en términos generales al crear un animal llevará de herencia una dieta alimenticia ya sea Carnívoro o Herbívoro.
  • Siempre podemos crear nuevas clases para cada situación es decir para este ejemplo podemos crear una clase oso y una clase humano que sea Omnívoro ya que se alimentan de ambas dietas.
  • Adicionalmente podemos aplicar diferentes cambios a cada clase que abarca una modificación general por ejemplo que todos ellos aumenten su edad cada año.

Veremos que existen más ventajas, aunque este modo de diseñar aplicaciones tiene también sus inconvenientes, sobre todo si diseñamos mal alguna clase.

Veamos un ejemplo sencillo basado en la idea del punto anterior:

// Clase base Animal:class Animal {
  public:
   Animal(char *nombre, int edad);
   constchar *LeerNombre(char *nombre)const;
   intLeerEdad()const;
   voidCambiarNombre(constchar *nombre);
   voidCambiarEdad(int edad);
   
  protected:
   char n[40];
   int e;
};
 
// Clase derivada Hervivoro:class Hervivoro : public Animal {
  public:
    Hervivoro(char *nombre, int edad, float tamaño);
   float LeerTamaño() const;
   void CambiarTamaño(constfloat tamaño);
   
  protected:
   float TamañoAdulto;
};
Joe
Joe
joe-dorado

134Puntos

hace 5 años

Todas sus entradas
Escribe tu comentario
+ 2