Sunteți pe pagina 1din 18

Universidad de CUENCA

FACULTAD INGENIERIA
ESCUELA INFORMATICA

ALUMNAS
ANGELICA CARDENAS
VIVIANA PROAO

PROFESOR
ING. LUIS IIGUEZ

TEMA
IMPLEMENTACION DE PATRONES DE
DISEO

CICLO
7 CICLO

Contenido
Universidad de CUENCA..................................................................................... 1
Contenido............................................................................................................ 2
DIAGRAMA....................................................................................................... 5
PATRON DE DISEO: Abstract Factory..........................................................5
Problema 2.......................................................................................................... 6
Problema 3.......................................................................................................... 8
DIAGRAMA ...................................................................................................... 8
PATRON DE DISEO: Adapter.......................................................................8
Problema 4.......................................................................................................... 9
DIAGRAMA..................................................................................................... 10
PATRON DE DISEO: Facade.......................................................................10
Problema 5........................................................................................................ 11
DIAGRAMA..................................................................................................... 11
PATRON DE DISEO: Singleton...................................................................11
Problema 6........................................................................................................ 11
DIAGRAMA..................................................................................................... 12
Problema 7........................................................................................................ 12
DIAGRAMA..................................................................................................... 13
Problema 8........................................................................................................ 13
DIAGRAMA..................................................................................................... 14
Problema 9........................................................................................................ 14
DIAGRAMA..................................................................................................... 15
PATRON DE DISEO: Flyweight...................................................................15
Problema 10...................................................................................................... 15
2

DIAGRAMA..................................................................................................... 16
PATRON DE DISEO: Chain of Responsability.............................................16
Problema 11...................................................................................................... 16
DIAGRAMA..................................................................................................... 17
Problema 12...................................................................................................... 17
DIAGRAMA..................................................................................................... 17

Problema 1
En un sistema bancario existen diferentes familias de productos con
caractersticas distintas.
3

Estn asociados a varios tipos de cuenta que dependen del tipo de cliente
que las abra:

Cuenta Joven, para clientes < 25 aos

Cuenta 10, para clientes entre 26 y 65 aos y con nmina domiciliada

Cuenta Oro, para mayores de 65 aos con pensin

Cuenta Estndar, para clientes que no encajan en las anteriores

Las caractersticas de los productos se resumen en la siguiente tabla:


Tipo de
Cuenta
Joven
10
Oro
Estndar

Cuenta
2% de
inters
1% de
inters
1.5 % de
inters
0.5 % de
inters

Tarjeta de
Dbito
Gratuita

Tarjeta de
crdito
NO

Regalo

Gratuita

18 Dlares

Gratuita

Gratuita

Reproductor
CD
Seguro

5 dlares

NO

NO

CD Msica

Tal y como se ve, aunque puede parecer que se ofrecen siempre los mismos
productos, existen ciertas particularidades entre ellos que hacen que sean
distintos, ciertas caractersticas que hacen que se construyan de manera
distinta.
Nos gustara tener la opcin de que al crear una cierta cuenta se crearan
automticamente los productos asociados al tipo de cuenta.

Actividad
Representar el conjunto de productos mediante un diagrama de clases
aplicando los patrones de diseo que mejor solucionen el problema

DIAGRAMA
PATRON DE DISEO: Abstract Factory

Problema 2
Queremos construir objetos complejos que pueden ser de distinto tipo (los
tipos de cuenta). Utilizando para ello otros objetos y una secuencia de pasos
definida (crear el tipo de tarjeta, regalos, etc.).
Ahora nos interesara:

Asegurarnos que se utiliza siempre el mismo proceso (la misma


secuencia de pasos) para crear una cuenta de un determinado tipo o un
lote formado por varias cuentas,...

La idea es buscar un desacople de las funciones del constructor de las


clases.

Actividad

Representar la solucin mediante un diagrama de clases aplicando los


patrones de diseo que mejor solucionen el problema.

DIAGRAMA
PATRON DE DISEO: Builder

Problema 3
Supongamos que en nuestro sistema bancario...

La clase Tarjeta tiene un mtodo


o

La clase Cuenta tiene un mtodo


o

transferir ( float importe, String cuentaDestino )

transferir ( float importe, String cuentaDestino )

El banco ha adquirido un modelo novedoso de cajeros automticos que


permiten hacer transferencias, pero la interfaz esperada para esta
operacin es:
o

order ( String target, float amount )

Actividad
Usar patrones para disear una solucin que nuestras instancias de Tarjeta y
Cuenta respondan adecuadamente a los nuevos cajeros.

DIAGRAMA
PATRON DE DISEO: Adapter

Problema 4
Volviendo al sistema bancario.... Supongamos que deseamos dotar a los
desarrolladores de la capa de presentacin de un mecanismo unificado de
acceso a la capa de dominio.
Queremos ofrecer las siguientes operaciones pblicas:

transferir(), sacarDinero(), y consultarSaldo()

Actividad
Usar patrones para disear una solucin que modele el requerimiento descrito.

DIAGRAMA
PATRON DE DISEO: Facade

10

Problema 5
Queremos hacer un agente de base de datos en el que se centralice el acceso
a la BBDD. Queremos asegurarnos de que existe una nica instancia de ese
agente, para que todos los objetos que la usen estn tratando con la misma
instancia, accedan a ella de la misma forma,...

Actividad

Representar la solucin mediante un diagrama de clases aplicando los


patrones de diseo que mejor solucionen el problema.

DIAGRAMA
PATRON DE DISEO: Singleton

Agente
#instancia: Agente
+Agente()
+getInstancia(): Agente

Problema 6
Procesamiento de un lenguaje sencillo

Supongamos que en sistema bancario, es posible realizar algunas


