SlideShare a Scribd company logo
1 of 21
Download to read offline
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()

More Related Content

Similar to Análisis y Diseño OO 2

Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
aleja0940
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño II
kaolong
 
Método fabrica (Method Factory)
Método fabrica (Method Factory)Método fabrica (Method Factory)
Método fabrica (Method Factory)
Jonathan Calero
 
Buider Patron de Diseño
Buider Patron de DiseñoBuider Patron de Diseño
Buider Patron de Diseño
Mario Cabrera
 

Similar to 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
 

More from Jano González

More from 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
 

Recently uploaded

Chat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaChat GPT para la educación Latinoamerica
Chat GPT para la educación Latinoamerica
EdwinGarca59
 
microsoft word manuales para todos tipos de estudiamte
microsoft word manuales para todos tipos de estudiamtemicrosoft word manuales para todos tipos de estudiamte
microsoft word manuales para todos tipos de estudiamte
2024020140
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
Yanitza28
 

Recently uploaded (20)

Introduccion-a-la-electronica-industrial.pptx
Introduccion-a-la-electronica-industrial.pptxIntroduccion-a-la-electronica-industrial.pptx
Introduccion-a-la-electronica-industrial.pptx
 
Redes Neuronales profundas convolucionales CNN ́s-1.pdf
Redes Neuronales profundas convolucionales CNN ́s-1.pdfRedes Neuronales profundas convolucionales CNN ́s-1.pdf
Redes Neuronales profundas convolucionales CNN ́s-1.pdf
 
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptxTipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
 
Desarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - EstradaDesarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - Estrada
 
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la ComunicaciónNavegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
 
Editorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfEditorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdf
 
Imágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la informaciónImágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la información
 
Tarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptx
Tarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptxTarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptx
Tarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptx
 
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
 
¡Ya basta! Sanidad Interior - Angela Kellenberger.pdf
¡Ya basta! Sanidad Interior - Angela Kellenberger.pdf¡Ya basta! Sanidad Interior - Angela Kellenberger.pdf
¡Ya basta! Sanidad Interior - Angela Kellenberger.pdf
 
Chat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaChat GPT para la educación Latinoamerica
Chat GPT para la educación Latinoamerica
 
BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).
 
microsoft word manuales para todos tipos de estudiamte
microsoft word manuales para todos tipos de estudiamtemicrosoft word manuales para todos tipos de estudiamte
microsoft word manuales para todos tipos de estudiamte
 
Tipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de DatosTipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de Datos
 
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptxAVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
 
el uso de las TIC en la vida cotidiana.pptx
el uso de las TIC en la vida cotidiana.pptxel uso de las TIC en la vida cotidiana.pptx
el uso de las TIC en la vida cotidiana.pptx
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
 
Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024
 

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