Análisis y Diseño OO 2

Post on 03-Jul-2015

1.202 views 0 download

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

Módulo 2

Alejandro González Orellana

Análisis y Diseño OO

Clase 2

• Buenas Prácticas• Patrones de Diseño

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

Producto

ProductoConcreto

Creador

metodoFabricacion()

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

getInstancia() : Singleton

instancia : 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

DecoratorComponente

operacion()

ComponenteConcreto

operacion()

Decorador

operacion()

DecoradorConcretoA

operacion()

DecoradorConcretoB

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

Cliente

Receptor

Orden

ejecutar()

OrdenConcreta

ejecutar()

estado

Invocador

receptor

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