Вы находитесь на странице: 1из 5

Universidad Autnoma de Manizales Facultad de Ingeniera Departamento de Ciencias Computacionales Especializacin en Ingeniera de Software

Mdulo: Patrones De Diseo De Software Docente: Jamir Antonio vila Mojica Estudiante: Nestor Augusto Tous Maya Examen Final 2011 Este examen es para ser completado y enviado por cada estudiante individualmente sin la ayuda ninguna otra persona. 1. Intenciones a. [1 punto] Qu patrn de diseo define una dependencia uno a muchos entre objetos de tal manera que cuando cambia el estado de un objeto, todos los objetos dependientes son actualizados automticamente? El patrn Observer. b. [1 punto] Qu patrn de diseo permite agregar responsabilidades adicionales a un objeto dinmicamente y proporciona una alternativa flexible frente a la herencia para ampliar la funcionalidad? El patrn Decorator. c. [1 punto] Qu patrn de diseo desacopla una abstraccin de su implementacin de tal manera que ambas pueden variar independientemente? El parn Bridge. d. [1 punto] Qu patrn de diseo asegura que una clase tenga nicamente una instancia, y adems proporciona un punto de acceso global a l? El patrn Singleton. e. [1 punto] Qu patrn define una interfaz para crear un objeto, y permite que sus subclases decidan qu clase instancias. Es decir, delega la instanciacin de una clase a sus subclases? El patrn Factory Method. f. [1 punto] Qu patrn de diseo proporciona una interfaz para crear familias de objetos relacionados o dependientes sin especificar sus clases concretas? El patrn Abstract Factory. g. [1 punto] Qu patrn de diseo separa la construccin de un objeto complejo de su representacin de tal manera que el mismo proceso de construccin pueda crear diferentes representaciones? El patrn Builder. h. [1 punto] Qu patrn de diseo define una familia de algoritmos, los encapsula, y

hace intercambiables; adems de permitir que el algoritmo vare independientemente de sus clientes? El patrn Strategy. i. [1 punto] Qu patrn de diseo organiza los objetos en estructuras tipo rbol para representar jerarquas todo-parte y permite que los clientes traten a las colecciones de objetos as como a los objetos individuales de formar uniforme? El patrn Composite. j. [1 punto] Qu patrn de diseo proporciona un sustituto a otro objeto para controlar el acceso a l? El patrn Proxy. k. [1 punto] Qu patrn de diseo evita el acoplamiento entre el emisor de una solicitud y su receptor dando a ms de un objeto la posibilidad de manejar la solicitud; adems, encadena los objetos receptores y pasa la solicitud a lo largo de la lista hasta que objeto la maneje? El patrn CoR (Cadena de Responsabilidad). l. [1 punto] Qu patrn de diseo encapsula una solicitud como un objeto, permitiendo parametrizar los clientes con diferentes solicitudes, encolar, o registrar las solicitudes, y soportar operaciones para deshacer? El patrn Command. 2. [3 puntos] Identifique el siguiente patrn y denomine cada una de sus clases:

Nombre del patrn: Bridge A: Abstraction B: Implementor C: RefinedAbstraction D: ConcreteImplementorA E: ConcreteImplementorB Justificacin: Este patrn maneja por separado la abstraccin de la implementacin, esta separacin se evidencia entre las clases B,C,D (implementacin) y A,C (abstraccin). Se nota como las clases concretas heredan de sus respectivas abstractas: C, D heredan de B y por otro lado C hereda de A. El puente o Bridge se ve claramente entre la abstraccin y la implementacin, en medio de las

clases A y B. El patrn Bridge desacopla una abstraccin de su implementacin, de modo que cada una pueda variar de forma independiente. 3. [5 puntos] Para configurar un servidor en el centro de datos se han definido los siguiente pasos: a. Instalar el sistema operativos. b. Instalar los parches crticos. c. Habilitar los servicios de red. d. Instalar el servidor de aplicaciones. e. Instalar las aplicaciones. Considerando, que de acuerdo con las necesidades del cliente, se pueden configurar las mquinas con software propietario o de cdigo abierto, Que patrn de diseo se puede usar para ilustrar esta situacin?. Dibuje un diagrama de clases y explique su diseo. Diagrama de clases:

