Análisis y Diseño OO 2

1,524 views

Published on

Slides del primer curso de ADOO que dicté el año 2005 - Incluye buenas prácticas y patrones de diseño

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,524
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
36
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Análisis y Diseño OO 2

  1. 1. Módulo 2Análisis y Diseño OO Clase 2 • Buenas Prácticas • Patrones de Diseño Alejandro González Orellana
  2. 2. Temario• Buenas Prácticas• Patrones de Diseño
  3. 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. 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. 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. 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. 7. Temario• Buenas Prácticas• Patrones de Diseño
  8. 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. 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. 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. 11. Patrones de Diseño Factory Method Creador Producto metodoFabricacion() ProductoConcreto CreadorConcreto metodoFabricacion()
  12. 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. 13. Patrones de Diseño Singleton Singleton instancia : Singleton getInstancia() : Singleton
  14. 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. 15. Patrones de Diseño Decorator Componente operacion()ComponenteConcreto Decorador operacion() operacion() DecoradorConcretoA DecoradorConcretoB operacion() operacion()
  16. 16. Patrones de Diseño Facade• Problema: Ocultar la complejidad de un sistema• Solución: Esconder la complejidad detrás de una fachada
  17. 17. Patrones de Diseño Facade Fachada
  18. 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. 19. Patrones de Diseño Command Orden Cliente Invocador ejecutar() OrdenConcreta receptor Receptor estado ejecutar()
  20. 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. 21. Patrones de Diseño Template Method ClaseAbstracta metodoPlantilla() operacion1() operacion2() ClaseConcreta operacion1() operacion2()

×