Programación Orientada a Objetos – Sub Clases

Después de un largo tiempo, volvemos a las andadas con la POO.
Este post es parte de una serie de artículos sobre POO y viene a continuación de Clases Dinámicas y Clases Estáticas

Si revisan nuestro segundo post de POO: Características de la P.O.O., recordarán que, entre ellas, comentábamos acerca de la herencia, diciendo que:

La herencia es la capacidad que tiene una clase de derivar las propiedades y métodos de otra.

Dicho de otra forma. La herencia se asegura de que una clase, al derivar de otra, tenga las mismas cualidades de la clase de la que proviene, además de las que sean propias de la misma clase.
Ocurre lo mismo que con los seres vivos, los animales heredamos de nuestros padres características como tipo, color de piel, capacidades para desarrollar ciertas destrezas, etc. Sin embargo, también tenemos cualidades que nos son propias y que nuestros padres no poseen, como la propia identidad, los gustos propios, etc.
En la POO, una clase que deriva de otra es conocida como sub-clase, y aquella de la que proviene se conoce como super-clase. Viéndolo de un modo gráfico, sería algo como esto:

Relaciones Super clases y Sub Clases

En principio, tenemos una super clase llamada Animal, que contiene todos los elementos generales que tiene todo animal (como alimentación, piel, reproducción, etc.). De esta super-clase, se derivan toda una serie de clases, que corresponden a los distintos tipos de animales que existen. Todos ellos tienen una conexión directa de la clase Animal, puesto que provienen de ella, son sub-clases de Animal.
Sin embargo, hay dos cosas que debemos tener en cuenta: 1. No todas comparten las mismas características de la clase animal (así Hombre tiene boca, The Parrot™ tiene pico, mientras Perro y Gato tienen hocico). 2. A pesar de que tienen relación indirecta (porque todas pertenecen a la misma super-clase), eso no implica que deba haber una relación directa entre las sub-clases. Es lo mismo que ocurre con nuestros padres y hermanos.

Super Clase y Sub Clase:

Una cosa que debemos tener clara a la hora de meternos en las lides de la herencia es que no existe propiamente un tipo de clase llamado sub-clase o super-clase. Estos conceptos se utilizan para definir la relación que existe entre dos clases concretas. Una sub-clase es simplemente la que hereda de otra clase, a la que llamaremos super-clase; dicho de otro modo, la super-clase es la clase madre y la sub clase la clase hija. Igual como ocurre en el resto de las relaciones, nuestra sub-clase puede ser al mismo tiempo una super-clase para otras clases, y así sucesivamente. Esto es algo que veremos muy comúnmente en la POO donde, por ejemplo, todas las clases derivan, en algún punto de la clase Object.

¿Para qué Sirven las Sub-Clases?

Si no ha quedado claro hasta ahora, vamos a repetirlo de modo sencillo y directo. Crear sub-clases nos permite crear una nueva clase personalizada, tomando los elementos que necesitamos de una clase ya creada. De este modo, no tenemos que volver a escribir todas las propiedades, métodos y eventos que ya tiene la clase que hemos tomado como base, sino que podemos utilizarlos directamente, reinterpretarlos o incluso ocultarlos para que no puedan ser accedidos desde afuera de la clase. Por ejemplo, quizá te interese que pueda cambiarse la altura de la instancia, pero no quieres que pueda cambiarse el ancho, aunque un uso más común es darle a nuestra nueva clase ciertas características que no existen en la super-clase, manteniendo las que ya tenemos en ella, o también para hacer ciertos cambios en la super-clase. Es lo que se conoce como extender una clase y es por ello que la palabra para crear una sub-clase es extends.

Wow! esto ha sido largo. Así que dejaremos hasta acá esta parte y en el siguiente post hablaremos de cómo crear una sub-clase y otras cosas importantes como sobre-escritura de métodos y cómo acceder a la super clase desde una sub-clase.
Tags Technorati: , , ,


5 respuestas a “Programación Orientada a Objetos – Sub Clases

  1. Muy buenas las explicaciones y fácil de entender. Lo que todos quisieramos tener en las clases de programación (entendimiento).

    Sigan con los artículos de POO que nos salvan la vida ;P

Replica a LORETTO Cancelar la respuesta