Análisis y Diseño OO 2

21
Módulo 2 Alejandro González Orellana Análisis y Diseño OO Clase 2 Buenas Prácticas Patrones de Diseño

description

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

Transcript of Análisis y Diseño OO 2

Page 1: Análisis y Diseño OO 2

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

Temario

• Buenas Prácticas

• Patrones de Diseño

Page 3: Análisis y Diseño OO 2

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

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

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

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

Temario

• Buenas Prácticas

• Patrones de Diseño

Page 8: Análisis y Diseño OO 2

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

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

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

Patrones de Diseño

Factory Method

Producto

ProductoConcreto

Creador

metodoFabricacion()

CreadorConcreto

metodoFabricacion()

Page 12: Análisis y Diseño OO 2

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

Patrones de Diseño

Singleton

Singleton

getInstancia() : Singleton

instancia : Singleton

Page 14: Análisis y Diseño OO 2

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

Patrones de Diseño

DecoratorComponente

operacion()

ComponenteConcreto

operacion()

Decorador

operacion()

DecoradorConcretoA

operacion()

DecoradorConcretoB

operacion()

Page 16: Análisis y Diseño OO 2

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

Patrones de Diseño

Facade

Fachada

Page 18: Análisis y Diseño OO 2

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

Patrones de Diseño

Command

Cliente

Receptor

Orden

ejecutar()

OrdenConcreta

ejecutar()

estado

Invocador

receptor

Page 20: Análisis y Diseño OO 2

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

Patrones de Diseño

Template Method

ClaseAbstracta

metodoPlantilla()operacion1()operacion2()

ClaseConcreta

operacion1()operacion2()