Вы находитесь на странице: 1из 2

Conceptos avanzados de la POO

Polimorfismo
Este concepto se expresa a menudo mediante la frase una interfaz, mltiples mtodos. Esto significa que es posible disear una interfaz genrica para un grupo de actividades relacionadas, lo cual ayuda a reducir la complejidad permitiendo que la misma interfaz sea usada para especificar una clase general de acciones. Por ejemplo, si consideramos el sentido del olfato de un perro, podemos decir que es polimrfico, pues si olfatea a un gato, ladrar y correr detrs de l; pero si olfatea comida, producir saliva y se acercar hacia su plato. Entonces, el mismo sentido del olfato est funcionando en ambas situaciones. La diferencia est en lo que el perro huele, es decir, el tipo de elemento (o tipo de dato si hablamos de programacin) sobre el que opera el olfato del perro. Botella: Puede contener agua natural, refresco, aceite, etc. pero sigue siendo una botella. Del griego muchas formas, es una caracterstica que permite que una interfaz sea utilizada por una clase general de acciones. La accin especfica queda determinada por la naturaleza exacta de la situacin. Consideremos una pila, que es una lista en la que el ltimo elemento que entra, es el primero que sale, como por ejemplo, si tenemos una pila de platos, para quitar el de hasta abajo (que fue el primero que se coloc), hay que quitar antes todos los que tiene encima, empezando por el que se encuentra hasta arriba (que fue el ltimo que se puso en la pila). Supongamos que sobre una misma mesa, colocamos tres pilas distintas: una de libros, una de platos y otra de cajas de zapatos. Aunque cada pila se forme de artculos distintos, su naturaleza sigue siendo la de una pila y la siguen rigiendo las mismas reglas, la principal de ellas: que el ltimo elemento que se coloc, ser el primero en quitarse. Asimismo, podramos tambin tener un programa en el que utilizramos tres estructuras de tipo pila. Una para nmeros enteros, otra para nmeros decimales y la ltima para caracteres. El algoritmo que implementara cada pila sera el mismo, sin importar que los datos almacenados sean de diferentes tipos.

Ejercicio: Listar dos cosas de la vida cotidiana a las que se les pueda dar un sentido polimrfico.

Clases Abstractas
Cuando se quiere definir una superclase en la que se declare la estructura de una determinada abstraccin sin implementar completamente cada mtodo, es decir, en la que slo se defina una forma generalizada que ser compartida por todas las subclases, dejando que cada una complete los detalles necesarios. Una clase de este tipo determina la naturaleza de los mtodos que las subclases deben implementar. Un caso en el que se puede producir esta situacin es aquel en que una superclase no es capaz de crear una implementacin de un mtodo que tenga un significado completo. Esta situacin se puede gestionar de dos formas:

Presentar un mensaje de aviso, lo cual no es normalmente lo ms adecuado. Definir mtodos que deban ser sobrescritos por la subclase para tener un significado completo.

Por su parte, la solucin que da Java a este problema, son los mtodos abstractos. Se puede precisar que las subclases sobrescriban ciertos mtodos especificando el modificador del tipo abstract. Se suele hacer referencia a estos mtodos como mtodos de responsabilidad de la subclase, ya que no estn implementados especficamente en la superclase. As, la subclase debe sobrescribirlos, ya que no se puede usar la versin de la superclase. Para declarar un mtodo abstracto, se utiliza la expresin general: abstract tipo-nombre(lista_de_parmetros); Como puede observarse, este mtodo no tiene cuerpo. Cualquier clase que contenga uno o ms mtodos abstractos, debe ser declarada abstracta. Para declarar una clase abstracta, se usa la palabra clave abstract delante de la palabra clave class en el comienzo de la declaracin de la clase. No puede haber objetos de clase abstracta, es decir, no se pueden crear instancias de dichas clases directamente con el operador new. Tales objetos no tendran ninguna utilidad, ya que una clase abstracta no est completamente definida. Tampoco se pueden declarar constructores abstractos o mtodos estticos abstractos.

Вам также может понравиться