Jerarquías de clase dentro de la Programación orientada a objetos

Como aprendimos en el artículo de fundamentos de la programación orientada a objetos existen objetos que son instancias de clases. Pero las aplicaciones reales, como la vida real, no se componen de una sola clase. Estas clases pueden estar relacionadas entre si para crear un diseño mas complejo que permita resolver problemas más complejos.

Cuando varias clases se relacionan entre si se dice que forman una jerarquía de clases.

De gatos y pájaros

Imaginemos que tu vecino tiene un gato llamado Silvestre. Los pájaros y los gatos tienen campos y métodos en común, ambos tienen un nombre, un sexo, edad, peso, tamaño, color, comen, duermen, observan, etc. Pero también tienen diferencias, unos tienen alas y otros sólo patas, unos pían y otros maúllan.

Observando los atributos comunes de las clases Pájaro y Gato podemos diseñar la clase Animal.

Clase Animal:

    Campos:

        nombre, edad, sexo, peso, tamaño, color, patas

    Métodos:

        respirar, comer, dormir, observar 

A partir de la clase Animal podemos crear las clases Pájaro y Gato atendiendo a sus diferencias.

Clase Pájaro

    Campos:

        alas, pico

    Métodos:

        piar, volar

Clase Gato

    Campos:

        dientes, orejas

    Métodos:

        maullar, correr

Las clases Pájaro y Gato heredan de la clase Animal el conjunto de campos y métodos. La clase Animal se conoce como clase padre o superclase.

Las clases hijas de la superclase Animal se denominan subclases. Heredan el comportamiento y el estado de su clase padre.

La relación que existe entre superclases y subclases se denomina jerarquía de clases. Estas relaciones pueden basarse en la herencia de métodos y campos e incluso en la modificación de alguno de esos métodos.

Sobreescritura de métodos

Cuando una clase hija modifica un método de la clase padre se dice que el método está sobreescrito (overwrite).

Un método sobreescrito puede limitarse a sustituir por completo el método de la clase padre o a mejorarlo ya que en la llamada al método de la clase hija, esta clase hija internamente primero ejecuta el método de la clase padre, copiando su comportamiento, y luego ejecutar más órdenes mejorando el comportamiento haciéndolo más específico para la clase hija.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.