Explicacin: El patrn Builder permite que el mismo proceso de construccin pueda crear diferentes representaciones. En este caso el proceso de configuracin es siempre el mismo, lo que vara es la tecnologa utilizada para llevarlo a cabo (propietaria o libre); por esto el proceso se define en ConfiguradorDeServidor y cada configuracin de servidor hereda de dicha clase el proceso general, implementndolo como sea requerido.

4. [5 puntos] Es el patrn observador un buen ejemplo del denominado principio OpenClosed? Justifique su respuesta. Si, el principio Open-Closed dice que el software debe estar cerrado para modificaciones y abierto para su extensin, esto significa que el desarrollo no debe sufrir modificaciones pero que el software puede extender su funcionalidad adicionando mdulos. El patrn Observador est pensado para realizar variaciones de los objetos y que el sistema conozca dichas variaciones sin necesidad de modificar el cdigo fuente del software.

5. [5 puntos]. Identifique las similitudes y diferencias entre los patrones Decorator y Cadena de Responsabilidad (CoR). Similitudes Ambos permiten extender la funcionalidad aadiendo objetos dinmicamente. Son tiles cuando el sistema puede extender mucho su funcionalidad. Diferencias El Decorator pretende aadir funcionalidad a un objeto y CoR pretende que el objeto adecuado responda una petcin. El Decorator tiene un objeto principal con funcionalidades asignadas, CoR tiene una cadena de objetos encadenados del mismo nivel. Decorator es un patrn estructural y CoR es de comportamiento.

6. [10 puntos] Formule un problema que resuelva el patrn Mediator. Disee y explique la solucin al problema. Descripcin del problema: Visualizacin de mensajes de correo electrnico. Un usuario tiene que ver muchos correos electrnicos, estos estn almacenados en un servidor de correo y tienen unos posibles estados (nuevo, ledo). Sin un sistema visor de correo electrnico el usuario tiene que consultar mensaje por mensaje directamente en el servidor. Diagrama de clases:

Explicacin: El Visor de email concreto NesMail permite revisar cada mensaje, sabiendo cual es posterior a cual y en que estado se encuentra cada mensaje sin necesidad de que cada mensaje tenga referencias a los dems (caso que se dara de no tener a NesMail, pues el usuario tendra que entrar directamente a cada mensaje y de ah saltar referenciando directamente a otro y a otro sucesivamente). La clase abstracta VisorEmail (Mediator) proporciona la interfaz para comunicarse con los Email (ConcreteColleague). NesMail (ConcreteMediator) conoce los Email y la comunicacin entre ellos. 7. [5 puntos]. Su compaa est construyendo un software de contabilidad que ser

distribuido en Colombia y Brasil inicialmente. Le encomendaron el diseo del mdulo de clculo de impuestos, qu patrn de diseo es el ms adecuado? Use un diagrama de clases para ilustrar su diseo y explquelo. Explicacin: Inicialmente pensara en los patrones Bridge y Factory Method, el Bridge en caso de que la contabilidad vare incluso dentro de un pas determinado y el Factory Method en caso de que la contabilidad solamente vare segn el pas. Asumiendo que en cada pas la contabilidad se maneja de la misma forma, el patrn ms adecuado es el Factory Method, en el cual se tiene una interfaz para la contabilidad y dos objetos concretos (contabilidad para Brasil y contabilidad para Colombia. Diagrama de clases:

8. [5 puntos]. Enuncie y explique los principios bsicos seguidos por el catlogo GoF. Principio 1. Programar para interfaces y no para implementacin Explicacin Se trata de trabajar con herencia de interfaces por sobre la herencia de clases. De este modo se reduce el acoplamiento, se delega la responsabilidad de crear objetos a las interface y no a los clientes lo cual favorece el encapsulamiento. Se trata de obtener nuevas funcionalidades con base en la creacin de objetos en vez de mediante la herencia. Mediante la herencia se aumenta el acoplamiento del sistema y se generan dependencias entre las clases y subclases, lo cual se evita con la composicin.

2. Favorecer la composicin de objetos frente a la herencia de clases

Вам также может понравиться