SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
Módulo 2
Análisis y Diseño OO

                Clase 2

     • Buenas Prácticas
     • Patrones de Diseño




      Alejandro González Orellana
Temario
• Buenas Prácticas
• Patrones de Diseño
Buenas Prácticas

             Respetar el encapsulamiento
• No se debe permitir que atributos de un objetos sean
  manipulados de forma directa.
• Por qué: Evita llevar a estados inconsistentes un objeto.
• Cómo: No usar atributos públicos, toda interacción con
  otro objeto debe ser mediante llamadas a métodos.


                             Métodos

                             Atributos
Buenas Prácticas

          Usar el tipo más abstracto posible
• No se debe utilizar una implementación concreta de un
  objeto si existe un tipo más abstracto disponible.
• Por qué: Evita depender de implementaciones concretas.
• Cómo: Utilizar el tipo más abstracto posible en una
  jerarquía de objetos.
Buenas Prácticas

      Preferir Composición frente a Herencia
• No se debe abusar de la herencia
• Por qué: Ayuda a mantener las clases centradas en una sola
  tarea
• Cómo: Utilizar composición siempre que sea posible
Buenas Prácticas

                  Usar la delegación
• Un objeto no debería tener más de una responsabilidad.
• Por qué: Permite combinar de mejor forma objetos para
  realizar tareas.
• Cómo: Utilizar delegación cuando un objeto tenga más de
  una responsabilidad.
Temario
• Buenas Prácticas
• Patrones de Diseño
Patrones de Diseño

                        ¿Qué son?
• Los patrones de diseño son soluciones a problemas
  recurrentes de diseño, que han sido probadas y
  catalogadas.
• Permiten que los diseños sean más elegantes, mantenibles
  y reutilizables.
Patrones de Diseño

                      Patrones GoF
• Patrones de Creación: Abstraen el proceso de creación de
  instancias. Ayudan a hacer un sistema independiente de
  cómo se crean, componen y se representan los objetos.
• Patrones Estructurales: Se ocupan de cómo se combinan
  clases y objetos para formar estructuras más grandes.
• Patrones de Comportamiento: Tienen que ver con
  algoritmos y asignación de responsabilidades a objetos. No
  solo describen patrones de clases y objetos, sino también
  patrones de comunicación entre ellos.
Patrones de Diseño

                     Factory Method
• Problema: Crear objetos derivados de una misma clase.
• Solución: Delegar la creación de objetos de la jerarquía en
  un objeto con un método de fabricación.
Patrones de Diseño

                  Factory Method

                                  Creador
      Producto
                             metodoFabricacion()




   ProductoConcreto          CreadorConcreto


                             metodoFabricacion()
Patrones de Diseño

                         Singleton
• Problema: Se desea tener sólo una instancia de un objeto
  en memoria.
• Solución: Hacer a la propia clase responsable de su
  instancia.
Patrones de Diseño

                 Singleton

                 Singleton

          instancia : Singleton

          getInstancia() : Singleton
Patrones de Diseño

                       Decorator
• Problema: Modificar comportamiento de objetos
  individuales sin crear nuevas subclases.
• Solución: Delegar la incorporación de comportamiento
  añadido
Patrones de Diseño

                                Decorator
             Componente


                  operacion()




ComponenteConcreto                     Decorador


    operacion()                        operacion()




                  DecoradorConcretoA                 DecoradorConcretoB


                        operacion()                      operacion()
Patrones de Diseño

                         Facade
• Problema: Ocultar la complejidad de un sistema
• Solución: Esconder la complejidad detrás de una fachada
Patrones de Diseño

              Facade

               Fachada
Patrones de Diseño

                        Command
• Problema: Desacoplar acciones que se pueden realizar en
  un sistema
• Solución: Crear objetos fácilmente intercambiables que
  contengan las acciones
Patrones de Diseño

                Command

                                         Orden
  Cliente     Invocador

                                        ejecutar()




                                     OrdenConcreta
                          receptor
            Receptor                 estado

                                     ejecutar()
Patrones de Diseño

                   Template Method
• Problema: Implementar diferentes versiones de un
  algoritmo respetando una estructura base
• Solución: Implementar parte del algoritmo en una clase
  base y dejar puntos de extensión.
Patrones de Diseño

          Template Method

             ClaseAbstracta

           metodoPlantilla()
           operacion1()
           operacion2()




              ClaseConcreta

           operacion1()
           operacion2()

Más contenido relacionado

Similar a Análisis y Diseño OO 2

Similar a Análisis y Diseño OO 2 (20)

U5.pptx
U5.pptxU5.pptx
U5.pptx
 
Patrones GOF
Patrones GOFPatrones GOF
Patrones GOF
 
Arquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoArquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseño
 
Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de software
 
Patrones de Diseño de Software
Patrones de Diseño de SoftwarePatrones de Diseño de Software
Patrones de Diseño de Software
 
