Publicado el 12 de Septiembre del 2020
702 visualizaciones desde el 12 de Septiembre del 2020
336,1 KB
54 paginas
Creado hace 17a (16/01/2008)
Patrones de diseño orientado a objetos
Programación Orientada a Objetos
Facultad de Informática
Juan Pavón Mestras
Dep. Ingeniería del Software e Inteligencia Artificial
Universidad Complutense Madrid
Hacer software no es fácil
Diseñar software orientado a objetos es difícil, y diseñar
software orientado a objetos reutilizable es todavía más
difícil
Chapter 1: Introduction. Design Patterns, The Gang of Four
...y un software capaz de evolucionar tiene que
ser reutilizable (al menos para las versiones
futuras)
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Patrones de creación
2
Diseñar para el cambio
El software cambia
Para anticiparse a los cambios en los requisitos hay que
diseñar pensando en qué aspectos pueden cambiar
Los patrones de diseño están orientados al cambio
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Patrones de creación
3
Patrones
Cómo llegar a ser un maestro de ajedrez
Primero aprender las reglas del juego
nombres de las piezas, movimientos legales, geometría y orientación
del tablero, etc.
A continuación aprender los principios
relativo valor de las piezas, valor estratégico de las casillas
centrales, jaque cruzado, etc.
Sin embargo, para llegar a ser un maestro, hay que estudiar las
partidas de otros maestros
Estas partidas contienen patrones que deben ser entendidos,
memorizados y aplicados repetidamente
Hay cientos de estos patrones
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Patrones de creación
4
Patrones
Cómo llegar a ser un maestro del software
Primero aprender las reglas
algoritmos, estructuras de datos, lenguajes de programación, etc.
A continuación aprender los principios
programación estructurada, programación modular, programación
OO, programación genérica, etc.
Sin embargo, para llegar a ser un maestro, hay que estudiar los
diseños de otros maestros
Estos diseños contienen patrones que deben ser entendidos,
memorizados y aplicados repetidamente
Hay cientos de estos patrones
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Patrones de creación
5
Patrones
Christopher Alexander (1977):
Cada patrón describe un problema que ocurre una y otra vez en nuestro
entorno, y describe la esencia de la solución a ese problema, de tal modo que
pueda utilizarse esta solución un millón de veces más, sin siquiera hacerlo de
la misma manera dos veces
Un patrón es:
una solución a un problema en un contexto particular
recurrente (lo que hace la solución relevante a otras situaciones)
enseña (permite entender cómo adaptarlo a la variante particular del
problema donde se quiere aplicar)
tiene un nombre para referirse al patrón
Los patrones facilitan la reutilización de diseños y arquitecturas
software que han tenido éxito
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Patrones de creación
6
Motivación de los Patrones
Capturan la experiencia y la hacen accesible a los no
expertos
El conjunto de sus nombres forma un vocabulario que
ayuda a que los desarrolladores se comuniquen mejor
Lenguajes de patrones
Ayudan a la gente a comprender un sistema más
rápidamente cuando está documentado con los patrones
que usa
Los patrones pueden ser la base de un manual de
ingeniería de software
Si el software se convierte en una ingeniería, las prácticas
exitosas deben ser documentadas sistemáticamente y
ampliamente difundidas
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Patrones de creación
7
Motivación de los Patrones
Facilitan la reestructuración de un sistema tanto si fue o
no concebido con patrones en mente
Reutilización:
Los patrones de diseño soportan la reutilización de
arquitecturas software
Los armazones soportan la reutilización del diseño y del
código
El software cambia
Para anticiparse a los cambios en los requisitos hay que
diseñar pensando en qué aspectos pueden cambiar
Los patrones de diseño están orientados al cambio
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Patrones de creación
8
Clasificación de patrones
Patrones arquitecturales
Expresan un paradigma fundamental para estructurar un
sistema software
Proporcionan un conjunto de subsistemas predefinidos, con
reglas y guías para organizar las relaciones entre ellos
Patrones de diseño
Compuestos de varias unidades arquitecturales más
pequeñas
Describen el esquema básico para estructurar subsistemas y
componentes
Patrones elementales (idioms)
Específicos de un lenguaje de programación
Describen cómo implementar componentes particulares de
un patrón
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Patrones de creación
9
Ejemplos de patrones
Patrones arquitecturales
• Jerarquía de capas
• Tuberías y filtros
• Cliente/Servidor
• Maestro-Esclavo
• Control centralizado y
distribuido
Patrones de diseño
• Proxies
• Factorías
• Adaptadores
• Composición
• Broker
Patrones elementales
(idioms)
• Modularidad
• Interfaces mínimas
• Encapsulación
• Objetos
• Acciones y Eventos
• Concurrencia
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Patrones de creación
10
Patrones y Armazones
Los patrones de diseño tienen descripciones más abstractas que
los armazones
Las descripciones de patrones suelen ser independientes de los
detalles de implementación o del lenguaje de programación (salvo
ejemplos usados en su descripción)
Los armazones están implementados en un lenguaje de
programación, y pueden ser ejecutados y reutilizados directamente
Los patrones de diseño son elementos arquitecturales más
pequeños que los armazones
Un armazón incorpora varios patrones
Los patrones se pueden usar para documentar armazones
Los patrones de diseño están menos especializados que los
armazones
Los armazones siempre se aplican a un dominio de aplicación
particular
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Patrones de creación
11
Armazones (Frameworks)
Características
Un armazón ofrece un conjunto integrado de funcionalidad
específica de un dominio
• P.ej.: aplicaciones financieras, servicios de telecomunicación,
sistemas de ventanas, bases de datos, aplicaciones distribuidas,
núcleos de SO
Los armazones invierten el control en ejecución entre la
aplicación y el software sobre el que está basada
• El armazón determina qué métodos se invocan en respuesta a
eventos (se reusa el código del cuerpo principal y se escribe el
código al que llama)
Un armazón es una aplicación medio-acabada
• Las aplicaciones completas se desarrollan mediante herencia, e
instanciando componentes parametrizados del armazón
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Patrones de creación
12
Armazones (Frameworks)
Diferencias con bibliotecas
LÓGI CA
ESPECÍFICA
DE LA
APLICACIÓN
invoca
BUCLE DE
EVENTOS
GUI
BASE DE
DATOS
MATH
ADTs
GUI
BUCLE DE
EVENTOS
invoca
MATH
ADTs
LÓGI CA
ESPECÍFICA
DE LA
APLICACIÓN
BASE DE DATOS
Arquitectura basada en
biblioteca de clases
Arquitectura basada en
armazón
reutilización de código reutilización de diseño y código
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Patrones de creación
13
Ejemplo de patrón de diseño
Modelo-Vista-Controlador
Utilizado en Smalltalk [Krasner and Pope, 1988]
Distribución de responsabilidades
Utilizado en JFC (componentes Swing)
objetos de control,
eventos
Controlador
Vista
visualización
en pantalla
Modelo
aplicación
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Patrones de creación
14
Descripción de patrones de diseño
Nombre e intención del patrón
Referencia al patrón
Incrementa el vocabulario de diseño
Problema y contexto
Cuándo aplicar el patrón
Solución
Estructura: elementos que conforman el diseño, sus relaciones,
responsabilidades y colaboraciones
• es una descripción abstracta de cómo una disposición de elementos
(clases y objetos) solucionan el problema
Se ilustra con un ejemplo de código
Consecuencias (positivas y negativas)
Necesidades (tiempo, memoria), aspectos de implementación y
lenguaje de programación, flexibilidad, extensibilidad, portabilidad
Patrones relacionados
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Patrones de creación
15
Categorías de patrones de diseño
Patrones de creación
Tratan de la inicialización y configuración de clases y objetos
Patrones estructurales
Tratan de desacoplar interfaz e implementación de clases y
objetos:
• ¿Cómo se componen clases y objetos?
Patrones de comportamiento
Tratan de las interacciones dinámicas entre sociedades de
clases y objetos:
• ¿Cómo interaccionan y se distribuyen responsabilidades los
objetos?
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Patrones de creación
16
Cómo seleccionar un patrón de diseño
Considerar cómo los patrones de diseño solucionan
problemas de diseño
Buscar las intenciones de cada patrón
Estudiar cómo se interrelacionan los patrones
Estudiar patrones de propósito similar
Examinar la causa de un rediseño
Considerar qué debería ser variable en un diseño
Juan Pavón Mestras
Facultad de Informática UCM, 2004
Patrones de creación
1
Comentarios de: Patrones de diseño orientado a objetos (0)
No hay comentarios