Está en la página 1de 6

Curso en Reutilizacin de Software

Taller de aplicacin de patrones.


UNAB
Omar Gmez
22/01/07

Problema #1 ( Aplicar Factory Method )


Existe una infinidad de protocolos de conexin a servidores de correo electrnico ( POP, IMAP, MS
Exchange, etc. ), y uno de ellos debe especificarse cuando se crea una nueva cuenta de correo en la
aplicacin. La funcionalidad de manejo de correo es transparente al protocolo utilizado, es decir, los
mensajes son creados y enviados de la misma forma, independientemente del protocolo especificado
para la cuenta.
Cul debe ser el diseo de clases que permite a la aplicacin poder manejar diferentes protocolos de
correo electrnico sin que sea necesario cambiar el diseo del mdulo que soporta la funcionalidad de
manejo de correo?
Reto:

Transparencia en el protocolo utilizado.

Posibilidad de adicionar nuevos protocolos sin afectar las clases no cambiantes del diseo.

Dilogo de configuracin de cuentas. El campo Tipo de servidor permite


especificar el protocolo para la recepcin de correos

Problema #2 ( Builder )
La aplicacin permitir que los elementos de la agenda ( los contactos ), el calendario ( las citas ) y el
memo ( las notas ) puedan ser enviados por correo electrnico. Para ello la interfaz de cada uno de
estos elementos habilitar el uso de un botn enviar por correo... que abrir una ventana de correo
donde solo se entrar el destinatario y el cuerpo del mensaje, ya que el asunto y el adjunto sern
creados automticamente a partir del elemento
Cul debe ser el diseo para que la lgica asociada al botn permita crear el asunto y el cuerpo del
mensaje para cualquier tipo de elemento ?
Reto:

Simplifique el diseo sabiendo que el correo electrnico a construir siempre tiene las misma
partes ( destinatario, asunto, cuerpo )

Al mismo tiempo permita que el diseo sea extensible para nuevos tipos de elementos en el
cliente ( por ejemplo tareas en un cronograma )

Correo creado automticamente a partir de una entrada en los contactos.


Ntese el campo Asunto y el adjunto adicionados automticamente.

Problema #3 ( Singleton )
El usuario del cliente de correo puede enviar cualquier mensaje a una papelera especial para mensajes
eliminados. Existe sola una carpeta con esta funcin, y debe ser usada una vez al tiempo por las dems
partes del programa.
Cmo diseara la clase que maneja la funcionalidad de papelera de reciclaje de tal manera que
pueda existir una sola instancia en tiempo de ejecucin?
Reto:

Simplifique el diseo y trate de utilizar el menor nmero de clases y objetos posibles

Lista de carpetas. Slo una de las carpetas puede funcionar como papelera de
reciclaje.

Problema #4 ( Composite )
Las tareas definibles en la aplicacin tienen un nombre, una descripcin y un tiempo presupuestado
para ser completadas. Tambin es posible definir tareas compuestas, en la que una tarea padre agrupa
subtareas; en este caso no es necesario que el usuario defina el tiempo de la tarea padre ya que este es
la suma del tiempo de sus subtareas.
Existe una lgica de presentacin que muestra la lista de tareas pendientes y su tiempo presupuestado,
Cual diseo de clases facilita que esta lgica mostrar el atributo de tiempo presupuestado sin
importar si se trata de una tarea simple o una compuesta ?
Reto: Simplicidad en el diseo. Hacer que la dependencia de la presentacin sobre la abstraccin que
representa las tareas sea simple y ( en los posible ) slo se de sobre una sola clase.

Lista de tareas. La columna % Terminado muestra el porcentaje que ha sido


completado de la tarea.

Problema #5 ( Observer )
El mdulo de calendario de la aplicacin es visualmente muy sofisticado, tienen varias reas:

Una lista de tareas registradas

Los detalles de la tarea actualmente seleccionada en la lista, donde los campos pueden ser
modificados si se quiere

Una vista configurable del calendario, el usuario puede escoger entre varias opciones:

Vista del da y vista compacta del mes

Vista de la semana y vista compacta del mes

Vista detallada del mes

Las vistas del calendario resaltan visualmente con un color, el rango de tiempo de la cita actualmente
seleccionada de la lista, y si este rango cambia ( el usuario lo edita ), las vistas reflejan
automticamente el cambio.
Disee un conjunto de clases que represente las abstracciones de este escenario, y que permita a las
vistas del calendario resaltar la franja de tiempo que la tarea que est actualmente seleccionada.
Reto:

Mantenibilidad: Optimizar el diseo de tal forma que las clases del calendario sean
independientes de las clases de las tareas, y aun as permitirles la interaccin deseada
anteriormente.

Calendario. Observe la vista semanal a la izquierda, por meses en la parte


superior, y la lista de tareas debajo de esta. En el extremo derecho de la barra
superior se encuentran los botones que permiten cambiar esta configuracin.

También podría gustarte