operaciones sobre las cuentas con un lenguaje de comandos sencillo,
que viene dado por la siguiente gramtica:

Operacin : retirada | ingreso | transferencia


retirada :

retirar CANTIDAD CUENTA

ingreso:

ingresar CANTIDAD CUENTA

transferencia:

Actividad
11

transferir CANTIDAD CUENTA CUENTA CONCEPTO

Usar patrones para disear una solucin que modele la situacin descrita.

DIAGRAMA
PATRON DE DISEO: Interpreter

Object
Analizador

+mValor: int
+mTipo: int

#mContexto: String

+Object()
+getValor()
+getTipo()
+procesar()

+procesar()
+Analizador()

ObjectCantidad

ObjectComando

+mCantidad: String
+ObjectCantidad()
+esLegal()
+procesar()

+procesar()

Ingresar
+ingresar()
+procesar()

Retirar
+retirar()
+procesar()

ObjectConcepto

ObjectCuenta

+mConcepto: String

+mCuenta: String

+ObjectConcepto()
+esLegal()
+procesar()

+ObjectCuenta()
+esLegal()
+procesar()

Transferir
+transferir()
+procesar()

Problema 7
Se est desarrollando un juego que permite al usuario interactuar con
personajes que juegan ciertos roles.
Se desea incorporar al juego una facilidad para crear nuevos personajes que se
aaden al conjunto de personajes predefinidos.
En el juego, todos los personajes sern instancias de un pequeo conjunto de
clases tales como Hroe, Villano, Prncipe o Monstruo.

12

Cada clase tiene una serie de atributos como nombre, imagen, altura, peso,
inteligencia, habilidades, etc. y segn sus valores, una instancia de la clase
representa a un personaje u otro, por ejemplo podemos tener los personajes
prncipe bobo o un prncipe listo, o monstruo bueno o monstruo malo.

Actividad
Usar patrones para disear una solucin que permita al usuario crear nuevos
personajes y seleccionar para cada sesin del juego personajes de una
coleccin de personajes creados.

DIAGRAMA
PATRON DE DISEO: Prototype

CatalogoPersonajes

Personaje

+aadirPersonaje()

+clone()

Heroe

J uego

+clone()

Villano
+clone()

Principe
+clone()

Monstruo
+clone()

Problema 8
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:
o

Cuenta ConDinero

Cuenta SinDinero

Cuenta BloqueadaJudicialmente

Actividad
Usar patrones para disear una solucin que permita delegar el
comportamiento de la operacin retirar
13

DIAGRAMA
PATRON DE DISEO: State

Cuenta
EstadoCuenta

+Entidad: String
+Sucursal: String

+retirar(importe)

+sacarDinero(importe: float)
+transferir(importe, cuentaDestino)

conDineo

sinDinero

Bloqueada

Problema 9
Diseo de un tablero de ajedrez

Sabemos que hay distintos tipos de piezas

Cada jugador tiene:


o

8 peones,

2 torres,

2 caballos,

2 alfiles,

1 reina,

1 rey.

Si supone que vamos a usar un servidor con mltiples partidas...

Se debe utilizar la menor cantidad de instancias de objetos posible para


mantener mltiples partidas.

Actividad
14

Usar patrones para disear una solucin que modele el tablero de ajedrez y las
piezas.

DIAGRAMA
PATRON DE DISEO: Flyweight

Problema 10
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.

Actividad
15

Usar patrones para disear una solucin que modele la situacin descrita.

DIAGRAMA
PATRON DE DISEO: Chain of Responsability

Problema 11

Se est construyendo una librera de clases para representar


componentes GUI.

Se ha decidido que en vez de que un programador defina la posicin de


los componentes GUI (Button, List, Dialog,..) sobre una ventana, se
incluyan manejadores de disposicin de componentes (layout manager).

Cada uno distribuye un conjunto dado de componentes grficos de


acuerdo a algn esquema de distribucin: horizontalmente,
verticalmente, en varias filas, en forma de una matriz, etc.

Debe ser posible cambiar en tiempo de ejecucin la distribucin elegida


inicialmente.

Supuesto que la clase JPanel es la que representa a un contenedor de


componentes grficos, disea una solucin para introducir en la librera
los manejadores de disposicin.

Actividad
Usar patrones para disear una solucin que modele la situacin descrita.

16

DIAGRAMA
PATRON DE DISEO: Strategy

J Panel

Layout

+mostrar()

+distribuir()

LayoutVertical

LayoutHorizontal

+distribuir()

+distribuir()

Problema 12
La librera Swing de Java incluye la clase JList para presentar una lista de
objetos (el texto que se visualiza es determinado por el mtodo toString de la
clase de los objetos) y permitir al usuario seleccionar uno de ellos.
El diseo de esta clase es un ejemplo de utilizacin del patrn Adaptador para
conseguir una clase reutilizable; se consigue que JList sea independiente de la
fuente (o modelo) de datos.
Muestra mediante un diagrama de clases el diseo que permitira a una clase
como JList visualizar diferentes listas de items, como por ejemplo un catlogo
de clientes (por ejemplo, se mostrara RUC) o un catlogo de cuentas (por
ejemplo, se mostrara el cdigo de cuenta).
Para cada clase o interfaz del diagrama indica los mtodos y atributos que son
significativos.
Ntese que la clase JList necesita disponer de informacin como el nmero de
tems a visualizar y el objeto seleccionado.
Los adaptadores almacenan la lista que se visualiza como una instancia de
Vector.

DIAGRAMA
PATRON DE DISEO: Adapter

17

J List
+mostrar()
+Seleccion()

18

ListModel
+getTamanio()
+getElemento()

AdaptadorCuentas

AdaptadorCleintes

CatalogoCuentas

CatalogoCleintes

S-ar putea să vă placă și