get- patrones de diseño.pdf

25
I NGENIERÍA DEL S OFTWARE DE G ESTIÓN II ### B OLETÍN DE EJERCICIOS DE PATRONES DE DISEÑO A NTONIO R UIZ -C ORTÉS PABLO T RINIDAD C ARLOS MÜLLER MANUEL R ESINAS S EVILLA, 18 DE ENERO DE 2007

Upload: christo1319

Post on 21-Oct-2015

63 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: get- patrones de diseño.pdf

INGENIERÍA DEL SOFTWARE DEGESTIÓN II

###

BOLETÍN DE EJERCICIOS DE PATRONES DE DISEÑO

ANTONIO RUIZ-CORTÉS

PABLO TRINIDAD

CARLOS MÜLLER

MANUEL RESINAS

SEVILLA, 18 DE ENERO DE 2007

Page 2: get- patrones de diseño.pdf

First published in May 2006 byThe Distributed GroupETSI InformáticaAvda. de la Reina Mercedes s/nSevilla, 41012. SPAIN

Page 3: get- patrones de diseño.pdf

Índice general

1 Introducción a los Patrones de Diseño . . . . . . . . . . . . . . . . . 1

2 Patrones Fachada y Método Plantilla . . . . . . . . . . . . . . . . . . 3

3 Patrones Estrategia y Adaptador . . . . . . . . . . . . . . . . . . . . . . 5

4 Fábricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

5 Patrón Decorador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

Page 4: get- patrones de diseño.pdf

II Índice general

Page 5: get- patrones de diseño.pdf

Índice de Figuras

3.1 Modelo de diseño de la consulta de documentos de la biblioteca . . . . . 6

4.1 Modelo de diseño de la consulta de documentos de la biblioteca . . . . 10

5.1 Modelo de diseño de la consulta de documentos de la biblioteca . . . . 14

Page 6: get- patrones de diseño.pdf

IV Índice de Figuras

Page 7: get- patrones de diseño.pdf

Capítulo 1

Introducción a los Patrones deDiseño

Cuestiones generales

Todas las respuestas deben ser razonadas e incluir ejemplos cuando seaposible.

I CUESTIÓN 1.1: Enuncie las diferencias entre modelos de análisis y diseño

I CUESTIÓN 1.2: ¿Qué factores motivaron la aparición de los patrones dediseño?

I CUESTIÓN 1.3: ¿Cómo define un patrón de diseño un problema? ¿Y lasolución?

I CUESTIÓN 1.4: ¿Qué característica(s) de los patrones de diseño facilitansu reutilización?

I CUESTIÓN 1.5: ¿A qué documentos o modelos se le aplican los patronesde diseño?

I CUESTIÓN 1.6: ¿Es posible aplicar un patrón de manera aislada, es decir,sin tener en cuenta ningún otro? ¿Es habitual hacerlo?

I CUESTIÓN 1.7: ¿Cómo debemos estudiar para ser un buen diseñador?

I CUESTIÓN 1.8: Indique las razones por las que el diseño es una actividaddifícil

Page 8: get- patrones de diseño.pdf

2 Capítulo 1. Introducción a los Patrones de Diseño

I CUESTIÓN 1.9: ¿Cuándo se debería empezar a tener en cuenta los requisi-tos no funcionales?

I CUESTIÓN 1.10: Discuta sobre la madurez de la Ingeniería del Softwarerespecto de las ingenierías clásicas y otras profesiones

Cuestiones específicas

I CUESTIÓN 1.11: ¿Por qué se le da tanta importancia al nombre en lospatrones de diseño? ¿Qué relación tiene ésto con la actividad realizada en estafase?

I CUESTIÓN 1.12: ¿Qué ventajas puede tener el Singleton cuando hay mu-chos desarrolladores?

I CUESTIÓN 1.13: ¿Se puede aplicar los patrones de manera aislada?

I CUESTIÓN 1.14: Indique qué problema resuelve el patrón de diseño Sin-gleton

I CUESTIÓN 1.15: Enuncie un ejemplo donde se deba usar el patrón Single-ton que no aparezca en los apuntes

I CUESTIÓN 1.16: Indique que problemas surgen en la implementación delSingleton y cómo se resuelven en Java

I CUESTIÓN 1.17: Enuncie el principio de Hollywood y explique cómo seaplica esta metáfora a los frameworks y bibliotecas

I CUESTIÓN 1.18: Indique la diferencia entre idiom y patrón de diseño ydiscuta sobre las situaciones en las que ambos pueden confundirse.

