Anda di halaman 1dari 25

I NGENIERA DEL S OFTWARE DE G ESTIN II

B OLETN DE EJERCICIOS DE PATRONES DE DISEO

A NTONIO R UIZ -C ORTS PABLO T RINIDAD C ARLOS M LLER M ANUEL R ESINAS

S EVILLA , 18

DE ENERO DE

2007

First published in May 2006 by The Distributed Group ETSI Informtica Avda. de la Reina Mercedes s/n Sevilla, 41012. SPAIN

ndice general

1 Introduccin a los Patrones de Diseo . . . . . . . . . . . . . . . . . 1 2 Patrones Fachada y Mtodo Plantilla . . . . . . . . . . . . . . . . . . 3 3 Patrones Estrategia y Adaptador . . . . . . . . . . . . . . . . . . . . . . 5 4 Fbricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 5 Patrn Decorador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

II

ndice general

ndice de Figuras

3.1 4.1 5.1

Modelo de diseo de la consulta de documentos de la biblioteca . . . . . 6 Modelo de diseo de la consulta de documentos de la biblioteca . . . . 10 Modelo de diseo de la consulta de documentos de la biblioteca . . . . 14

IV

ndice de Figuras

Captulo 1 Introduccin a los Patrones de Diseo


Cuestiones generales
Todas las respuestas deben ser razonadas e incluir ejemplos cuando sea posible. CUESTIN 1.1: Enuncie las diferencias entre modelos de anlisis y diseo CUESTIN 1.2: Qu factores motivaron la aparicin de los patrones de diseo? CUESTIN 1.3: Cmo dene un patrn de diseo un problema? Y la solucin? CUESTIN 1.4: Qu caracterstica(s) de los patrones de diseo facilitan su reutilizacin? CUESTIN 1.5: A qu documentos o modelos se le aplican los patrones de diseo? CUESTIN 1.6: Es posible aplicar un patrn de manera aislada, es decir, sin tener en cuenta ningn otro? Es habitual hacerlo? CUESTIN 1.7: Cmo debemos estudiar para ser un buen diseador? CUESTIN 1.8: Indique las razones por las que el diseo es una actividad difcil

Captulo 1. Introduccin a los Patrones de Diseo

CUESTIN 1.9: Cundo se debera empezar a tener en cuenta los requisitos no funcionales? CUESTIN 1.10: Discuta sobre la madurez de la Ingeniera del Software respecto de las ingenieras clsicas y otras profesiones

Cuestiones especcas
CUESTIN 1.11: Por qu se le da tanta importancia al nombre en los patrones de diseo? Qu relacin tiene sto con la actividad realizada en esta fase? CUESTIN 1.12: Qu ventajas puede tener el Singleton cuando hay muchos desarrolladores? CUESTIN 1.13: Se puede aplicar los patrones de manera aislada? CUESTIN 1.14: Indique qu problema resuelve el patrn de diseo Singleton CUESTIN 1.15: Enuncie un ejemplo donde se deba usar el patrn Singleton que no aparezca en los apuntes CUESTIN 1.16: Indique que problemas surgen en la implementacin del Singleton y cmo se resuelven en Java CUESTIN 1.17: Enuncie el principio de Hollywood y explique cmo se aplica esta metfora a los frameworks y bibliotecas CUESTIN 1.18: Indique la diferencia entre idiom y patrn de diseo y discuta sobre las situaciones en las que ambos pueden confundirse. CUESTIN 1.19: Enuncie los antipatrones junto con una breve descripcin

Captulo 2 Patrones Fachada y Mtodo Plantilla


Cuestiones generales
Todas las respuestas deben ser razonadas e incluir ejemplos cuando sea posible. CUESTIN 2.1: Cul es el principal objetivo del patrn Facade? CUESTIN 2.2: Cul es el principal objetivo del patrn Template Method? CUESTIN 2.3: Qu ventajas ofrece el patrn Facade? CUESTIN 2.4: Qu ventajas ofrece el patrn Template Method? CUESTIN 2.5: Qu GRASP(s) se aplican en el patrn Fachada? CUESTIN 2.6: Con qu principio(s) est relacionado el patrn Template Method? Qu relacin tiene este principio con los frameworks? CUESTIN 2.7: Con qu principio(s) est relacionado el patrn Fachada? CUESTIN 2.8: Es posible aplicar los patrones tal y como se denen en los libros? Por qu? Ponga un ejemplo

Captulo 2. Patrones Fachada y Mtodo Plantilla

