Академический Документы
Профессиональный Документы
Культура Документы
El siguiente trabajo pretende presentar una batera de ejercicios relacionados con la utilizacin de patrones de diseo, concretamente con los propuestos por [Gamma y otros, 95] en su libro Design Patterns. La solucin a los ejercicios propuestos deber seguir siempre la misma idea; identificacin del patrn o patrones tiles para abordar el problema presentado, justificacin de la eleccin, diagrama de clases resaltando aquellos atributos o mtodos significativos y, finalmente, implementacin mediante un lenguaje con capacidades para orientacin a objetos, preferiblemente en Java.
Patrones de Creacin
Dentro de esta seccin se propondrn ejercicios relacionados con la utilizacin de patrones de creacin. Los patrones de creacin propuestos por Gamma y otros son: Abstract Factory, Builder, Factory Method, Prototype y Singleton. Una descripcin de los mismos puede encontrarse en la pgina web y en las transparencias utilizadas en las clases tericas de la asignatura. 1. Los Juegos Reunidos Geyper, elegidos como el sexto juguete ms significativo del siglo XX segn la encuesta realizada entre la distribucin por Juguetes y Juegos de Espaa, vuelven a Espaa lanzados por la firma Bizak, disponibles en cajas de 25, 35, 45 y 55 juegos. La firma pretende desarrollar una versin virtual que contemple los mismos juegos. Los Juegos Reunidos Geyper, conocidos por millones de espaoles, renen los juegos de mesa clsicos y ms entretenidos, con una imagen renovada y una magnfica presentacin.
Plantese el desarrollo del juego virtual mediante la utilizacin de patrones de diseo. Tngase en cuenta que lo que se pretende desarrollar son diferentes juegos de mesa que comparten fichas, dados, cartas, ruletas, de diferentes tipos que estn disponibles en el juego fsico. 2. Se est desarrollando una aplicacin de edicin de textos que ser utilizada tanto en Estados Unidos como en Europa. Como se sabe la construccin de las fechas es diferente segn donde nos encontremos, en Estados Unidos es mes / da / ao, mientras que en Europa es da / mes / ao. Desarrollar utilizando patrones de diseo los generadores de fecha para que puedan confeccionarse documentos para uno y otro destino. 3. Siguiendo con los juguetes, queremos construir tres clases de juguetes: Pokemon, BarbieGirl y Superman. Los mismos disponen de acciones de animacin asociadas a su encendido y su apagado, estas acciones son diferentes para cada tipo de juguete. Implemntese utilizando patrones estos tres tipos de juguetes. 4. Se quiere desarrollar una aplicacin donde los nios puedan dar color a unos dibujos ya prediseados, de forma que los colores existen en un gestor de colores o paleta restringida de los mismos. El usuario podr seleccionar entre los colores ya establecidos y, as, proceder a dar color a los dibujos antes mencionados. Qu patrn utilizara s? Por qu?. 5. Dibjese el diagrama de clases correspondiente al patrn Singleton. Y utilizando la sintaxis de Java escrbase una posible implementacin del mismo.
Patrones Estructurales
En esta seccin se presentarn ejercicios relacionados con los patrones estructurales, con ellos se proporcionan mecanismos de cmo las clases y los objetos se componen para formar estructuras mayores. Un patrn estructural de clases utiliza la herencia para componer interfaces o implementaciones, por ejemplo el patrn Adapter. Un patrn estructural de objetos describe la forma en que se componen objetos para obtener nueva funcionalidad, adems se aade la flexibilidad de cambiar la composicin en tiempo de ejecucin, lo cual no es posible con la composicin de clases estticas, como ejemplo de este tipo de patrones se puede mencionar al patrn Composite. Ejemplos adicionales de este tipo de patrones son Bridge, Decorator, Faade, Flyweight o Proxy. 1. Dado el diagrama de clases que muestra la Figura 1, explica cada una de las entidades en l representadas y el papel que desempea cada una de ellas.
Figura 1. Diagrama de clases correspondiente al patrn Adapter Bajo que circunstancias podras utilizar el patrn antes representado. 2. Se quiere desarrollar una aplicacin de gestin de stock de una gran superficie comercial. La misma debera proporcionar la informacin asociada a los productos en stock de diferentes formas, por ejemplo en ASCII o en HTML, ya que no se sabe exactamente que futura utilidad se le dar a la aplicacin. Propngase una posible implementacin que de solucin al problema planteado, de forma que la posibilidad de dar lugar a diferentes formatos se pueda abordar de forma no traumtica para la aplicacin principal. 3. Se pretende desarrollar una aplicacin para la gestin del mismo stock que el ejercicio anterior. Esta vez se conoce algo ms del tipo de productos que se desean gestionar, estamos en la seccin de msica y en ella podemos encontrar los viejos LPs de vinilo, CDs, DVDs y casetes, tambin hay lotes de los productos anteriores y su gestin debera ser similar a los productos individuales. Disese el esqueleto de la aplicacin necesario para gestionar dicho stock de tal forma que cuando alguno de los productos no tenga un nmero mnimo de elementos constituyendo el stock se le notifique automticamente al proveedor. 4. Se desea crear una aplicacin para la gestin de la Biblioteca de la Universidad. La misma dispone de libros y discos musicales. Entre los libros hay algunos que pueden prestarse y otros que por el contrario constituyen material de referencia y no tienen esa propiedad. Los discos de msica, por el contrario, pueden prestarse. El material que es susceptible de ser prestado tambin puede ser reservado. Proporcinese una solucin al supuesto planteado utilizando patrones de diseo. 5. Se tiene que gestionar la informacin perteneciente al conjunto de empleados de una empresa. Como se puede suponer alguna de esta informacin es confidencial y no debera estar accesible a cualquier individuo que tenga acceso a los terminales, por ejemplo, el salario de los diferentes profesionales que pertenecen a la empresa. Cmo podra proporcionarse una solucin a este supuesto utilizando patrones de diseo?. Qu patrn utilizaras?. Cmo lo implementaras?
Patrones de Comportamiento
Este tipo de patrones est relacionado con algoritmos y la asignacin de responsabilidades entre objetos. Describen, adems de los patrones de objetos y clases, los patrones de comunicacin entre ellos. Los patrones de comportamiento de clases utilizan la herencia para distribuir el comportamiento entre las clases, como ejemplo se puede citar al patrn Template Method. Por su parte los patrones de comportamiento de objetos utilizan la composicin de objetos en lugar de la herencia, por ejemplo como un grupo de objetos interconectados cooperan para realizar una tarea que un solo objeto no puede hacer por s mismo, como representante de este tipo de patrones se puede mencionar al patrn Observer. Patrones adicionales de comportamiento son: Chain of Responsability, Command, Interpreter, Iterator, Memento, Mediator, State, Strategy o el Visitor. Seguidamente se proponen una serie de supuestos prcticos cuya solucin puede verse favorecida por la utilizacin de patrones de diseo, concretamente por los correspondientes a los patrones de diseo de comportamiento. 1. Qu patrn se est utilizando en el siguiente cdigo? import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Test extends JFrame { public static void main(String args[]) { Test frame = new Test(); frame.setTitle("Swing Actions"); frame.setSize(500, 400); frame.setLocation(400, 200); frame.show(); } public Test() { JMenuBar mb = new JMenuBar(); JMenu fileMenu = new JMenu("File");
super("show dialog"); } public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog((Component)e.getSource(), "An action generated this dialog"); } }
4. Aadir el agua y mezclar con la masa. 5. Aadir la harina y remover. 6. Amasar. 7. Dejar reposar durante .... horas 8. Trocear la masa 9. Dar cortes a las piezas 10. Llevar al horno. 6. Se dispone de una empresa consultora especializada en dar soluciones desde dos puntos de vista; el financiero o econmico y el informtico, dentro de esos dos criterios se realizan anlisis de costes y anlisis de riesgos. Las empresas a auditar estaran organizadas en departamentos y dentro de esos departamentos habra diferentes responsables cuyo trabajo sera el objeto de estudio (Director, Gestor, Ingeniero, etc...). Determnese que patrn de diseo podra utilizarse para representar lo ms adecuadamente esta filosofa de trabajo, es decir, la asociada a la consultora.