POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de...

26
POLIMORFISMO "una interfaz, múltiples métodos".

Transcript of POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de...

Page 1: POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.2 POLIMORFISMO Indice Definición y caracteristicas.

POLIMORFISMO"una interfaz, múltiples métodos".

Page 2: POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.2 POLIMORFISMO Indice Definición y caracteristicas.

22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .2

POLIMORFISMOIndice

• Definición y caracteristicas• Objetivos.• SOBRRESCRITURA-SOBRECARGA• Clases y métodos abstractos• INTERFACES (herencia múltiple)• Subclase,Clase abstracta e Interface• Interface vs. Clase Abstracta • Ejemplo: (4)Project Musica (Instrumentos).

Page 3: POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.2 POLIMORFISMO Indice Definición y caracteristicas.

22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .3

POLIMORFISMODefinicion y características

Son dos mecanismos (up,downcasting) relacionados que otorgan a la OOP una gran potencia frente a otros paradigmas de programación

Únicamente tienen sentido por la existencia de la herencia

El sentido del polimorfismo (up-casting) es realizar una generalización, olvidar los detalles concretos de uno o varios objetos de distintas clases y buscar un punto común a todos ellos en un ancestro.

Page 4: POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.2 POLIMORFISMO Indice Definición y caracteristicas.

22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .4

POLIMORFISMODefinicion y características

Figura f1 = new Figura(“Estandar”, “Rojo”);

Figura f2 = new Circulo(“Verde”, 5.0);

Una variable referencia es polimórfica cuando su tipo de declaración no coincide con el tipo del objeto al que referencia:

Page 5: POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.2 POLIMORFISMO Indice Definición y caracteristicas.

22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .5

POLIMORFISMODefinicion y características

El polimorfismo esta presente cuando se envia un mensaje a un objeto del que no se sabe su tipo, ejecutánodse el metodo adecuado de acuerdo con su tipo.

Enlace dinamico: Se elige el metodo a ejecutar en tiempo de ejecucion, en funcion de la clase del objeto; Es la implementacion del polimorfismo.

Page 6: POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.2 POLIMORFISMO Indice Definición y caracteristicas.

22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .6

POLIMORFISMODefinicion y características

• Moldes de objetos(castings):• Realizan conversiones de tipo, no modifican al objeto,

solo su tipo.• Upcasting : Interpretar un objeto de una clase derivada

como del mismo tipo que la clase base.– No hace falta especificarlo

• Downcasting: 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 paréntesis.

Page 7: POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.2 POLIMORFISMO Indice Definición y caracteristicas.

22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .7

POLIMORFISMODefinicion y características

• Ejemplo upcasting polimorfismo

• (1)Project Polimorfismo,Polimorfismo2 (Mamifero).

Page 8: POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.2 POLIMORFISMO Indice Definición y caracteristicas.

22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .8

POLIMORFISMODefinicion y características

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

Se trata de la operación inversa al polimorfismo(upcasting), denominada downcasting.

Si el polimorfismo implica una generalización, el downcasting implica una especialización.

Al contrario que el upcasting, el downcasting no puede realizarse directamente mediante una conexión con una referencia de la clase del objeto.

Page 9: POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.2 POLIMORFISMO Indice Definición y caracteristicas.

22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .9

POLIMORFISMODefinicion y características

Utilizar instanceof para determinar si el objeto es de la clase esperada antes de realizar el casting.

• La operación getClass () de Object devuelve un objeto de la clase Class que permite obtener en tiempo de ejecución gran cantidad de información de la clase a la que pertenece el objeto. El atributo estático class de la clase también devuelve una referencia a este objeto

Page 10: POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.2 POLIMORFISMO Indice Definición y caracteristicas.

22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .10

POLIMORFISMOObjetivos

• Objetivo: reutilizacion y flexibilidad.

• Facilidad para adaptarse a cambios

• ¿Cómo se consigue?Interfaces

Clases abstractas

Métodos polimórficos

• Implementación de colecciones y métodos genéricos.

Page 11: POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.2 POLIMORFISMO Indice Definición y caracteristicas.

22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .11

POLIMORFISMOObjetivos

• Permite código independiente del tipo. Fácil de escribir y entender.

• Al añadir nuevos tipos:• No hay que reescribir código• Programas extensibles

Page 12: POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.2 POLIMORFISMO Indice Definición y caracteristicas.

22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .12

POLIMORFISMOObjetivos

ANIMAL

FELINO CANINO

LOBO PERROLEON TIGRE GATO

Page 13: POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.2 POLIMORFISMO Indice Definición y caracteristicas.

22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .13

POLIMORFISMOObjetivos

EJEMPLO DE COLECCIÓN GENÉRICA

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(); } }}

Page 14: POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.2 POLIMORFISMO Indice Definición y caracteristicas.

22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .14

POLIMORFISMOObjetivos

FIGURA

CUADRADO TRIANGULO CIRCULO

MATEMÁTICO

