SlideShare una empresa de Scribd logo
1 de 16
Descargar para leer sin conexión
Patrones de Diseño: 
Polimorfismo
¿Qué es? 
"El polimorfismo es la propiedad que permite que una 
misma operación sea aplicada a varios objetos de 
distintos tipos"
Programar para la interfaz no la implementación se 
hace posible usando los distintos tipos de polimorfismo.
¿Qué no es? 
"El polimorfismo te permite llamar métodos de una 
clase sin saber el tipo exacto de la clase" 
"La herencia permite a clases derivadas de una 
compartir parte de la interfaz y compartir código" 
Aunque se usen de maneras iguales ( extend ) no son lo 
mismo.
Tipos de polimorfismo
Polimorfismo estático ó Ad-Hoc 
También conocido cómo function overloading ó 
sobrecarga de métodos en el mundo Java. 
public Employee getEmployee(int id) { 
... 
} 
public Employee getEmployee(String name) { 
... 
}
Polimorfismo dinámico ó Parametric 
Polymorphism 
En Java se ha implementado mediante Generics: 
ArrayList<String> strings = new ArrayList<String>(); 
// Gson.java 
public <T> T fromJson(String json, Type typeOfT){ 
... 
}
En algunas Api's más antiguas se puede ver como se 
implementó aceptando un Objeto del tipo Object, cómo 
todos los objetos en Java extienden de Object se 
consigue el mismo funcionamiento: 
private JsonElement createJsonElement(Object value) { 
return value == null ? JsonNull.INSTANCE : new JsonPrimitive(value); 
}
Subtyping 
Es un tipo de polimorfismo en el que el subtipo (el pato 
por ejemplo), está relacionado con el supertipo (el 
pájaro) permitiendo usarlos indistintamente y 
sustituirlos sin problema.
private void feed(Bird aBird) { 
... 
} 
// vs 
private void feed(Cuckoo aCuckoo) { 
... 
} 
private void feed(Duck aDuck) { 
... 
} 
private void feed(Ostrich aOstrich) { 
... 
}
Detectar cuando puede ser interesante 
usar el polimorfismo 
4 Buscar clases o tipos que tengan comportamientos 
muy parecidos 
4 Buscar metodos que usen if's 
4 Asignar esa responsabilidad a distintos tipos 
(clases)
public void executePayment(String paymentMode){ 
if (paymentMode.equals(“Cash”)){ 
... 
}else if(paymentsMode.equals("Card")){ 
... 
}else if(paymentsMode.equals("Check")){ 
... 
} 
}
public void executePayment(Payment paymentMode){ 
paymentMode.executePayment(); 
}
Pros 
4 Permite hacer clases más genéricas, permitiendo 
cambiar en el futuro la implementación. 
4 Permite programar hacía la interfaz, ayuda mucho 
cuando la implementación no está clara todavía. 
4 Facilita el testing ( black box testing )
Contras 
4 Es facil caer en la tentación de hacer las cosas 
demasiado genéricas, aún habiendo muchas 
posibilidades de que no vayan a cambiar en el futuro 
( YAGNI )
¿Preguntas?

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Cuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmi Cuadro comparativo entre moprosoft y cmmi
Cuadro comparativo entre moprosoft y cmmi
 
Diseño orientado a objeto
Diseño orientado a objetoDiseño orientado a objeto
Diseño orientado a objeto
 
Caso de Uso
Caso de UsoCaso de Uso
Caso de Uso
 
Casos de prueba
Casos de pruebaCasos de prueba
Casos de prueba
 
Proceso de software
Proceso de softwareProceso de software
Proceso de software
 
Proyecto de simulacion
Proyecto de simulacionProyecto de simulacion
Proyecto de simulacion
 
Frameworks Java
Frameworks JavaFrameworks Java
Frameworks Java
 
 Diagramas uml de sistema de cajero automático
 Diagramas uml de sistema de cajero automático Diagramas uml de sistema de cajero automático
 Diagramas uml de sistema de cajero automático
 
Uml diagramas-caso-de-uso
Uml diagramas-caso-de-usoUml diagramas-caso-de-uso
Uml diagramas-caso-de-uso
 
Diagramas de objetos
Diagramas de objetosDiagramas de objetos
Diagramas de objetos
 
