Vous êtes sur la page 1sur 10

Polimorfismo

Programacin Orientada a Objeto

Pedro A. Rodrguez
Programacin Orientada a Objetos (ICInf)
Departamento de Sistemas de Informacin
Facultad de Ciencias Empresariales
Universidad del Bio-Bio

Polimorfismo

En

programacin orientada a objetos el


polimorfismo corresponde a la capacidad que
tienen los objetos a responder al mismo mensaje
o evento en funcin de los parmetros utilizados
durante su invocacin.

Capacidad de una entidad de referenciar distintos

elementos en distintos instantes de tiempo.

Cmo se implementa el polimorfismo

Sobrecarga.
Sobreescritura.
Variables polimrficas.
Templates (plantillas).

Sobre carga de mtodos (overloading)

Dentro de una clase, un mtodo puede tener

mas de una definicin, implementacin y


comportamiento. La diferencia se hace a nivel de
los parmetros que recibe el mtodo y su cdigo.
Los mtodos sobrecargados se distinguen

generalmente en tiempo de compilacin por


tener distintos parmetros de entrada y/o
salida.

Sobreescritura (overriding)
O polimorfismo de inclusin. Tipo especial de

sobrecarga que ocurre dentro de relaciones de


herencia.
Una operacin tiene dos mtodos con implementaciones

distintas en la superclase y en la subclase.


En este caso la signatura es la misma pero los mtodos se

encuentran en dos clases distintas relacionadas mediante


herencia.

Variables polimrficas
Tambin conocido como enlace dinmico.
O polimorfismo de asignacin: variable que se declara

como de un tipo pero que referencia en realidad un valor


de un tipo distinto.
Cuando

una variable polimrfica se utiliza como


argumento, la funcin resultante se dice que exhibe un
polimorfismo puro.

Ejemplo:
Vehiculo v = new Camioneta();
Lista l = new LinkedList();

Templates (plantillas)
Forma de crear herramientas de propsito genrico (clases,

mtodos) y especializarlas para para casos particulares.


Ejemplos:

template <class T>


Lista<T>
Lista<Nodo>
Lista<Lista>
Lista<Vehiculos>
Lista<int>

Tipos de enlace
Enlace esttico. O enlace temprano (early binding), enlace entre
la variable y el objeto se hace en tiempo de compilacin.
Enlace dinmico: O enlace tardo (late binding), consiste en que
los objetos adoptan su "forma real" en tiempo de ejecucin, sin
existir un enlace previo (esttico).
Una variable tiene un tipo esttico y un tipo dinmico.
Tipo esttico: corresponde al tipo con el cual la variable fue
declarada.
Tipo dinmico: es el tipo que adopta una variable en tiempo
de ejecucin despus de una asignacin.
Ejemplo:
Vehiculo v; // Vehiculo es el tipo esttico
v = new Camioneta(); // Camioneta es su tipo dinmico.

Enlace Dinmico
El trmino enlace dinmico, se refiere a la conexin entre una
llamada a una funcin y el cdigo real ejecutado, como
resultado de esa llamada.
En general, los lenguajes de programacin presentan dos tipos
de enlaces: esttico y dinmico.
Java slo implementa enlace dinmico (C++ permite tambin
enlace esttico).
Las clases derivadas o subclases pueden realizar una
implementacin distinta de una operacin que heredan desde
una superclase.
En Java, todos los mtodos son virtuales, por tanto, todos los
mtodos pueden ser redefinidos en las subclases (en esto
tambin es diferente a C++).

La jerarqua de clases Animal


Ejemplo: todo animal duerme, pero cada uno lo hace de forma
distinta.

Animal

dormir)()
{
}

Dormir()

Leon

Oso

Caballo

Dormir()

Dormir()

Dormir()

dormir)()
{
Sobre el vientre
}

dormir)()
{
Sobre la espalda
}

dormir)()
{
Parado
}

Vous aimerez peut-être aussi