En la Programación Orientada a Objetos, existe un concepto con el cual podemos tener un gran potencial a la hora de realizar grandes sistemas, su nombre es La Herencia.
La herencia en POO, nos sirve para organizar nuestra lógica en la creación de clases, ahorrar métodos, y tener una manera abstracta de programar.
Una descripción sencilla de Herencia es: La creación de una clase a partir de una ya existente (clase padre), teniendo la clase nueva la funcionalidad de su padre (dependiendo de su encapsulamiento, lo veremos en los próximos capítulos), y a la cual se le pueden crear nuevos métodos y atributos. Esto nos permite ahorrar código y no repetirlo; si una clase que ya creamos hace lo que deseamos pero aparte tenemos la necesidad de nueva funcionalidad, utilizamos la herencia.
Veamos el siguiente ejemplo, en el cual utilizo los medios de transporte, y como organizaríamos algo rápido para crear una clase auto:
Cada cuadro representa una Clase, en la parte superior tenemos la clase padre Transporte, de la cual heredan la clase Marino, Terrestre y Aéreo, a su vez tenemos una clase de nombre Auto la cual hereda de la clase Terrestre. Y para ver un poco de las ventajas, cuando programamos esto, veamos las 5 clases a continuación.
Clase Transporte
class Transporte { public int velocidadMaxima = 0; public int pasajeros = 0; public void camina() { //definición del metodo camina } }
Clase Terrestre
class Terrestre : Transporte { public int numeroLlantas = 0; }
Clase Aéreo
class Aereo : Transporte { public int numeroAlas = 0; }
Clase Marino
class Marino : Transporte { public int numeroHelices = 0; }
Clase Auto
class Auto : Terrestre { public int puertas = 0; public Auto(int pasajeros,int velocidadMaxima,int numeroLlantas, int puertas) { //atributos de la clase Transporte this.pasajeros = pasajeros; this.velocidadMaxima = velocidadMaxima; //atributos de la clase Terrestre this.numeroLlantas = numeroLlantas; //atributos de esta clase this.puertas = puertas; } }
Podemos observar que las clases que son hijas en el momento de definirías tenemos dos puntos(:) seguido de la clase que heredan, de esta manera realizamos la Herencia.
Ahora veamos cómo se utiliza como instancia el auto y sus métodos heredados:
class Program { static void Main(string[] args) { //Clase Auto utilizando herencia Auto miCarro = new Auto(4, 200, 4, 4); miCarro.camina(); } }
Estoy utilizando el método camina(), el cual está definido en la clase Transporte, de esta manera podemos reutilizar código sin volverlo a copiar o rehacer, pero esto no es todo, en los siguientes capitulo veremos más cosas útiles que se pueden realizar con la POO (Programación Orientada a Objetos).
Ir Capítulo Siguiente (5.- Polimorfismo (Sobrecarga y Sobreescritura))