Sie sind auf Seite 1von 10

REPBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR PARA LA DEFENSA UNIVERSIDAD NACIONAL EXPERIMENTAL POLITCNICA DE LA FUERZA ARMADA

NACIONAL NCLEO CARACAS CTEDRA: DISEO DE SISTEMAS PROFESOR:ROSIRIS VELIZ NOVENO SEMESTRE SECCIN: B

Elaborado por:

Delgado Siharys, C.I: 18.315.091

Caracas, Junio del 2011.

POLIMORFISMO "una interfaz, mltiples mtodos"

La palabra polimorfismo proviene del griego y significa que posee varias formas diferentes. Este es uno de los conceptos esenciales de una programacin orientada a objetos. El polimorfismo se relaciona con los mtodos.

Es la propiedad que tienen los objetos de permitir invocar genricamente un comportamiento (mtodo) cuya implementacin ser delegada al objeto

correspondiente recin en tiempo de ejecucin:  Tiende a existir en las relaciones de herencia, pero no siempre es as.  La definicin del mtodo reside en la clase base.  La implementacin del mtodo reside en la clase derivada.  La invocacin es resuelta al momento de ejecucin. El Polimorfismo da idea de mltiples formas, y es en realidad la necesidad de dotar a nuestra clase de la posibilidad de que sus mtodos o propiedades se comporten de manera diferente dependiendo de parmetros.

En programacin orientada a objetos se denomina polimorfismo a la capacidad que tienen los objetos de una clase de responder al mismo mensaje o evento en funcin de los parmetros utilizados durante su invocacin. Un objeto polimrfico es una entidad que puede contener valores de diferentes tipos durante la ejecucin del programa.

En algunos lenguajes, el trmino polimorfismo es tambin conocido como 'Sobrecarga de parmetros' ya que las caractersticas de los objetos permiten aceptar

distintos parmetros para un mismo mtodo (diferentes implementaciones) generalmente con comportamientos distintos e independientes para cada una de ellas.

Tambinson dos mecanismos (Up-Casting, Down- Casting) relacionados que otorgan a la OOP una gran potencia frente a otros paradigmas de programacin, nicamente tienen sentido por la existencia de la herencia. El sentido del polimorfismo (Up-Casting) es realizar una generalizacin, olvidar los detalles concretos de uno o varios objetos de distintas clases y buscar un punto comn a todos ellos en un ancestro.

Una variable referencia es polimrfica cuando su tipo de declaracin no coincide con el tipo del objeto al que referencia:

Figura f1 = new Figura (Estndar, Rojo);


f1 es el tipo de figura (tipo esttico) f1 apunta a un objeto de tipo de Figura (tipodinmico)

Figura f2 = new Circulo (Estndar, Rojo);


f2 es el tipo de figura (tipo esttico) f2apunta a un objeto de tipo de Circulo (tipodinmico)

Up-casting : Interpretar un objeto de una clase derivada como del mismo tipo que la clase base.  No hace falta especificarlo Down-casting: Interpretar un objeto de una clase base como del mismo tipo que una clase derivada suya.  Se especifica precediendo al objeto a convertir con el nuevo tipo entre parntesis.

Se trata de la operacin inversa al polimorfismo (Up-Casting), denominada Down-Casting.Si el polimorfismo implica una generalizacin, el Down-Casting implica una especializacin. Al contrario que el Up-Casting, el Down-Casting no puede realizarse directamente mediante una conexin con una referencia de la clase del objeto.

Tras realizar una conexin polimorfa es frecuente la necesidad de volver a recuperar el objeto original, para acceder a sus operaciones propias.

El poder manipular un Objeto como si ste fuera de un tipo genrico otorga mayor flexibilidad al momento de programar con Objetos, el trmino Polimorfismo tambin es asociado con un concepto llamado Late-Binding (Ligamiento Tardo).

Por ejemplo:

Por un lado tenemos la clase base Transporte, que posee los mtodos Avanzar y Frenar. Por otro lado tenemos tres clases distintas derivadas de la clase Transporte, cada una de las cuales podr sobrescribir la implementacin de los mtodos Avanzar y Frenar para que su comportamiento sea ms especfico.

Ahora bien, como todas heredan de la misma clase base, las clases derivadas pueden ser tratadas genricamente. Esto quiere decir que podramos tener un array que almacene objetos de tipo Transporte, y recorrerlo luego para llamar al mtodo Avanzar de cada uno. De esta forma, en tiempo de codificacin es imposible saber a qu mtodo Avanzar se est llamando en realidad (al del Auto? Al del caballo? Al del transbordador?), sino que esta decisin es tomada en tiempo de ejecucin en base al tipo particular de objeto que est instanciado.

En pseudocdigo, esto se escribira de la siguiente manera:

Definir arrayTransportes (3) de tipo Transporte arrayTransportes(1) = nuevo Automvil() //Un automvil ES UN TIPO DE transporte arrayTransportes(2) = nuevo Transbordador() //Un Transbordador ES UN TIPO DE transporte arrayTransportes(3) = nuevo Caballo() //Un Caballo ES UN TIPO DE transporte

Por Cada (Transporte t en arrayTransportes) t.Avanzar() t.Frenar() Fin

El polimorfismo est presente cuando se enva un mensaje a un objeto del que no se sabe su tipo, ejecutndose el mtodo adecuado de acuerdo con su tipo. CLASIFICACIN

Se puede clasificar el polimorfismo en dos grandes clases: 1. Polimorfismo Dinmico(Polimorfismo Paramtrico)

Es aqul en el que el cdigo no incluye ningn tipo de especificacin sobre el tipo de datos sobre el que se trabaja. As, puede ser utilizado a todo tipo de datos compatible. 2. Polimorfismo Esttico(Polimorfismo Ad-Hoc)

Es aqul en el que los tipos a los que se aplica el polimorfismo deben ser explicitados y declarados uno por uno antes de poder ser utilizados. El polimorfismo dinmico unido a la herencia es lo que en ocasiones se conoce como programacin genrica. Tambin se clasifica en herencia por redefinicin de mtodos abstractos y por mtodo sobrecargado. El segundo hace referencia al mismo mtodo con diferentes parmetros, que incluye a su vez sobrecarga de operadores y coercin.

TIPOS

En general, hay tres tipos de polimorfismo: 1. Polimorfismo de sobrecarga

Ocurre cuando las funciones del mismo nombre existen, con funcionalidad similar, en clases que son completamente independientes una de otra (stas no tienen que ser clases secundarias de la clase objeto).

Por ejemplo:

La clase complex, la clase image y la clase link pueden todas tener la funcin "display". Esto significa que no necesitamos preocuparnos sobre el tipo de objeto con el que estamos trabajando si todo lo que deseamos es verlo en la pantalla.

Por lo tanto, el polimorfismo de sobrecarga nos permite definir operadores cuyos comportamientos varan de acuerdo a los parmetros que se les aplican. As es posible, por ejemplo, agregar el operador + y hacer que se comporte de manera distinta cuando est haciendo referencia a una operacin entre dos nmeros enteros (suma) o bien cuando se encuentra entre dos cadenas de caracteres (concatenacin). 2. Polimorfismo paramtrico(Polimorfismo de Plantillas)

Es la capacidad para definir varias funciones utilizando el mismo nombre, pero usando parmetros diferentes (nombre y/o tipo). El

polimorfismo paramtrico selecciona automticamente el mtodo correcto a aplicar en funcin del tipo de datos pasados en el parmetro Por ejemplo: Definir varios mtodos homnimos de addition() efectuando una suma de valores.

El mtodo intaddition(int,int) devolvera la suma de dos nmeros enteros. floataddition(float, float) devolvera la suma de dos flotantes. charaddition(char, char) dara por resultado la suma de dos caracteres definidos por el autor. Una signature es el nombre y tipo (esttico) que se da a los argumentos de una funcin. Por esto, una firma de mtodo determina qu elemento se va a llamar. 3. Polimorfismo de Inclusin (Polimorfismo Subtipado)

La habilidad para redefinir un mtodo en clases que se hereda de una clase base se llama especializacin. Por lo tanto, se puede llamar un mtodo de objeto sin tener que conocer su tipo intrnseco: esto es polimorfismo de subtipado. Permite no tomar en cuenta detalles de las clases especializadas de una familia de objetos, enmascarndolos con una interfaz comn (siendo esta la clase bsica).

Por ejemplo:

Se tiene un juego de ajedrez con los objetos rey, reina, alfil, caballo, torre y pen, cada uno heredando el objeto pieza.

El mtodo movimiento podra, usando polimorfismo de subtipado, hacer el movimiento correspondiente de acuerdo a la clase objeto que se llama. Esto permite al programa realizar el movimiento.de_pieza sin tener que verse conectado con cada tipo de pieza en particular. OBJETIVO  Objetivo: reutilizacin y flexibilidad.  Facilidad para adaptarse a cambios  Cmo se consigue?  Interfaces  Clases abstractas  Mtodos polimrficos  Implementacin de colecciones y mtodos genricos.  Permite cdigo independiente del tipo.  Fcil de escribir y entender.  Al aadir nuevos tipos:  No hay que reescribir cdigo  Programas extensibles Ejemplos:

ANIMAL FELINO LEON TIGRE GATO CANINO LOBO PERRO

Ahora bien, como todas las clases heredan de la misma clase base, las clases derivadas pueden ser tratadas genricamente, esto quiere decir: 1. En el ejemplo uno el gato que es un felino tambin puede saltar, correr, etc., como lo hace un perro que es un canino. 2. En el ejemplo dos el piano puede afinar as como lo puede hacer la guitarra, ambos son instrumentos, utilizando el mtodo de msica.

Das könnte Ihnen auch gefallen