Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Is1 t06 EjPatrones
Is1 t06 EjPatrones
EJERCICIOS
Ingeniera del Software I
Ingeniera del Software I Patrones de Diseo
Carlos Blanco
Universidad de Cantabria
Introduccin
Solucin:
Modificar el cdigo de Tarjeta (y de Cuenta), aadiendo un nuevo
mtodo
... solucin poco elegante
Ingeniera del Software I Patrones de Diseo
Adaptador
ADAPTER
Sistema bancario
Nos centramos en la clase Cuenta
Sabemos que una parte importante del comportamiento de este
objeto para la operacin retirar(float importe) depende del
estado de la cuenta, que puede ser:
Cuenta ConDinero
Cuenta SinDinero
Cuenta BloqueadaJudicialmente
Queremos delegar el comportamiento de la operacin retirar,
cmo lo haramos?
Ingeniera del Software I Patrones de Diseo
Apuntes de Ingeniera del Software II
164 (c) Macario Polo Usaola
Cuenta
# mPKEnti dad : String
# mPKSucursal : String
# mPKDC : Stri ng
# mPKCCC : String
+ sacarDi nero(importe : float )
+ transferir(i mporte : float, cuentaDestino : Cuenta)
EstadoCuenta
+ reti rar(importe : float)
#mEstado
ConDinero SinDinero
BloquedaJudi ci al mente
IMarcadorDe
Telefono
Figura 141. Ejemplo del patrn Estado
+ retirar ( importe : float )
Estado
STATE
Ingeniera del Software I Patrones de Diseo
Apuntes de Ingeniera del Software II
164 (c) Macario Polo Usaola
Cuenta
# mPKEnti dad : String
# mPKSucursal : String
# mPKDC : Stri ng
# mPKCCC : String
+ sacarDi nero(importe : float )
+ transferir(i mporte : float, cuentaDestino : Cuenta)
EstadoCuenta
+ reti rar(importe : float)
#mEstado
ConDinero SinDinero
BloquedaJudi ci al mente
IMarcadorDe
Telefono
Figura 141. Ejemplo del patrn Estado
! De esta manera, agregar nuevos estados
y modificar los existentes es muy sencillo.
! En ningn caso habra que tocar el cdigo
de la clase Cuenta.
Problema
Gestor de ayuda
Tenemos varias clases Boton, Pantalla y Aplicacion.
Cada una con un mtodo ayuda().
Queremos desacoplar al emisor de un mensaje del receptor, de forma
que se pueda ejecutar la operacin ayuda() en cualquier objeto.
Si el objeto es capaz de hacerse cargo de la operacin, la ejecutar, y
si no la pasar a otro (sucesor) hasta que alguien se haga cargo del
mensaje.
Cmo podramos modelarlo?
Ingeniera del Software I Patrones de Diseo
Cadena de Responsabilidad
CHAIN OF RESPONSIBILITY
Ingeniera del Software I Patrones de Diseo
Problema