POO Herencia

Herencia.

La herencia es un mecanismo de abstracción útil en el análisis y el diseño. La herencia modela naturalmente objetos que son similares en algunos aspectos, pero no en todos; por tanto, los objetos tienen algunas propiedades comunes así como propiedades únicas que los distinguen. La herencia es un mecanismo de clasificación que se ha utilizado ampliamente en otros campos. Un ejemplo es la taxonomía del reino animal, en la que los animales se clasifican en mamíferos, peces, reptiles, etc. Los gatos y los perros tienen propiedades comunes que se generalizan a las propiedades de los mamíferos. Sin embargo, también tienen propiedades únicas (por ejemplo, un perro ladra y un gato maúlla).


La herencia es un mecanismo para compartir y reutilizar código entre clases. Una clase secundaria (o hija) hereda las propiedades (datos y operaciones encapsulados) de una clase principal (o padre). Luego puede adaptar la estructura (es decir, datos encapsulados) y el comportamiento (es decir, operaciones) de su clase principal. La clase principal se denomina superclase o clase base. La clase hija se denomina subclase o clase derivada. La adaptación de una clase principal para formar una clase secundaria se denomina especialización. Las clases secundarias pueden especializarse aún más, lo que permite la creación de jerarquías de clases, también denominadas jerarquías de generalización/especialización.


Figura 1. Herencia
 En la imagen se ilustra como las clases : Rectangulo, Triangulo y Cubo, heredan de la clase FiguraGeometrica.

Tipos de herencia

Existen diferentes tipos de herencia en POO, los más comunes son:

  • Herencia simple: Una clase solo puede heredar de una única clase padre. Este es el tipo de herencia que se ha descrito en el ejemplo anterior.
  • Herencia múltiple: Una clase puede heredar de varias clases padre. Esto permite crear clases con características y comportamientos de diferentes fuentes.
  • Herencia jerárquica: Las clases se organizan en una jerarquía en la que una clase puede heredar de otra, que a su vez hereda de otra, y así sucesivamente.
  • Herencia multilineal: Una clase puede tener varios padres directos, lo que crea una estructura de árbol en lugar de una jerarquía lineal.

Beneficios de la herencia

La herencia ofrece varias ventajas en la programación orientada a objetos:

  • Reutilización de código: Permite reutilizar código existente, lo que ahorra tiempo y esfuerzo en el desarrollo de software.
  • Organización del código: Facilita la organización del código en jerarquías que reflejan las relaciones entre las clases.
  • Especialización: Permite crear clases especializadas para casos de uso específicos a partir de clases más generales.
  • Modularidad: Promueve la modularidad del código, lo que facilita su mantenimiento y comprensión.

Conclusión

La herencia es un concepto fundamental en la programación orientada a objetos que permite reutilizar código, organizar las clases en jerarquías y crear clases especializadas. Es una herramienta poderosa que puede ayudar a los desarrolladores a crear software más modular, mantenible y escalable.

Bibliografía

Hassan Gomaa. (2011). Software Modeling and Design : UML, Use Cases, Patterns, and Software Architectures. Cambridge University Press.

Comentarios

Entradas más populares de este blog

Principios SOLID

Descomposición arquitectónica de software

Gráficas de Pareto