Posteado por: JuanFran | enero 5, 2010

Clases heredadas…. ejemplo con animalitos!

Título más rocambolesco no podría ser. Aprovechando lo bien que esta diseñado el lenguaje JAVA, voy a dar una mini-clase de eso que se suele enseñar en asignaturas claves de programación de las titulaciones universitarias, las cuales muchos alumnos dicen que no sirven pa ná….

Como todos sabréis, JAVA es un lenguaje enfocado a la POO (un teletubbie, pero para nosotroso será la programación orientada a objetos, y a partir de ahora, POO, que lo otro es más largo) por lo que me va a ser muy útil para dar las explicaciones sobre los temas que vamos a abarcar con este lenguaje. Se podría hacer también con C++, pero este  me lo reservo para cuando comienze el curso avanzado y os muestre algo de QT 😆

Voy a obviar un poco la teoría, y partiré de la base de que ustedes ya sabeis los principios básicos sobre la POO, el concepto de clase y objeto, atributos o miembros, etc etc. Vamos entonces con la HERENCIA (si voy rápido paradme xD).

Con la explicación burra y sencilla, se podría decir que yo soy un humano (aún por demostrar). Al ser un humano, esto me engloba dentro del grupo de los animales (aquí ya es más demostrable), y más concretamente, dentro de los mamíferos. ¿Qué queremos demostrar? pués que dentro del grupo de los animales, están los mamíferos, y dentro de los mamíferos, los seres humanos. Los animales, no existen en la realidad como entidad, o sea, no son instanciables, por lo que diremos que son una clase abstracta. Los animales también podemos deducir que tienen características y propiedades comunes a todos los animales, por lo que se define la clase animales como una de las clases a heredar a las demás subclases de animales (en este caso, mamíferos). Funcionalidades como comer, descansar, desplazarse, etc las tendran todos los animales, pero cada animal lo hace a su manera. Esto nos dice que cada funcionalidad será propia de cada animal.

Sigámos profundizando. Siguiendo la cadena, tenemos que los seres humanos somos mamíferos… nuestra siguiente clase será esa misma: mamíferos.

Mamíferos hereda directamente de  la clase animal, así que contendrá las mismas propiedades que dicha clase. Como los mamíferos tampoco son instanciables (en la realidad no existen mamíferos como tales), también lo definiremos como clase abstracta:

Las propiedades de animal, aunque no sean visibles en la clase mamífero, están ahí.

La última clase a implementar , sería la de ser humano. Le llamaremos clase Persona. Como una persona si es instanciable (por ejemplo, Manuel Sillín Ventanuco -nombre para evitar casualidades con personas reales- ) es una persona física, existe como tal. Decímos que Manuel Sillín Ventanuco (clase persona) es una instancia de la clase Persona. Implementando quedaría algo así:

Vemos que Persona hereda de la clase Mamiferos, y esta hereda de la clase Animal. La conclusión que se obtiene es que Persona tiene todas las caracteristicas de la clase Animal y Mamifero. Como Persona es una clase final, también podemos decir que Persona debe implementar todos los métodos abstractos de las clases superiores. Los métodos heredados de las clases superiores se denotan con el @Override delante de cada función. Notar que no podemos acceder a los atributos como numeroPelos de la clase Mamifero o edad de la clase Animal. Se debe a que hemos definido los atributos como privados. Si quisieramos acceder a dichos atributos desde persona se recomienda que se declaren como protected en vez de privados, o dejarlos privados e implementar métodos no abstractos en las clases padres para acceder a dicho atributo desde Persona.

Se puede observar que Persona implementa los métodos de las clases padre y también implementa los suyos propios.

Veamos en código un pequeño ejemplo con todo esto que se ha explicado:

Muy bien, pues esta ha sido la lección rápida pero efectiva sobre la herencia de clases, el próximo post seguramente lo haga sobre interfaces de clases, que molan mucho y además son también muy útiles. Cuidense!

Anuncios

Responses

  1. Muy buen post. Queda claro para quienes quieren entender las clases abstractas.


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Categorías

A %d blogueros les gusta esto: