jueves, 23 de octubre de 2008

2. Clasificación




Se puede clasificar el polimorfismo en dos grandes clases:
2.1 Polimorfismo dinámico (o polimorfismo paramétrico) es aquél en el que el código no incluye ningún tipo de especificación sobre el tipo de datos sobre el que se trabaja. Así, puede ser utilizado a todo tipo de datos compatible.
Conceptos iníciales:
Un identificador o variable es simplemente un nombre
Un valor describe los contenidos actuales de la memoria asociados con una variable
Existe situaciones en las que el tipo (clase) de la variable no concuerdan con el tipo (clase) que
Contiene el valor. La clase de la variable se conoce como clase estática y la clase del valor se conoce como la clase dinámica

Visión inicial de polimorfismo
Hemos dicho que tenemos:
Tipo estático de una variable: es el tipo que posee una determinada referencia deducible del texto del programa y conocido en tiempo de compilación.
Tipo dinámico de una referencia: es el tipo de esa referencia en tiempo de ejecución.
Cuando hay polimorfismo ocurre que solo hay un tipo estático y varios dinámicos.

Ejemplo:
Object a;
a = new Integer (5);
/* Tipo estático: Object
Tipo dinámico: Integer */
a = new Double (5.0);
/* Tipo estático: Object
Tipo dinámico: Double */

Ejemplo (continuación): Es muy importante que exista una relación de herencia entre los tipos estáticos y dinámicos, de forma que el estático sea una superclase de los dinámicos.



Ejemplo:
Double elemento;
elemento = new Double (5.0);
elemento = new Integer (5);
/* ¡¡¡Falla porque un Integer no es un
Double!!! */

El polimorfismo dinámico me permite tener varios códigos para una misma signatura y que el código que se ejecute al final depende del contexto en el que me encuentre.
2.2 Polimorfismo estático (o polimorfismo ad hoc) es aquél 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 dinámico unido a la herencia es lo que en ocasiones se conoce como programación genérica.
También se clasifica en herencia por redefinición de métodos abstractos y por método sobrecargado. El segundo hace referencia al mismo método con diferentes parámetros.
Otra clasificación agrupa los polimorfismo en dos tipos: Ad-Hoc que incluye a su vez sobrecarga de operadores y coerción, Universal (inclusión o controlado por la herencia, paramétrico o genericidad). En el momento de emplear estas operaciones, el lenguaje es capaz de ejecutar el código
Correspondiente dependiendo de la clase del objeto sobre el que se ejecuta la operación. Esto permite definir un interfaz común, un aspecto externo idéntico, para una serie de clases.

1 comentario:

Unknown dijo...

Bien ahi con la exposicion y las fotos

saludos.

Jorge...