Programación orientada a objetos. Herencia

Share

Cuarta entrada acerca de la programación orientada a objetos, en esta entrada hablaremos de la herencia.

Ya vimos la clase y el objeto, ahora podemos ver otra de las características básicas de la programación orientada a objetos: el uso de la herencia.

Veamos detenidamente qué es la herencia:

El mecanismo de herencia permite definir nuevas clases partiendo de otras ya existentes. Las clases que derivan de otras heredan automáticamente todo su comportamiento y además pueden introducir características particulares propias que las diferencian.

Los objetos se definen a partir de clases. Sabiendo a qué clase pertenece un objeto, ya sabemos bastante sobre él.

La programación orientada a objetos va más allá, permitiéndonos definir clases a partir de otras clases ya construidas. Por ejemplo, un árbitro de fútbol, y uno de basket no son lo mismo, pero en definitiva, son árbitros (:D). En términos de programación orientada a objetos, son subclases o clases derivadas de la clase árbitro. Además la clase árbitro es la clase base o superclase de los árbitros de fútbol, árbitro de basket, etcétera.

Cada subclase hereda los estados (declaración de variables) de la superclase de la cual deriva. Los árbitros de fútbol, los árbitros de basket… comparten algunos estados y además, cada subclase hereda los métodos de su superclase.

Pero las clases derivadas no se encuentran limitadas por los estados y comportamientos que heredan de su superclase. Contrariamente, estas subclases pueden añadir variables y métodos a aquellas que han heredado.

Las clases derivadas pueden incluso sobrescribir los métodos heredados y proporcionar implementaciones más especializadas para esos métodos. Además, no estamos limitados a un único nivel de herencia. El árbol de herencias o jerarquía de clases puede ser tan extenso como necesitemos. Los métodos y las variables miembro se heredarán hacia abajo a través de todos los niveles de la jerarquía. Normalmente, cuanto más abajo está una clase en la jerarquía de clases, más especializado es su comportamiento.

La herencia es una herramienta clave para abordar la resolución de un problema de forma organizada, pues permite definir una relación jerárquica entre todos los conceptos que se están manejando. Es posible emplear esta técnica para descomponer un gran problema en un conjunto de problemas subordinados.

En este caso, la resolución del problema original se consigue cuando se han resuelto cada uno de los problemas subordinados, que a su vez pueden contener otros. Por tanto, la capacidad de descomponer un problema o concepto en un conjunto de objetos relacionados entre sí cuyo comportamiento es fácilmente identificable puede ser extraordinariamente útil para el desarrollo de programas informáticos.

Ventajas de la herencia:

  • Las clases derivadas o subclases proporcionan comportamientos especializados a partir de los elementos comunes que hereda de la clase base. A través del mecanismo de herencia los programadores pueden reutilizar el código de lasuperclase tantas veces como sea necesario.
  • Los programadores pueden implementar las llamadas superclases abstractas, que definen comportamientos genéricos. Las clases abstractas definen e implementan parcialmente comportamientos, pero gran parte de estos comportamientos no se definen ni se implementan totalmente. O sea que otros programadores pueden hacer uso de estas superclases detallando esos comportamientos con subclases especializadas. El fín de una clase abstracta es servir de modelo base para la creación de otras clases derivadas, pero cuya implantación depende de las características particulares de cada una de ellas.

En resumen:

La herencia (en la POO) es una potente arma que podemos utilizar para varias cosas, entre ellas, por ejemplo, ahorrar líneas de código heredando de otras clases, compartiendo variables miembro o funciones miembro. También podemos generar superclases absctractas para definir comportamientos genéricos que necesitemos. La herencia es una de las características que más se hace notar a la hora de escribir código, o reutilizar código de otros programadores.

Saludos!

2 Responses to “Programación orientada a objetos. Herencia”

  1. Gonzalo dice:

    Muy buena explicación de la herencia y de los demás post de Poo.

Leave a Reply