Hilos En Java
Hilos En JavaHilos En Java
Hilos En Java
 
Uml videotienda (1)
Uml videotienda (1)Uml videotienda (1)
Uml videotienda (1)
 
Metodologia sum
Metodologia sumMetodologia sum
Metodologia sum
 
Modelo cascada
Modelo cascadaModelo cascada
Modelo cascada
 
Conceptos de diseño de software
Conceptos de diseño de softwareConceptos de diseño de software
Conceptos de diseño de software
 
El modelo entidad relación
El modelo entidad relaciónEl modelo entidad relación
El modelo entidad relación
 
UML - Lenguaje de Modelamiento Unificado
UML - Lenguaje de Modelamiento UnificadoUML - Lenguaje de Modelamiento Unificado
UML - Lenguaje de Modelamiento Unificado
 
Las 4 P en el desarrollo de software
Las 4 P en el desarrollo de softwareLas 4 P en el desarrollo de software
Las 4 P en el desarrollo de software
 
Modelamiento De Negocio
Modelamiento De NegocioModelamiento De Negocio
Modelamiento De Negocio
 
Técnicas de recolección de requerimientos
Técnicas de recolección de requerimientosTécnicas de recolección de requerimientos
Técnicas de recolección de requerimientos
 

Destacado

Patrones estructurales
Patrones estructuralesPatrones estructurales
Patrones estructuralesAutentia
 
Patrón Façade
Patrón FaçadePatrón Façade
Patrón FaçadeAutentia
 
Design Patterns / Patrones de Diseño
Design Patterns / Patrones de DiseñoDesign Patterns / Patrones de Diseño
Design Patterns / Patrones de DiseñoAutentia
 
Patrón Decorator
Patrón DecoratorPatrón Decorator
Patrón DecoratorAutentia
 
Presentación open closed principle
Presentación open closed principlePresentación open closed principle
Presentación open closed principleAutentia
 
Measuring code quality:WTF/min by @dgomezg
Measuring code quality:WTF/min by @dgomezgMeasuring code quality:WTF/min by @dgomezg
Measuring code quality:WTF/min by @dgomezgAutentia
 
Patrón Observer
Patrón ObserverPatrón Observer
Patrón ObserverAutentia
 
Nativescript
NativescriptNativescript
NativescriptAutentia
 
Factory method
Factory methodFactory method
Factory methodAutentia
 
Patrones de creación
Patrones de creaciónPatrones de creación
Patrones de creaciónAutentia
 
Sesion 5 1 diagrama de secuencia
Sesion 5 1 diagrama de secuenciaSesion 5 1 diagrama de secuencia
Sesion 5 1 diagrama de secuenciaJulio Pari
 
Introducción a la programación orientada objetos
Introducción a la programación orientada objetosIntroducción a la programación orientada objetos
Introducción a la programación orientada objetosRenny Batista
 
diagramas de interaccion
diagramas de interacciondiagramas de interaccion
diagramas de interaccionjent46
 
Polimorfismo ppt
Polimorfismo  pptPolimorfismo  ppt
Polimorfismo pptivanvillar7
 
Diagramas De Interaccion
Diagramas De InteraccionDiagramas De Interaccion
Diagramas De Interaccionjlrvpuma
 

Destacado (20)

Clase iv
Clase ivClase iv
Clase iv
 
Patrones estructurales
Patrones estructuralesPatrones estructurales
Patrones estructurales
 
Patrón Façade
Patrón FaçadePatrón Façade
Patrón Façade
 
Design Patterns / Patrones de Diseño
Design Patterns / Patrones de DiseñoDesign Patterns / Patrones de Diseño
Design Patterns / Patrones de Diseño
 
Patrón Decorator
Patrón DecoratorPatrón Decorator
Patrón Decorator
 
Presentación open closed principle
Presentación open closed principlePresentación open closed principle
Presentación open closed principle
 
Measuring code quality:WTF/min by @dgomezg
Measuring code quality:WTF/min by @dgomezgMeasuring code quality:WTF/min by @dgomezg
Measuring code quality:WTF/min by @dgomezg
 
Patrones Creacionales
Patrones CreacionalesPatrones Creacionales
Patrones Creacionales
 
Patrón Observer
Patrón ObserverPatrón Observer
Patrón Observer
 