Cuestiones especcas
CUESTIN 2.9: Indique que modicadores (public, protected, private, abstract, nal) deberan aplicarse a los distintos mtodos implicados (el mtodo plantilla, los mtodos hook) en el patrn template method. CUESTIN 2.10: Una vez aplicado el patrn Facade, Cmo podemos usar las clases del subsistema que la fachada oculta? CUESTIN 2.11: Cmo podemos enganchar una nueva funcionalidad (clase o mtodo) usando un mtodo plantilla? Quin es el encargado de llamar/usar esta nueva funcionalidad? CUESTIN 2.12: Es posible tener una clase con un mtodo plantilla que no sea abstracta? CUESTIN 2.13: Cmo aade la fachada nueva funcionalidad al subsistema? Es correcto aadir nueva funcionalidad? CUESTIN 2.14: Es obligatorio tener una fachada por subsistema? CUESTIN 2.15: Adems de simplicar el uso del subsistema, Qu otra ventaja proporciona una fachada? CUESTIN 2.16: Cmo se puede implementar un paso opcional del mtodo plantilla sin necesidad de usar un if? CUESTIN 2.17: Una clase que contenga un mtodo plantilla con muchos mtodos abstract obliga a las subclases a realizar gran parte de la implentacin del algoritmo. Es esto deseable? En qu situaciones puede ocurrir esto? Cmo podemos evitarlo?

Captulo 3 Patrones Estrategia y Adaptador


Cuestiones generales
Todas las respuestas deben ser razonadas e incluir ejemplos cuando sea posible. CUESTIN 3.1: Cul es el principal objetivo del patrn Strategy? Y del Adapter? CUESTIN 3.2: Qu situaciones pueden motivar la utilizacin de un Adapter? Razone su respuesta. CUESTIN 3.3: Qu ventajas se consiguen con el patrn Adapter? Ponga un ejemplo. CUESTIN 3.4: Qu ventajas se consiguen con el patrn Strategy? Ponga un ejemplo. CUESTIN 3.5: Qu relacin existe entre el patrn Template Method y el patrn Strategy? Describa sus relaciones y haga una tabla con ventajas e inconvenientes de cada patrn CUESTIN 3.6: Qu diferencias existen entre el patrn Faade y el patrn Adapter?

Cuestiones especcas
CUESTIN 3.7: Cuntas clases puede adaptar un Adaptador? Si es posible que adapte a varias clases Qu lo diferencia de Faade?

Captulo 3. Patrones Estrategia y Adaptador

CUESTIN 3.8: Cmo puede conseguir que el comportamiento de una clase cambie en tiempo de ejecucin usando el patrn Strategy? Ponga un ejemplo

Problemas
PROBLEMA 3.1:
FormularioMostrarDocumentos

uses uses LectorDocumentos +leerDocumento() Monografa -temtica: string +getContent() : string Documento -titulo : string -autor : string -indice : string +getContent() : String

Manual -asignatura: Asignatura +getContent() : string

Archivo de ayuda -asignatura: Asignatura +getContent() : string

Library
InternationalJournal -theme:string +getTittle() : string +getAbstract() : string +getIndex() : string +getBody() : string +getConclusions() : string

TranslatorEng2Esp -temtica: string +translate(entrada doc : string) : string

Figura 3.1: Modelo de diseo de la consulta de documentos de la biblioteca. Se tiene una aplicacin encargada de la gestin de documentos almacenados en una biblioteca. Esta aplicacin dispone de una ventana que muestra los documentos renderizando el HTML que le proporciona la clase LectorDocumentos con el mtodo leerDocumento. Esta clase utiliza el mtodo getContent de cada tipo de documentos y transforma la cadena que devuelve a HTML para pasrselo al formulario. El diseo de esta parte de la aplicacin lo puede encontrar en la gura 3.1. La forma en que se transforma cada documento a HTML depende de su tipo, es decir, la transformacin a HTML se realizar de una forma para las monografas, de otra para los manuales, etctera.

7 1. Proponga dos diseos alternativos usando patrones de diseo para implementar las distintas formas de transformar a HTML. Comente las ventajas e inconvenientes de cada uno. 2. Una biblioteca inglesa nos permite acceder a sus revistas internacionales. Desgraciadamente la interfaz proporcionada no es adecuada y adems la informacin es proporcioanda en ingls. Hemos comprado un traductor para solucionar el problema. Proponga un diseo que arregle esta situacin.

Captulo 3. Patrones Estrategia y Adaptador

Captulo 4 Fbricas
Cuestiones generales
Todas las respuestas deben ser razonadas e incluir ejemplos cuando sea posible. CUESTIN 4.1: Cul es el principal objetivo del patrn Factory Method? Y del idiom Simple Factory? Deje clara la diferencia entre los dos patrones. CUESTIN 4.2: Qu tipos de acoplamiento resuelve Simple Factory? Ponga un ejemplo. CUESTIN 4.3: Qu relacin existe entre el patrn Template Method y el patrn Factory Method? CUESTIN 4.4: Qu ventajas ofrece el patrn Factory Method en referencia a la utilizacin/creacin de frameworks? CUESTIN 4.5: Qu GRASP(s) se aplican en el idiom Simple Factory?

Cuestiones especcas
CUESTIN 4.6: Al usar el idiom Simple Factory estamos pasando el problema de la creacin a otra clase, no lo evitamos. Qu se consigue con esto? CUESTIN 4.7: Para hacer singleton una Simple Factory Podramos poner el mtodo create como static? Qu desventaja tendra esto?

10

Captulo 4. Fbricas

