Download - Análisis y Diseño OO 2
![Page 1: Análisis y Diseño OO 2](https://reader034.vdocuments.co/reader034/viewer/2022042516/55958ab71a28ab0b638b4621/html5/thumbnails/1.jpg)
Módulo 2
Alejandro González Orellana
Análisis y Diseño OO
Clase 2
• Buenas Prácticas• Patrones de Diseño
![Page 2: Análisis y Diseño OO 2](https://reader034.vdocuments.co/reader034/viewer/2022042516/55958ab71a28ab0b638b4621/html5/thumbnails/2.jpg)
Temario
• Buenas Prácticas
• Patrones de Diseño
![Page 3: Análisis y Diseño OO 2](https://reader034.vdocuments.co/reader034/viewer/2022042516/55958ab71a28ab0b638b4621/html5/thumbnails/3.jpg)
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
![Page 4: Análisis y Diseño OO 2](https://reader034.vdocuments.co/reader034/viewer/2022042516/55958ab71a28ab0b638b4621/html5/thumbnails/4.jpg)
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.
![Page 5: Análisis y Diseño OO 2](https://reader034.vdocuments.co/reader034/viewer/2022042516/55958ab71a28ab0b638b4621/html5/thumbnails/5.jpg)
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
![Page 6: Análisis y Diseño OO 2](https://reader034.vdocuments.co/reader034/viewer/2022042516/55958ab71a28ab0b638b4621/html5/thumbnails/6.jpg)
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.
![Page 7: Análisis y Diseño OO 2](https://reader034.vdocuments.co/reader034/viewer/2022042516/55958ab71a28ab0b638b4621/html5/thumbnails/7.jpg)
Temario
• Buenas Prácticas
• Patrones de Diseño
![Page 8: Análisis y Diseño OO 2](https://reader034.vdocuments.co/reader034/viewer/2022042516/55958ab71a28ab0b638b4621/html5/thumbnails/8.jpg)
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.
![Page 9: Análisis y Diseño OO 2](https://reader034.vdocuments.co/reader034/viewer/2022042516/55958ab71a28ab0b638b4621/html5/thumbnails/9.jpg)
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.
![Page 10: Análisis y Diseño OO 2](https://reader034.vdocuments.co/reader034/viewer/2022042516/55958ab71a28ab0b638b4621/html5/thumbnails/10.jpg)
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.
![Page 11: Análisis y Diseño OO 2](https://reader034.vdocuments.co/reader034/viewer/2022042516/55958ab71a28ab0b638b4621/html5/thumbnails/11.jpg)
Patrones de Diseño
Factory Method
Producto
ProductoConcreto
Creador
metodoFabricacion()
CreadorConcreto
metodoFabricacion()
![Page 12: Análisis y Diseño OO 2](https://reader034.vdocuments.co/reader034/viewer/2022042516/55958ab71a28ab0b638b4621/html5/thumbnails/12.jpg)
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.
![Page 13: Análisis y Diseño OO 2](https://reader034.vdocuments.co/reader034/viewer/2022042516/55958ab71a28ab0b638b4621/html5/thumbnails/13.jpg)
Patrones de Diseño
Singleton
Singleton
getInstancia() : Singleton
instancia : Singleton
![Page 14: Análisis y Diseño OO 2](https://reader034.vdocuments.co/reader034/viewer/2022042516/55958ab71a28ab0b638b4621/html5/thumbnails/14.jpg)
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
![Page 15: Análisis y Diseño OO 2](https://reader034.vdocuments.co/reader034/viewer/2022042516/55958ab71a28ab0b638b4621/html5/thumbnails/15.jpg)
Patrones de Diseño
DecoratorComponente
operacion()
ComponenteConcreto
operacion()
Decorador
operacion()
DecoradorConcretoA
operacion()
DecoradorConcretoB
operacion()
![Page 16: Análisis y Diseño OO 2](https://reader034.vdocuments.co/reader034/viewer/2022042516/55958ab71a28ab0b638b4621/html5/thumbnails/16.jpg)
Patrones de Diseño
Facade
• Problema: Ocultar la complejidad de un sistema
• Solución: Esconder la complejidad detrás de una fachada
![Page 17: Análisis y Diseño OO 2](https://reader034.vdocuments.co/reader034/viewer/2022042516/55958ab71a28ab0b638b4621/html5/thumbnails/17.jpg)
Patrones de Diseño
Facade
Fachada
![Page 18: Análisis y Diseño OO 2](https://reader034.vdocuments.co/reader034/viewer/2022042516/55958ab71a28ab0b638b4621/html5/thumbnails/18.jpg)
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
![Page 19: Análisis y Diseño OO 2](https://reader034.vdocuments.co/reader034/viewer/2022042516/55958ab71a28ab0b638b4621/html5/thumbnails/19.jpg)
Patrones de Diseño
Command
Cliente
Receptor
Orden
ejecutar()
OrdenConcreta
ejecutar()
estado
Invocador
receptor
![Page 20: Análisis y Diseño OO 2](https://reader034.vdocuments.co/reader034/viewer/2022042516/55958ab71a28ab0b638b4621/html5/thumbnails/20.jpg)
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.
![Page 21: Análisis y Diseño OO 2](https://reader034.vdocuments.co/reader034/viewer/2022042516/55958ab71a28ab0b638b4621/html5/thumbnails/21.jpg)
Patrones de Diseño
Template Method
ClaseAbstracta
metodoPlantilla()operacion1()operacion2()
ClaseConcreta
operacion1()operacion2()