Principios de diseño de código orientado a objetos SOLID
Principios de diseño de código orientado a objetos SOLIDPrincipios de diseño de código orientado a objetos SOLID
Principios de diseño de código orientado a objetos SOLID
 
patronesdiseño2009.ppt
patronesdiseño2009.pptpatronesdiseño2009.ppt
patronesdiseño2009.ppt
 
Introducción a DDD
Introducción a DDDIntroducción a DDD
Introducción a DDD
 
chuy
chuy chuy
chuy
 
6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt6070_TRECALDE_00288.ppt
6070_TRECALDE_00288.ppt
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Astema3
Astema3Astema3
Astema3
 
200812 - Patrones de Diseño de Software (parte 1/4)
200812 - Patrones de Diseño de Software (parte 1/4)200812 - Patrones de Diseño de Software (parte 1/4)
200812 - Patrones de Diseño de Software (parte 1/4)
 
Modelo Orientado A Objetos
Modelo Orientado A ObjetosModelo Orientado A Objetos
Modelo Orientado A Objetos
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño II
 
Método fabrica (Method Factory)
Método fabrica (Method Factory)Método fabrica (Method Factory)
Método fabrica (Method Factory)
 
PATRONES DE DISEÑO WEB.pptx
PATRONES DE DISEÑO WEB.pptxPATRONES DE DISEÑO WEB.pptx
PATRONES DE DISEÑO WEB.pptx
 
PATRONES DE DISEÑO WEB.pptx
PATRONES DE DISEÑO WEB.pptxPATRONES DE DISEÑO WEB.pptx
PATRONES DE DISEÑO WEB.pptx
 
Buider Patron de Diseño
Buider Patron de DiseñoBuider Patron de Diseño
Buider Patron de Diseño
 
Patrones de creación
Patrones de creaciónPatrones de creación
Patrones de creación
 

Más de Jano González

JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011Jano González
 
JRuby: Ruby en un mundo enterprise
JRuby: Ruby en un mundo enterpriseJRuby: Ruby en un mundo enterprise
JRuby: Ruby en un mundo enterpriseJano González
 
Programación Políglota en la JVM
Programación Políglota en la JVMProgramación Políglota en la JVM
Programación Políglota en la JVMJano González
 
JRuby ¿Lo mejor de dos mundos?
JRuby ¿Lo mejor de dos mundos?JRuby ¿Lo mejor de dos mundos?
JRuby ¿Lo mejor de dos mundos?Jano González
 
Un emulador de Game Boy escrito en Ruby (parte 1)
Un emulador de Game Boy escrito en Ruby (parte 1)Un emulador de Game Boy escrito en Ruby (parte 1)
Un emulador de Game Boy escrito en Ruby (parte 1)Jano González
 
Taller de Unit Testing y TDD en Java: Parte 1
Taller de Unit Testing y TDD en Java: Parte 1Taller de Unit Testing y TDD en Java: Parte 1
Taller de Unit Testing y TDD en Java: Parte 1Jano González
 
Curso de Spring: Transacciones
Curso de Spring: TransaccionesCurso de Spring: Transacciones
Curso de Spring: TransaccionesJano González
 
Análisis y Diseño OO 1
Análisis y Diseño OO 1Análisis y Diseño OO 1
Análisis y Diseño OO 1Jano González
 
Curso de Spring: Beans
Curso de Spring: BeansCurso de Spring: Beans
Curso de Spring: BeansJano González
 
Un newbie conoce a Sinatra
Un newbie conoce a SinatraUn newbie conoce a Sinatra
Un newbie conoce a SinatraJano González
 

Más de Jano González (15)

Spring jdbc
Spring jdbcSpring jdbc
Spring jdbc
 
Vim FTW!
Vim FTW!Vim FTW!
Vim FTW!
 
Ruby
RubyRuby
Ruby
 
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
 
JRuby: Ruby en un mundo enterprise
JRuby: Ruby en un mundo enterpriseJRuby: Ruby en un mundo enterprise
JRuby: Ruby en un mundo enterprise
 
Programación Políglota en la JVM
Programación Políglota en la JVMProgramación Políglota en la JVM
Programación Políglota en la JVM
 
A Little RSpec
A Little RSpecA Little RSpec
A Little RSpec
 
JRuby ¿Lo mejor de dos mundos?
JRuby ¿Lo mejor de dos mundos?JRuby ¿Lo mejor de dos mundos?
JRuby ¿Lo mejor de dos mundos?
 
Un emulador de Game Boy escrito en Ruby (parte 1)
Un emulador de Game Boy escrito en Ruby (parte 1)Un emulador de Game Boy escrito en Ruby (parte 1)
Un emulador de Game Boy escrito en Ruby (parte 1)
 
Taller de Unit Testing y TDD en Java: Parte 1
Taller de Unit Testing y TDD en Java: Parte 1Taller de Unit Testing y TDD en Java: Parte 1
Taller de Unit Testing y TDD en Java: Parte 1
 