CUESTIN 4.8: Cul es la ventaja del Factory Method cuando se tiene un nico producto concreto? CUESTIN 4.9: Qu diferencia hay entre un Simple Factory y un creador concreto de un Factory Method CUESTIN 4.10: El mtodo "Factory Method" tiene que ser siempre abstracto? Y protegido? CUESTIN 4.11: Es obligatorio que el Factory Method o el create del Simple Factory tomen un parmetro para decidir que tipo de objeto crear?

Problemas
PROBLEMA 4.1:
FormularioConsultaBiblioteca

uses Documento uses -titulo -autor -indice : string

Controlador Consultas -documentos: List of Documento +ConsultarDoc(entrada ttulo, entrada autor, entrada contenido) : string

uses subsistema Acceso a base de datos

instance Monografa -temtica: string Manual -asignatura: Asignatura

instance

Figura 4.1: Modelo de diseo de la consulta de documentos de la biblioteca. Se tiene una aplicacin encargada de la gestin de documentos almacenados en la biblioteca. En los inicios de esta aplicacin se gestionaban dos tipos de documentos: manuales y monografas. El diseo de la aplicacin en ese momento lo puede encontrar en la gura 4.1. En este diseo, la interfaz de usuario est separa de la clase que se encarga de recuperar y manejar los documentos (Controlador Consulta). Esta clase es la encargada de devolver los documentos obtenidos en la consulta.

11 ltimamente, se han incluido nuevos tipos de documentos a la biblioteca: revistas y publicaciones electrnicas. Se ha detectado que con el diseo actual, tenemos que reescribir el cdigo de la clase Controlador Consultas cada vez que se incluye un nuevo tipo de documentos. Adems, el retocar este cdigo es complicado pues los datos de los documentos que devuelve la consulta se obtienen de la base de datos de la biblioteca. Proponga un nuevo diagrama de clases de diseo para1 : 1. Simplicar el acceso a la base de datos. Qu patrn podra usar? Justique su respuesta. Represente el diseo con un nuevo diagrama de clases. 2. Redisear la aplicacin para que la inclusin de nuevos documentos no suponga cambiar la clase Controlador Consultas. Describa la solucin y represente su diagrama de clases. 3. Se desea poder vender esta parte de la aplicacin a otras bibliotecas, de modo que estas puedan incluir sus propios tipos de documentos. Proponga un diseo alternativo al anterior que permita la inclusin de nuevos elementos de manera totalmente transparente a la aplicacin (es decir, sin tener que cambiar la parte que vendemos nosotros).

1 Para resolver esto puede tener que utilizar conocimientos adquiridos en los temas anteriores

12

Captulo 4. Fbricas

Captulo 5 Patrn Decorador


Cuestiones generales
Todas las respuestas deben ser razonadas e incluir ejemplos cuando sea posible. CUESTIN 5.1: Cul es el principal objetivo del patrn Decorator? CUESTIN 5.2: Qu situaciones pueden motivar la utilizacin de un Decorator? Razone su respuesta con un ejemplo. CUESTIN 5.3: Qu alternativas hay a la utilizacin de un Decorator? Cundo es aconsejable no usar el patrn Decorator y usar la otra opcin? Ponga un ejemplo. CUESTIN 5.4: Qu diferencias y similitudes observa entre el patrn Decorator y el patrn Strategy?

Cuestiones especcas
CUESTIN 5.5: Es posible decorar un objeto varias veces e incluso decorar otro decorador Que clases/relaciones permiten esto? CUESTIN 5.6: Todos los decoradores y objetos a decorar heredan/implementan la misma "interfaz". Cmo se decide en una la implementacin JAVA si sta ser una Clase abstract o una intarface? CUESTIN 5.7: Como puede conseguir cambiar el objeto al que se decora en tiempo de ejecucin? Y el decorador? Proponga un cdigo de ejemplo de ambas situaciones.

14

Captulo 5. Patrn Decorador

Problemas
PROBLEMA 5.1:

FormularioMostrarDocumentosHTML

FormularioMostrarDocumentosPDF uses

MostrarDocumentosWord

uses

uses Documento -titulo : string -autor : string -indice : string +getContent() : String Manual -asignatura: Asignatura +getContent() : string Archivo de ayuda -asignatura: Asignatura +getContent() : string

uses LectorDocumentos +leerDocumento() Monografa -temtica: string +getContent() : string

Figura 5.1: Modelo de diseo de la consulta de documentos de la biblioteca. Se tiene una aplicacin encargada de la gestin de documentos almacenados en una biblioteca. Esta aplicacin dispone de varias ventanas que muestra los documentos en HTML, PDF, y Word. Se quiere que la clase LectorDocumentos proporcione el contenido en texto plano con el mtodo leerDocumento. Esta clase utiliza el mtodo getContent de cada tipo de documentos. El diseo de esta parte de la aplicacin lo puede encontrar en la gura 5.1. 1. Proponga dos diseos alternativos que permita mostrar todos los documentos en todos los posibles formatos. Discuta las ventajas e inconvenientes de ambas soluciones

A BOO This document was typeset on // using RC TEX2 . K . for L Should you want to use this document class, please send mail to ? J=?J(J@C IALE A E B .

Anda mungkin juga menyukai