Page 15: POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.2 POLIMORFISMO Indice Definición y caracteristicas.

22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .15

POLIMORFISMOObjetivos

EJEMPLO DE MÉTODO GENÉRICO

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());

} }

Page 16: POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.2 POLIMORFISMO Indice Definición y caracteristicas.

22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .16

POLIMORFISMOSOBREESCRITURA-SOBRECARGA

• SOBREESCRITURA: La subclase reimplementa el método heredado (cambian el comportamiento).

• SOBRECARGA: Varias implementaciones del mismo método con distintos parámetros (cambio de interfaz). Muy habitual en constructores. – Es aquí donde realmente se aprecia los beneficios del polimorfismo.

– Sobrecargando el constructor conseguimos dotar a la clase de flexibilidad.

– Pero siempre debe quedar claro que tras la conexión polimorfa únicamente podemos acceder a las operaciones pertenecientes a la clase asociada a la referencia. El resto de operaciones del objeto no son accesibles a través de esta referencia

Page 17: POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.2 POLIMORFISMO Indice Definición y caracteristicas.

22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .17

POLIMORFISMOSOBRRESCRITURA-SOBRECARGA

//Sobrecarga de constructoresclass Box { double width; double height; double depth; //El siguiente es el constructor específico 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; }

Page 18: POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.2 POLIMORFISMO Indice Definición y caracteristicas.

22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .18

POLIMORFISMO Clases y métodos abstractos

• Clases abastractas: A menudo existen clases que sirven para definir un tipo genérico pero que no tiene sentido instanciar (crear objetos de ella).

• Métodos abstractos: Un método abstracto significa que tiene que ser sobrescrito. No está implementado.

• Una clase con uno o varios métodos abstractos tiene

que ser declarada abstracta. • No obstante una clase abstracta no tiene porque tener

métodos abstractos.

Page 19: POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.2 POLIMORFISMO Indice Definición y caracteristicas.

22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .19

POLIMORFISMOINTERFACES (herencia múltiple)

• Los interfaces en Java nos solucionan en parte la no existencia de la herencia múltiple.

• Los interfaces son un tipo de clase especial que no implementa ninguno de sus métodos. Todos son abstractos. Por tanto no se pueden instanciar.

• De los interfaces también se hereda, aunque se Suele decir implementa. Y se realiza mediante la keyword: implements.

• Si una clase que hereda de un interface, no implementa todos los métodos de este, deberá ser definida como

abstracta.

Page 20: POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.2 POLIMORFISMO Indice Definición y caracteristicas.

22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .20

POLIMORFISMOINTERFACES (herencia múltiple)

• ¿Para qué se utiliza?

• Para permitir la herencia múltiple (ya que la herencia en Java sólo permite heredar de una sola clase).

• Definen un comportamiento (o funcionalidad) genérico, ignorando los aspectos relacionados con su implementación.

• Las interfaces que implementa una clase se comportan igual que las superclases en lo que respecta al uso del polimorfismo.

Page 21: POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.2 POLIMORFISMO Indice Definición y caracteristicas.

22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .21

POLIMORFISMOINTERFACES (herencia múltiple)

• (3)Project HerenciaMultiple2 (Anfibio).

Page 22: POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.2 POLIMORFISMO Indice Definición y caracteristicas.

22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .22

POLIMORFISMOSubclase,Clase abstracta e Interface

• Subclase: Necesitemos hacer una especialización de la superclase mediante sobreescritura o añadiendo nuevos métodos.

• Clase abstracta: Queremos definir un grupo genérico de clases y

además tengamos algunos métodos implementados que reutilizar.

• Interface: Queremos definir un grupo genérico de clases y no tengamos métodos implementados que reutilizar. O cuando nos veamos forzados por la falta de herencia múltiple en Java.

Page 23: POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.2 POLIMORFISMO Indice Definición y caracteristicas.

22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .23

POLIMORFISMO

Interface vs. Clase Abstracta

• Un interface no puede implementar ningún método. • Un interface no forma parte de la jerarquía de clases.

Clases dispares pueden implementar el mismo interface.

• Una clase puede implementar n interfaces pero solo una clase.

• El objetivo de un método abstracto es forzar una interfaz (API) pero no una implementación.

Page 24: POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.2 POLIMORFISMO Indice Definición y caracteristicas.

22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .24

POLIMORFISMOInterface vs. Clase Abstracta

• Haremos un interface cuando queramos definir un grupo genérico de clases y no tengamos métodos implementados que reutilizar. O cuando nos veamos forzados por la falta de herencia múltiple en Java.

Page 25: POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.2 POLIMORFISMO Indice Definición y caracteristicas.

22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .25

POLIMORFISMOEjemplos de polimorfismo

• (4)Project Musica (Instrumentos).

Page 26: POLIMORFISMO "una interfaz, múltiples métodos".. 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.2 POLIMORFISMO Indice Definición y caracteristicas.

22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .26

DIAGRAMA DE CLASES: MUSICA