Nativescript
NativescriptNativescript
Nativescript
 
Factory method
Factory methodFactory method
Factory method
 
Singleton
SingletonSingleton
Singleton
 
Patrones de creación
Patrones de creaciónPatrones de creación
Patrones de creación
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Sesion 5 1 diagrama de secuencia
Sesion 5 1 diagrama de secuenciaSesion 5 1 diagrama de secuencia
Sesion 5 1 diagrama de secuencia
 
Introducción a la programación orientada objetos
Introducción a la programación orientada objetosIntroducción a la programación orientada objetos
Introducción a la programación orientada objetos
 
diagramas de interaccion
diagramas de interacciondiagramas de interaccion
diagramas de interaccion
 
Polimorfismo ppt
Polimorfismo  pptPolimorfismo  ppt
Polimorfismo ppt
 
Diagramas De Interaccion
Diagramas De InteraccionDiagramas De Interaccion
Diagramas De Interaccion
 
10 Polimorfismo
10   Polimorfismo10   Polimorfismo
10 Polimorfismo
 

Similar a Patrones de diseño: Polimorfismo

Investigacion v unidad
Investigacion v unidadInvestigacion v unidad
Investigacion v unidadElena Perz
 
Polimorfismo en java
Polimorfismo en javaPolimorfismo en java
Polimorfismo en javaSa_Van
 
Poliformismo
PoliformismoPoliformismo
PoliformismoSa_Van
 
Fundamentos POO en JS. Mixins y Traits.
Fundamentos POO en JS. Mixins y Traits.Fundamentos POO en JS. Mixins y Traits.
Fundamentos POO en JS. Mixins y Traits.Maximiliano Fierro
 
Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Hack '
 
Curso Java Inicial 6 Polimorfismo, AbstraccióN E Interfaces
Curso Java Inicial   6 Polimorfismo, AbstraccióN E InterfacesCurso Java Inicial   6 Polimorfismo, AbstraccióN E Interfaces
Curso Java Inicial 6 Polimorfismo, AbstraccióN E InterfacesEmilio Aviles Avila
 
_Herencia_Polimorfismo_Polimorfismo.pptx
_Herencia_Polimorfismo_Polimorfismo.pptx_Herencia_Polimorfismo_Polimorfismo.pptx
_Herencia_Polimorfismo_Polimorfismo.pptxFabianAndresNuezPinz
 
Introduccion a la poo
Introduccion a la pooIntroduccion a la poo
Introduccion a la pooBoris Salleg
 
U8.- Programacion Orientada a objetos II (2).pdf
U8.- Programacion Orientada a objetos II (2).pdfU8.- Programacion Orientada a objetos II (2).pdf
U8.- Programacion Orientada a objetos II (2).pdfJCarlosCrespo
 
Analisis orientado a objetos
Analisis orientado a objetosAnalisis orientado a objetos
Analisis orientado a objetosvilma pilco
 

Similar a Patrones de diseño: Polimorfismo (20)

Investigacion v unidad
Investigacion v unidadInvestigacion v unidad
Investigacion v unidad
 
Polimorfism oo
Polimorfism ooPolimorfism oo
Polimorfism oo
 
Semana 3 Herencia en Java
Semana 3   Herencia en JavaSemana 3   Herencia en Java
Semana 3 Herencia en Java
 
4 unidad polimorfismo
4 unidad polimorfismo4 unidad polimorfismo
4 unidad polimorfismo
 
Guía polimorfismo
Guía polimorfismoGuía polimorfismo
Guía polimorfismo
 
Herencia
HerenciaHerencia
Herencia
 
10 - Slides-Java sesion.pptx
10 - Slides-Java sesion.pptx10 - Slides-Java sesion.pptx
10 - Slides-Java sesion.pptx
 
Polimorfismo en java
Polimorfismo en javaPolimorfismo en java
Polimorfismo en java
 
Poliformismo
PoliformismoPoliformismo
Poliformismo
 
Fundamentos POO en JS. Mixins y Traits.
Fundamentos POO en JS. Mixins y Traits.Fundamentos POO en JS. Mixins y Traits.
Fundamentos POO en JS. Mixins y Traits.
 
Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]
 
Herencia y Polimorfismo
Herencia y PolimorfismoHerencia y Polimorfismo
Herencia y Polimorfismo
 
Polimorfismo en Java
Polimorfismo en JavaPolimorfismo en Java
Polimorfismo en Java
 
Curso Java Inicial 6 Polimorfismo, AbstraccióN E Interfaces
Curso Java Inicial   6 Polimorfismo, AbstraccióN E InterfacesCurso Java Inicial   6 Polimorfismo, AbstraccióN E Interfaces
Curso Java Inicial 6 Polimorfismo, AbstraccióN E Interfaces
 
Encapsulamiento
EncapsulamientoEncapsulamiento
Encapsulamiento
 
_Herencia_Polimorfismo_Polimorfismo.pptx
_Herencia_Polimorfismo_Polimorfismo.pptx_Herencia_Polimorfismo_Polimorfismo.pptx
_Herencia_Polimorfismo_Polimorfismo.pptx
 
Introduccion a la poo
Introduccion a la pooIntroduccion a la poo
Introduccion a la poo
 
U8.- Programacion Orientada a objetos II (2).pdf
U8.- Programacion Orientada a objetos II (2).pdfU8.- Programacion Orientada a objetos II (2).pdf
U8.- Programacion Orientada a objetos II (2).pdf
 
Analisis orientado a objetos
Analisis orientado a objetosAnalisis orientado a objetos
Analisis orientado a objetos
 
Reporte
ReporteReporte
Reporte
 

Último

Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 

Último (11)

Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 

Patrones de diseño: Polimorfismo

  • 1. Patrones de Diseño: Polimorfismo
  • 2. ¿Qué es? "El polimorfismo es la propiedad que permite que una misma operación sea aplicada a varios objetos de distintos tipos"
  • 3. Programar para la interfaz no la implementación se hace posible usando los distintos tipos de polimorfismo.
  • 4. ¿Qué no es? "El polimorfismo te permite llamar métodos de una clase sin saber el tipo exacto de la clase" "La herencia permite a clases derivadas de una compartir parte de la interfaz y compartir código" Aunque se usen de maneras iguales ( extend ) no son lo mismo.
  • 6. Polimorfismo estático ó Ad-Hoc También conocido cómo function overloading ó sobrecarga de métodos en el mundo Java. public Employee getEmployee(int id) { ... } public Employee getEmployee(String name) { ... }
  • 7. Polimorfismo dinámico ó Parametric Polymorphism En Java se ha implementado mediante Generics: ArrayList<String> strings = new ArrayList<String>(); // Gson.java public <T> T fromJson(String json, Type typeOfT){ ... }
  • 8. En algunas Api's más antiguas se puede ver como se implementó aceptando un Objeto del tipo Object, cómo todos los objetos en Java extienden de Object se consigue el mismo funcionamiento: private JsonElement createJsonElement(Object value) { return value == null ? JsonNull.INSTANCE : new JsonPrimitive(value); }
  • 9. Subtyping Es un tipo de polimorfismo en el que el subtipo (el pato por ejemplo), está relacionado con el supertipo (el pájaro) permitiendo usarlos indistintamente y sustituirlos sin problema.
  • 10. private void feed(Bird aBird) { ... } // vs private void feed(Cuckoo aCuckoo) { ... } private void feed(Duck aDuck) { ... } private void feed(Ostrich aOstrich) { ... }
  • 11. Detectar cuando puede ser interesante usar el polimorfismo 4 Buscar clases o tipos que tengan comportamientos muy parecidos 4 Buscar metodos que usen if's 4 Asignar esa responsabilidad a distintos tipos (clases)
  • 12. public void executePayment(String paymentMode){ if (paymentMode.equals(“Cash”)){ ... }else if(paymentsMode.equals("Card")){ ... }else if(paymentsMode.equals("Check")){ ... } }
  • 13. public void executePayment(Payment paymentMode){ paymentMode.executePayment(); }
  • 14. Pros 4 Permite hacer clases más genéricas, permitiendo cambiar en el futuro la implementación. 4 Permite programar hacía la interfaz, ayuda mucho cuando la implementación no está clara todavía. 4 Facilita el testing ( black box testing )
  • 15. Contras 4 Es facil caer en la tentación de hacer las cosas demasiado genéricas, aún habiendo muchas posibilidades de que no vayan a cambiar en el futuro ( YAGNI )