Curso de Spring: Transacciones
Curso de Spring: TransaccionesCurso de Spring: Transacciones
Curso de Spring: Transacciones
 
Análisis y Diseño OO 1
Análisis y Diseño OO 1Análisis y Diseño OO 1
Análisis y Diseño OO 1
 
Programación Java
Programación JavaProgramación Java
Programación Java
 
Curso de Spring: Beans
Curso de Spring: BeansCurso de Spring: Beans
Curso de Spring: Beans
 
Un newbie conoce a Sinatra
Un newbie conoce a SinatraUn newbie conoce a Sinatra
Un newbie conoce a Sinatra
 

Último

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 

Último (11)

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
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...
 

Análisis y Diseño OO 2

  • 1. Módulo 2 Análisis y Diseño OO Clase 2 • Buenas Prácticas • Patrones de Diseño Alejandro González Orellana
  • 2. Temario • Buenas Prácticas • Patrones de Diseño
  • 3. Buenas Prácticas Respetar el encapsulamiento • No se debe permitir que atributos de un objetos sean manipulados de forma directa. • Por qué: Evita llevar a estados inconsistentes un objeto. • Cómo: No usar atributos públicos, toda interacción con otro objeto debe ser mediante llamadas a métodos. Métodos Atributos
  • 4. Buenas Prácticas Usar el tipo más abstracto posible • No se debe utilizar una implementación concreta de un objeto si existe un tipo más abstracto disponible. • Por qué: Evita depender de implementaciones concretas. • Cómo: Utilizar el tipo más abstracto posible en una jerarquía de objetos.
  • 5. Buenas Prácticas Preferir Composición frente a Herencia • No se debe abusar de la herencia • Por qué: Ayuda a mantener las clases centradas en una sola tarea • Cómo: Utilizar composición siempre que sea posible
  • 6. Buenas Prácticas Usar la delegación • Un objeto no debería tener más de una responsabilidad. • Por qué: Permite combinar de mejor forma objetos para realizar tareas. • Cómo: Utilizar delegación cuando un objeto tenga más de una responsabilidad.
  • 7. Temario • Buenas Prácticas • Patrones de Diseño
  • 8. Patrones de Diseño ¿Qué son? • Los patrones de diseño son soluciones a problemas recurrentes de diseño, que han sido probadas y catalogadas. • Permiten que los diseños sean más elegantes, mantenibles y reutilizables.
  • 9. Patrones de Diseño Patrones GoF • Patrones de Creación: Abstraen el proceso de creación de instancias. Ayudan a hacer un sistema independiente de cómo se crean, componen y se representan los objetos. • Patrones Estructurales: Se ocupan de cómo se combinan clases y objetos para formar estructuras más grandes. • Patrones de Comportamiento: Tienen que ver con algoritmos y asignación de responsabilidades a objetos. No solo describen patrones de clases y objetos, sino también patrones de comunicación entre ellos.
  • 10. Patrones de Diseño Factory Method • Problema: Crear objetos derivados de una misma clase. • Solución: Delegar la creación de objetos de la jerarquía en un objeto con un método de fabricación.
  • 11. Patrones de Diseño Factory Method Creador Producto metodoFabricacion() ProductoConcreto CreadorConcreto metodoFabricacion()
  • 12. Patrones de Diseño Singleton • Problema: Se desea tener sólo una instancia de un objeto en memoria. • Solución: Hacer a la propia clase responsable de su instancia.
  • 13. Patrones de Diseño Singleton Singleton instancia : Singleton getInstancia() : Singleton
  • 14. Patrones de Diseño Decorator • Problema: Modificar comportamiento de objetos individuales sin crear nuevas subclases. • Solución: Delegar la incorporación de comportamiento añadido
  • 15. Patrones de Diseño Decorator Componente operacion() ComponenteConcreto Decorador operacion() operacion() DecoradorConcretoA DecoradorConcretoB operacion() operacion()
  • 16. Patrones de Diseño Facade • Problema: Ocultar la complejidad de un sistema • Solución: Esconder la complejidad detrás de una fachada
  • 17. Patrones de Diseño Facade Fachada
  • 18. Patrones de Diseño Command • Problema: Desacoplar acciones que se pueden realizar en un sistema • Solución: Crear objetos fácilmente intercambiables que contengan las acciones
  • 19. Patrones de Diseño Command Orden Cliente Invocador ejecutar() OrdenConcreta receptor Receptor estado ejecutar()
  • 20. Patrones de Diseño Template Method • Problema: Implementar diferentes versiones de un algoritmo respetando una estructura base • Solución: Implementar parte del algoritmo en una clase base y dejar puntos de extensión.
  • 21. Patrones de Diseño Template Method ClaseAbstracta metodoPlantilla() operacion1() operacion2() ClaseConcreta operacion1() operacion2()