I CUESTIÓN 1.19: Enuncie los antipatrones junto con una breve descripción

Page 9: get- patrones de diseño.pdf

Capítulo 2

Patrones Fachada y MétodoPlantilla

Cuestiones generales

Todas las respuestas deben ser razonadas e incluir ejemplos cuando seaposible.

I CUESTIÓN 2.1: ¿Cuál es el principal objetivo del patrón Facade?

I CUESTIÓN 2.2: ¿Cuál es el principal objetivo del patrón Template Method?

I CUESTIÓN 2.3: ¿Qué ventajas ofrece el patrón Facade?

I CUESTIÓN 2.4: ¿Qué ventajas ofrece el patrón Template Method?

I CUESTIÓN 2.5: ¿Qué GRASP(s) se aplican en el patrón Fachada?

I CUESTIÓN 2.6: ¿Con qué principio(s) está relacionado el patrón TemplateMethod? ¿Qué relación tiene este principio con los frameworks?

I CUESTIÓN 2.7: ¿Con qué principio(s) está relacionado el patrón Fachada?

I CUESTIÓN 2.8: ¿Es posible aplicar los patrones tal y como se definen enlos libros? ¿Por qué? Ponga un ejemplo

Page 10: get- patrones de diseño.pdf

4 Capítulo 2. Patrones Fachada y Método Plantilla

Cuestiones específicas

I CUESTIÓN 2.9: Indique que modificadores (public, protected, private, abs-tract, final) deberían aplicarse a los distintos métodos implicados (el métodoplantilla, los métodos hook) en el patrón template method.

I CUESTIÓN 2.10: Una vez aplicado el patrón Facade, ¿Cómo podemos usarlas clases del subsistema que la fachada oculta?

I CUESTIÓN 2.11: ¿Cómo podemos enganchar una nueva funcionalidad (cla-se o método) usando un método plantilla? ¿Quién es el encargado de lla-mar/usar esta nueva funcionalidad?

I CUESTIÓN 2.12: ¿Es posible tener una clase con un método plantilla queno sea abstracta?

I CUESTIÓN 2.13: ¿Cómo añade la fachada nueva funcionalidad al subsis-tema? ¿Es correcto añadir nueva funcionalidad?

I CUESTIÓN 2.14: ¿Es obligatorio tener una fachada por subsistema?

I CUESTIÓN 2.15: Además de simplificar el uso del subsistema, ¿Qué otraventaja proporciona una fachada?

I CUESTIÓN 2.16: ¿Cómo se puede implementar un paso opcional del mé-todo plantilla sin necesidad de usar un if?

I CUESTIÓN 2.17: Una clase que contenga un método plantilla con muchosmétodos abstract obliga a las subclases a realizar gran parte de la implenta-ción del algoritmo. ¿Es esto deseable? ¿En qué situaciones puede ocurrir esto?¿Cómo podemos evitarlo?

Page 11: get- patrones de diseño.pdf

Capítulo 3

Patrones Estrategia y Adaptador

Cuestiones generales

Todas las respuestas deben ser razonadas e incluir ejemplos cuando seaposible.

I CUESTIÓN 3.1: ¿Cuál es el principal objetivo del patrón Strategy? ¿Y delAdapter?

I CUESTIÓN 3.2: ¿Qué situaciones pueden motivar la utilización de unAdapter? Razone su respuesta.

I CUESTIÓN 3.3: ¿Qué ventajas se consiguen con el patrón Adapter? Pongaun ejemplo.

I CUESTIÓN 3.4: ¿Qué ventajas se consiguen con el patrón Strategy? Pongaun ejemplo.

I CUESTIÓN 3.5: ¿Qué relación existe entre el patrón Template Method y elpatrón Strategy? Describa sus relaciones y haga una tabla con ventajas e incon-venientes de cada patrón

I CUESTIÓN 3.6: ¿Qué diferencias existen entre el patrón Façade y el patrónAdapter?

Cuestiones específicas

I CUESTIÓN 3.7: ¿Cuántas clases puede adaptar un Adaptador? Si es posibleque adapte a varias clases ¿Qué lo diferencia de Façade?

Page 12: get- patrones de diseño.pdf

6 Capítulo 3. Patrones Estrategia y Adaptador

I CUESTIÓN 3.8: ¿Cómo puede conseguir que el comportamiento de unaclase cambie en tiempo de ejecución usando el patrón Strategy? Ponga unejemplo

Problemas

I PROBLEMA 3.1:

Library

+leerDocumento()-LectorDocumentos

+getContent() : String

-titulo : string-autor : string-indice : string

