¿Qué es la herencia? Una explicación sencilla de la programación orientada a objetos

Dos principios de programación orientada a objetos (lee sobre la abstracción aquí y la encapsulación aquí), ¡faltan dos más! Hoy vamos a echar un vistazo a la herencia. En comparación con la abstracción y la encapsulación, la herencia es un poco más sencilla (en mi opinión personal).

Al igual que con los otros principios de la programación orientada a objetos, la herencia está destinada a optimizar el trabajo de los programadores. El papel que juega la herencia en esta optimización es permitir a los ingenieros de software crear jerarquías de clases, donde las clases y los objetos heredan propiedades y comportamientos de su clase padre (o super). Una clase que hereda de una clase padre (o super) se llama subclase o clase hija, y los objetos que reciben propiedades y comportamientos de un padre a través de la herencia se denominan objetos hijos.

¿Cómo es esto útil? Una gran parte de la utilidad de la herencia es la reutilización. Voy a utilizar Noé y el arca como ejemplo. Para aquellos que no estén familiarizados con la historia, la Tierra está amenazada por una inundación mundial y Noé construye un arca para almacenar dos de cada animal terrestre de la Tierra para que sobrevivan a la tormenta. Supongamos que Noé quiere utilizar un programa informático que le ayude a llevar la cuenta de todos los animales del arca y sus distintas necesidades.

Imagen: una representación artística históricamente precisa del Arca de Noé (Foto de Dan Kb en Unsplash)

Crear una clase única para cada animal sería rápidamente muy repetitivo porque hay algunas propiedades y comportamientos que se aplican a cada animal, desde un ratón hasta un elefante. Las funciones compartidas pueden ser feed( ), hydrate( ), cleanEnclosure( ). En lugar de crear estos atributos compartidos una y otra vez para cada animal, podríamos crear una clase padre Animal. Esta clase padre contendría las propiedades y comportamientos universales para todos los animales y nos ahorraría tener que crear esas funciones compartidas ad infinitum.

Tal vez una función dontGetEaten( ) sería útil (Photo by Andre Klimke on Unsplash)

De esta manera, un elefante, un ratón y un chimpancé tendrían su propia clase hija que heredaría de la clase padre Animal. Además, Noah podría seguir construyendo sobre esos atributos heredados para personalizar aún más estas clases según sea necesario. Por último, la herencia nos permite limitar las posibilidades de error humano que podrían surgir si se introducen manualmente estas funciones compartidas.

La próxima semana: ¡polimorfismo!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *