Академический Документы
Профессиональный Документы
Культура Документы
POLIMORFISMO
"una interfaz, mltiples
"una interfaz, mltiples
mtodos".
mtodos".
20/02/2007 20/02/2007 Polimorfismo Polimorfismo 2 2
POLIMORFISMO
POLIMORFISMO
Indice
Indice
Definicin y
Definicin y
caracteristicas
caracteristicas
Objetivos.
Objetivos.
SOBRRESCRITURA
SOBRRESCRITURA
-
-
SOBRECARGA
SOBRECARGA
Clases y mtodos abstractos
Clases y mtodos abstractos
INTERFACES (herencia mltiple)
INTERFACES (herencia mltiple)
Subclase,Clase
Subclase,Clase
abstracta e
abstracta e
Interface
Interface
Interface
Interface
vs. Clase Abstracta
vs. Clase Abstracta
Ejemplo: (4)
Ejemplo: (4)
Project
Project
Musica
Musica
(Instrumentos).
(Instrumentos).
20/02/2007 20/02/2007 Polimorfismo Polimorfismo 3 3
POLIMORFISMO
POLIMORFISMO
Definicion
Definicion
y caractersticas
y caractersticas
Son dos mecanismos (up,downcasting)
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.
20/02/2007 20/02/2007 Polimorfismo Polimorfismo 4 4
POLIMORFISMO
POLIMORFISMO
Definicion
Definicion
y caractersticas
y caractersticas
Figura f1 = new Figura(Estandar, Rojo);
Figura f2 = new Circulo(Verde, 5.0);
Una variable referencia es polimrfica cuando
su tipo de declaracin no coincide con el tipo del
objeto al que referencia:
20/02/2007 20/02/2007 Polimorfismo Polimorfismo 5 5
POLIMORFISMO
POLIMORFISMO
Definicion
Definicion
y caractersticas
y caractersticas
El polimorfismo esta presente cuando se
El polimorfismo esta presente cuando se
envia
envia
un
un
mensaje a un objeto del que no se sabe su tipo,
mensaje a un objeto del que no se sabe su tipo,
ejecutndose el mtodo adecuado de acuerdo con su
ejecutndose el mtodo adecuado de acuerdo con su
tipo.
tipo.
Enlace dinmico: Se elige el mtodo a ejecutar en
Enlace dinmico: Se elige el mtodo a ejecutar en
tiempo de ejecucin, en funcin de la clase del objeto;
tiempo de ejecucin, en funcin de la clase del objeto;
Es la implementacin del polimorfismo.
Es la implementacin del polimorfismo.
20/02/2007 20/02/2007 Polimorfismo Polimorfismo 6 6
POLIMORFISMO
POLIMORFISMO
Definicion
Definicion
y caractersticas
y caractersticas
Moldes de
Moldes de
objetos(castings
objetos(castings
):
):
Realizan conversiones de tipo, no modifican al objeto,
Realizan conversiones de tipo, no modifican al objeto,
solo su tipo.
solo su tipo.
Upcasting
Upcasting
: Interpretar un objeto de una clase derivada
: Interpretar un objeto de una clase derivada
como del mismo tipo que la clase base.
como del mismo tipo que la clase base.
No hace falta especificarlo No hace falta especificarlo
Downcasting
Downcasting
: Interpretar un objeto de una clase base
: Interpretar un objeto de una clase base
como del mismo tipo que una clase derivada suya.
como del mismo tipo que una clase derivada suya.
Se especifica precediendo al objeto a convertir con el nuevo tip Se especifica precediendo al objeto a convertir con el nuevo tipo o
entre parntesis. entre parntesis.
20/02/2007 20/02/2007 Polimorfismo Polimorfismo 7 7
POLIMORFISMO
POLIMORFISMO
Definicion
Definicion
y caractersticas
y caractersticas
Ejemplo
Ejemplo
upcasting
upcasting
polimorfismo
polimorfismo
(1)
(1)
Project
Project
Polimorfismo,Polimorfismo2
Polimorfismo,Polimorfismo2
(
(
Mamifero
Mamifero
).
).
20/02/2007 20/02/2007 Polimorfismo Polimorfismo 8 8
POLIMORFISMO
POLIMORFISMO
Definicin y caractersticas
Definicin y caractersticas
Tras realizar una conexin polimorfa es frecuente la necesidad d Tras realizar una conexin polimorfa es frecuente la necesidad de e
volver a recuperar el objeto original, para acceder a sus volver a recuperar el objeto original, para acceder a sus
operaciones propias. operaciones propias.
Se trata de la operacin inversa al Se trata de la operacin inversa al polimorfismo(upcasting polimorfismo(upcasting), ),
denominada denominada downcasting downcasting. .
Si el polimorfismo implica una generalizacin, el Si el polimorfismo implica una generalizacin, el downcasting downcasting
implica una especializacin. implica una especializacin.
Al contrario que el Al contrario que el upcasting upcasting, el , el downcasting downcasting no puede realizarse no puede realizarse
directamente mediante una conexin con una referencia de la clas directamente mediante una conexin con una referencia de la clase e
del objeto. del objeto.
20/02/2007 20/02/2007 Polimorfismo Polimorfismo 9 9
POLIMORFISMO
POLIMORFISMO
Definicin y caractersticas
Definicin y caractersticas
Utilizar
Utilizar
instanceof
instanceof
para determinar si el objeto es de la
para determinar si el objeto es de la
clase esperada antes de realizar el
clase esperada antes de realizar el
casting
casting
.
.
La operacin
La operacin
getClass
getClass
() de
() de
Object
Object
devuelve un objeto
devuelve un objeto
de la clase
de la clase
Class
Class
que permite obtener en tiempo de
que permite obtener en tiempo de
ejecucin gran cantidad de informacin de la clase a la
ejecucin gran cantidad de informacin de la clase a la
que pertenece el objeto. El atributo esttico
que pertenece el objeto. El atributo esttico
class
class
de la
de la
clase tambin devuelve una referencia a este objeto
clase tambin devuelve una referencia a este objeto
20/02/2007 20/02/2007 Polimorfismo Polimorfismo 10 10
POLIMORFISMO
POLIMORFISMO
Objetivos
Objetivos
Objetivo:
Objetivo:
reutilizacion
reutilizacion
y flexibilidad.
y flexibilidad.
Cmo se consigue?
Cmo se consigue?
Interfaces
Interfaces
Clases abstractas
Clases abstractas
Mtodos polimrficos
Mtodos polimrficos
Programas extensibles
Programas extensibles
20/02/2007 20/02/2007 Polimorfismo Polimorfismo 12 12
POLIMORFISMO
POLIMORFISMO
Objetivos
Objetivos
ANIMAL
FELINO CANINO
LOBO PERRO LEON TIGRE GATO
20/02/2007 20/02/2007 Polimorfismo Polimorfismo 13 13
POLIMORFISMO
POLIMORFISMO
Objetivos
Objetivos
EJEMPLO DE COLECCIN GENRICA
public class TestPolimorfismo{
public static void main(String[] args) {
Animal[] animales = new Animal[4];
animales[0] = new Lobo();
animales[1] = new Perro();
animales[2] = new Leon();
animales[3] = new Tigre();
for(int i=0; i<animales.length; i++) {
animales[i].dormir();
animales[i].comer();
}
}
}
20/02/2007 20/02/2007 Polimorfismo Polimorfismo 14 14
POLIMORFISMO
POLIMORFISMO
Objetivos
Objetivos
FIGURA
CUADRADO TRIANGULO CIRCULO
MATEMTICO
20/02/2007 20/02/2007 Polimorfismo Polimorfismo 15 15
POLIMORFISMO
POLIMORFISMO
Objetivos
Objetivos
EJEMPLO DE MTODO GENRICO
public class Matematico{
public double calcularArea(Figura param) {
return param.calcularArea();
}
}
public class TestPolimorfismo {
public static void main(String[] args)
{
Matematico m = new Matematico();
m.calcularArea(new Circulo());
m.calcularArea(new Triangulo());
}
}
20/02/2007 20/02/2007 Polimorfismo Polimorfismo 16 16
POLIMORFISMO
POLIMORFISMO
SOBREESCRITURA
SOBREESCRITURA
-
-
SOBRECARGA
SOBRECARGA
SOBREESCRITURA: La subclase
SOBREESCRITURA: La subclase
reimplementa
reimplementa
el
el
mtodo heredado (cambian el comportamiento).
mtodo heredado (cambian el comportamiento).
SOBRECARGA: Varias implementaciones del mismo
SOBRECARGA: Varias implementaciones del mismo
mtodo con distintos parmetros (cambio de interfaz).
mtodo con distintos parmetros (cambio de interfaz).
Muy habitual en
Muy habitual en
constructores
constructores
.
.
Es aqu donde realmente se aprecia los beneficios del polimorfis Es aqu donde realmente se aprecia los beneficios del polimorfismo. mo.
Sobrecargando el constructor conseguimos dotar a la clase de Sobrecargando el constructor conseguimos dotar a la clase de
flexibilidad. flexibilidad.
Pero siempre debe quedar claro que tras la conexin polimorfa Pero siempre debe quedar claro que tras la conexin polimorfa
nicamente podemos acceder a las operaciones pertenecientes a la nicamente podemos acceder a las operaciones pertenecientes a la
clase asociada a la referencia. El resto de operaciones del obje clase asociada a la referencia. El resto de operaciones del objeto no to no
son accesibles a travs de esta referencia son accesibles a travs de esta referencia
20/02/2007 20/02/2007 Polimorfismo Polimorfismo 17 17
POLIMORFISMO
POLIMORFISMO
SOBRRESCRITURA
SOBRRESCRITURA
-
-
SOBRECARGA
SOBRECARGA
//Sobrecarga de constructores
class Box {
double width;
double height;
double depth;
//El siguiente es el constructor especfico
Box(double w, double h, double d) {
width = w; height = h; depth = d;
}
Box () {
width = height = depth = -1
//-1 indica volumen no existente
}
//Cubo,entonces, por qu introducir 3 valores?
Box (double valor) {
width = height = depth = valor;
}
double volume() {
return width * height * depth;
}
20/02/2007 20/02/2007 Polimorfismo Polimorfismo 18 18
POLIMORFISMO
POLIMORFISMO
Clases y mtodos abstractos
Clases y mtodos abstractos
Clases
Clases
abstractas
abstractas
:
:
A menudo existen clases que
A menudo existen clases que
sirven para definir un tipo genrico pero que no
sirven para definir un tipo genrico pero que no
tiene sentido
tiene sentido
instanciar
instanciar
(crear objetos de ella).
(crear objetos de ella).
Mtodos abstractos:
Mtodos abstractos:
Un mtodo abstracto
Un mtodo abstracto
significa que tiene que ser sobrescrito. No est
significa que tiene que ser sobrescrito. No est
implementado.
implementado.
(4)
(4)
Project
Project
Musica
Musica
(Instrumentos).
(Instrumentos).
20/02/2007 20/02/2007 Polimorfismo Polimorfismo 26 26
DIAGRAMA DE CLASES: MUSICA