Documento

+getContent() : string-temática: string

Monografía

FormularioMostrarDocumentos

«uses»

«uses»

+getContent() : string-asignatura: Asignatura

Manual

+getContent() : string-asignatura: Asignatura

Archivo de ayuda

+getTittle() : string+getAbstract() : string+getIndex() : string+getBody() : string+getConclusions() : string

-theme:stringInternationalJournal

+translate(entrada doc : string) : string-temática: string

TranslatorEng2Esp

Figura 3.1: Modelo de diseño de la consulta de documentos de la biblioteca.

Se tiene una aplicación encargada de la gestión de documentos almacena-dos en una biblioteca. Esta aplicación dispone de una ventana que muestralos documentos renderizando el HTML que le proporciona la clase LectorDo-cumentos con el método leerDocumento. Esta clase utiliza el método getContentde cada tipo de documentos y transforma la cadena que devuelve a HTMLpara pasárselo al formulario. El diseño de esta parte de la aplicación lo puedeencontrar en la figura §3.1.

La forma en que se transforma cada documento a HTML depende de sutipo, es decir, la transformación a HTML se realizará de una forma para lasmonografías, de otra para los manuales, etcétera.

Page 13: get- patrones de diseño.pdf

7

1. Proponga dos diseños alternativos usando patrones de diseño para im-plementar las distintas formas de transformar a HTML. Comente lasventajas e inconvenientes de cada uno.

2. Una biblioteca inglesa nos permite acceder a sus revistas internacionales.Desgraciadamente la interfaz proporcionada no es adecuada y ademásla información es proporcioanda en inglés. Hemos comprado un traduc-tor para solucionar el problema. Proponga un diseño que arregle estasituación.

Page 14: get- patrones de diseño.pdf

8 Capítulo 3. Patrones Estrategia y Adaptador

Page 15: get- patrones de diseño.pdf

Capítulo 4

Fábricas

Cuestiones generales

Todas las respuestas deben ser razonadas e incluir ejemplos cuando seaposible.

I CUESTIÓN 4.1: ¿Cuál es el principal objetivo del patrón Factory Method?¿Y del idiom Simple Factory? Deje clara la diferencia entre los dos patrones.

I CUESTIÓN 4.2: ¿Qué tipos de acoplamiento resuelve Simple Factory? Pongaun ejemplo.

I CUESTIÓN 4.3: ¿Qué relación existe entre el patrón Template Method y elpatrón Factory Method?

I CUESTIÓN 4.4: ¿Qué ventajas ofrece el patrón Factory Method en referenciaa la utilización/creación de frameworks?

I CUESTIÓN 4.5: ¿Qué GRASP(s) se aplican en el idiom Simple Factory?

Cuestiones específicas

I CUESTIÓN 4.6: Al usar el idiom Simple Factory estamos pasando el proble-ma de la creación a otra clase, no lo evitamos. ¿Qué se consigue con esto?

I CUESTIÓN 4.7: Para hacer singleton una Simple Factory ¿Podríamos ponerel método create como static? ¿Qué desventaja tendría esto?

Page 16: get- patrones de diseño.pdf

10 Capítulo 4. Fábricas

I CUESTIÓN 4.8: ¿Cuál es la ventaja del Factory Method cuando se tiene unúnico producto concreto?

I CUESTIÓN 4.9: Qué diferencia hay entre un Simple Factory y un creadorconcreto de un Factory Method

I CUESTIÓN 4.10: ¿El método "Factory Method" tiene que ser siempre abs-tracto? ¿Y protegido?

I CUESTIÓN 4.11: ¿Es obligatorio que el Factory Method o el create del SimpleFactory tomen un parámetro para decidir que tipo de objeto crear?

Problemas

I PROBLEMA 4.1:

+ConsultarDoc(entrada título, entrada autor, entrada contenido) : string-documentos: List of Documento

Controlador Consultas

-titulo-autor-indice : string

Documento

-temática: stringMonografía

«subsistema»Acceso a base de datos

FormularioConsultaBiblioteca

«uses»

«uses»

-asignatura: AsignaturaManual

«uses» «instance»

«instance»

Figura 4.1: Modelo de diseño de la consulta de documentos de la biblioteca.

Se tiene una aplicación encargada de la gestión de documentos almacena-dos en la biblioteca. En los inicios de esta aplicación se gestionaban dos tiposde documentos: manuales y monografías. El diseño de la aplicación en esemomento lo puede encontrar en la figura §4.1.

