0
POLIMORFISMO
"una interfaz, múltiples
métodos".
POLIMORFISMO
Indice
Definición y caracteristicas
Objetivos.
SOBRRESCRITURA-SOBRECARGA
Clases y métodos abstractos
INTERFAC...
POLIMORFISMO
Definicion y características
Son dos mecanismos (up,downcasting)
relacionados que otorgan a la OOP una gran
p...
POLIMORFISMO
Definicion y características
Una variable referencia es polimórfica cuando
su tipo de declaración no coincide...
POLIMORFISMO
Definicion y características
El polimorfismo esta presente cuando se envia un
mensaje a un objeto del que no ...
POLIMORFISMO
Definicion y características
Moldes de objetos(castings):
Realizan conversiones de tipo, no modifican al obje...
POLIMORFISMO
Definicion y características

Ejemplo upcasting polimorfismo
(1)Project Polimorfismo,Polimorfismo2
(Mamifero)...
POLIMORFISMO
Definición y características
Tras realizar una conexión polimorfa es frecuente la necesidad de
volver a recup...
POLIMORFISMO
Definición y características
Utilizar instanceof para determinar si el objeto es de la
clase esperada antes d...
POLIMORFISMO
Objetivos

Objetivo: reutilizacion y flexibilidad.
Facilidad para adaptarse a cambios
¿Cómo se consigue?
Inte...
POLIMORFISMO
Objetivos
Permite código independiente del tipo.
Fácil de escribir y entender.

Al añadir nuevos tipos:
• No ...
POLIMORFISMO
Objetivos

ANIMAL
FELINO
LEON

20/02/2007

TIGRE

CANINO
GATO

Polimorfismo

LOBO

PERRO

12
POLIMORFISMO
Objetivos
EJEMPLO DE COLECCIÓN GENÉRICA
public class TestPolimorfismo{
public static void main(String[] args)...
POLIMORFISMO
Objetivos
MATEMÁTICO

FIGURA
CUADRADO

20/02/2007

TRIANGULO

CIRCULO

Polimorfismo

14
POLIMORFISMO
Objetivos
EJEMPLO DE MÉTODO GENÉRICO
public class Matematico{
public double calcularArea(Figura param) {
retu...
POLIMORFISMO
SOBREESCRITURA-SOBRECARGA
SOBREESCRITURA: La subclase reimplementa el
método heredado (cambian el comportamie...
POLIMORFISMO
SOBRRESCRITURA-SOBRECARGA
//Sobrecarga de constructores
class Box {
double width;
double height;
double depth...
POLIMORFISMO
Clases y métodos abstractos
Clases abstractas: A menudo existen clases que
sirven para definir un tipo genéri...
POLIMORFISMO
INTERFACES (herencia múltiple)
Los interfaces en Java nos solucionan en parte la no
existencia de la herencia...
POLIMORFISMO
INTERFACES (herencia múltiple)
¿Para qué se utiliza?
Para permitir la herencia múltiple (ya que la herencia e...
POLIMORFISMO
INTERFACES (herencia múltiple)
(3)Project HerenciaMultiple2 (Anfibio).

20/02/2007

Polimorfismo

21
POLIMORFISMO
Subclase,Clase abstracta e Interface
Subclase: Necesitemos hacer una especialización de la
superclase mediant...
POLIMORFISMO
Interface vs. Clase Abstracta
Un interface no puede implementar ningún método.
Un interface no forma parte de...
POLIMORFISMO
Interface vs. Clase Abstracta
Haremos un interface cuando queramos definir un
grupo genérico de clases y no t...
POLIMORFISMO
Ejemplos de polimorfismo

(4)Project Musica (Instrumentos).

20/02/2007

Polimorfismo

25
DIAGRAMA DE CLASES: MUSICA

20/02/2007

Polimorfismo

26
Upcoming SlideShare
Loading in...5
×

polimorfismo

962

Published on

polimorfismo java

Published in: Design
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
962
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
33
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "polimorfismo"

  1. 1. POLIMORFISMO "una interfaz, múltiples métodos".
  2. 2. POLIMORFISMO Indice 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). 20/02/2007 Polimorfismo 2
  3. 3. POLIMORFISMO Definicion 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. 20/02/2007 Polimorfismo 3
  4. 4. POLIMORFISMO Definicion y características Una variable referencia es polimórfica cuando su tipo de declaración no coincide con el tipo del objeto al que referencia: Figura f1 = new Figura(“Estandar”, “Rojo”); Figura f2 = new Circulo(“Verde”, 5.0); 20/02/2007 Polimorfismo 4
  5. 5. POLIMORFISMO Definicion y características El polimorfismo esta presente cuando se envia un mensaje a un objeto del que no se sabe su tipo, ejecutándose el método adecuado de acuerdo con su tipo. Enlace dinámico: Se elige el método a ejecutar en tiempo de ejecución, en función de la clase del objeto; Es la implementación del polimorfismo. 20/02/2007 Polimorfismo 5
  6. 6. POLIMORFISMO Definicion 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. 20/02/2007 Polimorfismo 6
  7. 7. POLIMORFISMO Definicion y características Ejemplo upcasting polimorfismo (1)Project Polimorfismo,Polimorfismo2 (Mamifero). 20/02/2007 Polimorfismo 7
  8. 8. POLIMORFISMO Definición 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. 20/02/2007 Polimorfismo 8
  9. 9. POLIMORFISMO Definición 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 20/02/2007 Polimorfismo 9
  10. 10. POLIMORFISMO Objetivos 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. 20/02/2007 Polimorfismo 10
  11. 11. POLIMORFISMO Objetivos 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 20/02/2007 Polimorfismo 11
  12. 12. POLIMORFISMO Objetivos ANIMAL FELINO LEON 20/02/2007 TIGRE CANINO GATO Polimorfismo LOBO PERRO 12
  13. 13. POLIMORFISMO Objetivos 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(); } } } 20/02/2007 Polimorfismo 13
  14. 14. POLIMORFISMO Objetivos MATEMÁTICO FIGURA CUADRADO 20/02/2007 TRIANGULO CIRCULO Polimorfismo 14
  15. 15. POLIMORFISMO Objetivos 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()); } } 20/02/2007 Polimorfismo 15
  16. 16. POLIMORFISMO SOBREESCRITURA-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 20/02/2007 Polimorfismo 16
  17. 17. POLIMORFISMO SOBRRESCRITURA-SOBRECARGA //Sobrecarga de constructores class 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; } 20/02/2007 Polimorfismo 17
  18. 18. POLIMORFISMO Clases y métodos abstractos Clases abstractas: 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. 20/02/2007 Polimorfismo 18
  19. 19. POLIMORFISMO INTERFACES (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. 20/02/2007 Polimorfismo 19
  20. 20. POLIMORFISMO INTERFACES (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. 20/02/2007 Polimorfismo 20
  21. 21. POLIMORFISMO INTERFACES (herencia múltiple) (3)Project HerenciaMultiple2 (Anfibio). 20/02/2007 Polimorfismo 21
  22. 22. POLIMORFISMO Subclase,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. 20/02/2007 Polimorfismo 22
  23. 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. 20/02/2007 Polimorfismo 23
  24. 24. POLIMORFISMO Interface 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. 20/02/2007 Polimorfismo 24
  25. 25. POLIMORFISMO Ejemplos de polimorfismo (4)Project Musica (Instrumentos). 20/02/2007 Polimorfismo 25
  26. 26. DIAGRAMA DE CLASES: MUSICA 20/02/2007 Polimorfismo 26
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×