POLIMORFISMO "una interfaz, m - PowerPoint PPT Presentation

About This Presentation
Title:

POLIMORFISMO "una interfaz, m

Description:

{ public double calcularArea(Figura param) { return param.calcularArea ... Box (double valor) { width = height = depth = valor; double volume ... – PowerPoint PPT presentation

Number of Views:302
Avg rating:3.0/5.0
Slides: 27
Provided by: morf6
Learn more at: http://www.mhproject.org
Category:

less

Transcript and Presenter's Notes

Title: POLIMORFISMO "una interfaz, m


1
POLIMORFISMO"una interfaz, múltiples métodos".
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).

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.
4
POLIMORFISMODefinicion 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)
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.

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.

7
POLIMORFISMODefinicion y características
  • Ejemplo upcasting polimorfismo
  • (1)Project Polimorfismo,Polimorfismo2 (Mamifero).

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.

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

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.

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

12
POLIMORFISMOObjetivos
13
POLIMORFISMOObjetivos
EJEMPLO DE COLECCIÓN GENÉRICA public class
TestPolimorfismo public static void
main(String args) Animal animales new
Animal4 animales0 new Lobo()
animales1 new Perro() animales2 new
Leon() animales3 new Tigre() for(int
i0 iltanimales.length i) animalesi.dormir
() animalesi.comer()
14
POLIMORFISMOObjetivos
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())
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

17
POLIMORFISMOSOBRRESCRITURA-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
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.

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.

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.

21
POLIMORFISMOINTERFACES (herencia múltiple)
  • (3)Project HerenciaMultiple2 (Anfibio).

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.

23
POLIMORFISMOInterface 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.

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.

25
POLIMORFISMOEjemplos de polimorfismo
  • (4)Project Musica (Instrumentos).

26

DIAGRAMA DE CLASES MUSICA
Write a Comment
User Comments (0)
About PowerShow.com