En este diseño, la interfaz de usuario está separa de la clase que se encargade recuperar y manejar los documentos (Controlador Consulta). Esta clase es laencargada de devolver los documentos obtenidos en la consulta.

Page 17: get- patrones de diseño.pdf

11

Últimamente, se han incluido nuevos tipos de documentos a la biblioteca:revistas y publicaciones electrónicas.

Se ha detectado que con el diseño actual, tenemos que reescribir el códigode la clase Controlador Consultas cada vez que se incluye un nuevo tipo dedocumentos. Además, el retocar este código es complicado pues los datos delos documentos que devuelve la consulta se obtienen de la base de datos de labiblioteca. Proponga un nuevo diagrama de clases de diseño para†1:

1. Simplificar el acceso a la base de datos. ¿Qué patrón podría usar? Justifi-que su respuesta. Represente el diseño con un nuevo diagrama de clases.

2. Rediseñar la aplicación para que la inclusión de nuevos documentos nosuponga cambiar la clase Controlador Consultas. Describa la solución yrepresente su diagrama de clases.

3. Se desea poder vender esta parte de la aplicación a otras bibliotecas, demodo que estas puedan incluir sus propios tipos de documentos. Pro-ponga un diseño alternativo al anterior que permita la inclusión de nue-vos elementos de manera totalmente transparente a la aplicación (es de-cir, sin tener que cambiar la parte que vendemos nosotros).

†1Para resolver esto puede tener que utilizar conocimientos adquiridos en los temas ante-riores

Page 18: get- patrones de diseño.pdf

12 Capítulo 4. Fábricas

Page 19: get- patrones de diseño.pdf

Capítulo 5

Patrón Decorador

Cuestiones generales

Todas las respuestas deben ser razonadas e incluir ejemplos cuando seaposible.

I CUESTIÓN 5.1: ¿Cuál es el principal objetivo del patrón Decorator?

I CUESTIÓN 5.2: ¿Qué situaciones pueden motivar la utilización de un De-corator? Razone su respuesta con un ejemplo.

I CUESTIÓN 5.3: ¿Qué alternativas hay a la utilización de un Decorator?¿Cuándo es aconsejable no usar el patrón Decorator y usar la otra opción? Pon-ga un ejemplo.

I CUESTIÓN 5.4: ¿Qué diferencias y similitudes observa entre el patrón De-corator y el patrón Strategy?

Cuestiones específicas

I CUESTIÓN 5.5: Es posible decorar un objeto varias veces e incluso decorarotro decorador ¿Que clases/relaciones permiten esto?

I CUESTIÓN 5.6: Todos los decoradores y objetos a decorar heredan/implementanla misma "interfaz". ¿Cómo se decide en una la implementación JAVA si éstaserá una Clase abstract o una intarface?

I CUESTIÓN 5.7: ¿Como puede conseguir cambiar el objeto al que se decoraen tiempo de ejecución? ¿Y el decorador? Proponga un código de ejemplo deambas situaciones.

Page 20: get- patrones de diseño.pdf

14 Capítulo 5. Patrón Decorador

Problemas

I PROBLEMA 5.1:

+leerDocumento()-LectorDocumentos

+getContent() : String

-titulo : string-autor : string-indice : string

Documento

+getContent() : string-temática: string

Monografía

FormularioMostrarDocumentosHTML

«uses»

«uses»

+getContent() : string-asignatura: Asignatura

Manual

+getContent() : string-asignatura: Asignatura

Archivo de ayuda

FormularioMostrarDocumentosPDF MostrarDocumentosWord

«uses»«uses»

Figura 5.1: Modelo de diseño de la consulta de documentos de la biblioteca.

Se tiene una aplicación encargada de la gestión de documentos almacena-dos en una biblioteca. Esta aplicación dispone de varias ventanas que muestralos documentos en HTML, PDF, y Word. Se quiere que la clase LectorDocumen-tos proporcione el contenido en texto plano con el método leerDocumento. Estaclase utiliza el método getContent de cada tipo de documentos. El diseño deesta parte de la aplicación lo puede encontrar en la figura §5.1.

1. Proponga dos diseños alternativos que permita mostrar todos los docu-mentos en todos los posibles formatos. Discuta las ventajas e inconve-nientes de ambas soluciones

Page 21: get- patrones de diseño.pdf
Page 22: get- patrones de diseño.pdf
Page 23: get- patrones de diseño.pdf
Page 24: get- patrones de diseño.pdf
Page 25: get- patrones de diseño.pdf

This document was typeset on // using RC–BOOK α. for LATEX2ε.Should you want to use this document class, please send mail to

[email protected].