DaooExRe A
DaooExRe A
DaooExRe A
Sólo una de las respuestas es válida. Las respuestas correctas se puntuarán con +1,0, mientras que las
respondidas de manera incorrecta se puntuarán con -0,25. Las no contestadas no tendrán influencia ni positiva
ni negativa en la nota.
Pregunta 2: El patrón Singleton (Único) aporta los siguientes beneficios (indica la respuesta falsa):
a. Permite un espacio de nombres reducido.
b. Permite el refinamiento de operaciones y la representación.
c. Permite un número variable de instancias.
d. Permite el acceso paralelo a todas las instancias.
Pregunta 4: Algunas de las ventajas e inconvenientes del patrón Visitor (Visitante) son (indica la respuesta
incorrecta):
a. El visitante facilita añadir nuevas operaciones.
b. Un visitante agrupa operaciones relacionadas y separa las que no lo están.
c. El visitante puede acumular el estado a medida que va visitando cada elemento de la estructura de
objetos.
d. El visitante nunca rompe la encapsulación.
Pregunta 6: CQué patrón proporciona una interfaz unificada para un conjunto de interfaces de un
su bsistema?:
a. Bridge (puente)
b. Facade (Fachada)
c. Adapter (Adaptador)
d. Proxy (Apoderado)
Pregunta 7: Indique cual de las siguientes opciones declarará un método en una clase que fuerza a una
subclase a implementarlo:
a. static void calcular (double val) {)
b. abstract public void calcular ();
c. public native double calcular ();
d. protected void calcular (double val){)
Pregunta 10: Sea el siguiente código modificado de la clase Foo mostrada en el libro base:
import java.util.*;
public class Foo {
public static void main (String args []) {
ArrayList <String> a = new ArrayList ();
for (int ¡=O; i<=5; i++)
{
a.add("Holafl);
1
System.out.println("Foo");
1
1
CCuál es el resultado de compilar y ejecutar este código?
a. La Iínea 7 provoca un warning pero se ejecuta sin problemas proporcionando el resultado por pantalla
"Foo".
b. Se produce un error de ejecución al definir un ArrayList de 5 elementos y querer insertar 6 elementos.
c. No se produce ningún tipo de error y proporciona el resultado por pantalla "Foo".
d. La Iínea 4 provoca un warning pero se ejecuta sin problemas proporcionando el resultado por pantalla
"Foo".
Pregunta 11: En un sistema de gestión de una cámara digital solamente se puede sacar una foto a la vez. Se
quiere usar el patrón Singleton para controlar este proceso.
a) [l punto] Justifica la elección de este patrón y analiza las ventajas y desventajas de la elección. CHay
otro patrón que se pueda haber usado en vez de éste?
b) [l punto] Plantea el diagrama de clases necesario para abordar la implementación del problema
propuesto. Comienza con un planteamiento genérico y luego particularízalo al problema concreto.
c) [1,25 puntos] lmplementa en Java el diagrama de clases propuesto.
Pregunta 12: Para un programa de dibujo que incluye las formas Linea y Circulo se quiere usar el patrón
Flyweight para que el almacenamiento y control de las formas sea mejor y más eficiente.
a) [l punto] Justifica la elección de este patrón y analiza las ventajas y desventajas de la elección. CHay
otro patrón que se pueda haber usado en vez de éste?
b) [l punto] Plantea el diagrama de clases necesario para abordar la implementación del problema
propuesto. Comienza con un planteamiento genérico y luego particularízalo al problema concreto.
c) [1,25 puntos] lmplementa en Java el diagrama de clases propuesto.
PARTETEÓRICA- TEST[2,5 PUNTOS]:
Sólo una de las respuestas es válida. Las respuestas correctas se puntuarán con +1,0, mientras que las
respondidas de manera incorrecta se puntuarán con -0,25. Las no contestadas no tendrán influencia ni
positiva ni negativa en la nota.
Pregunta 1:(POO) CCómo se puede declarar un array en Java. Indica la respuesta incorrecta:
a. int[] mylntArray = new int[3];
b. int[] mylntArray = {1,2,3);
c. int[] mylntArray = new int{1,2,3);
d. int[] mylntArray = new int[]{1,2,3);
Pregunta 2: (POO) CQué significa el siguiente fragmento de código Java?: i n t edad() { return 25; )
a. Hay un método "int edad" que no recibe ningún parámetro de entrada y devuelve el valor 25.
b. Hay un método "edad" que no recibe ningún parámetro de entrada y devuelve un entero cuyo valor es 25.
c. Hay un variable "int" cuyo valor es "edad() { return 25; )"
d. El fragmento no representa un fragmento de código legal en Java.
a. Fachada
b. Puente
c. Método de fabricación
d. Constructor
Pregunta 4: CCómo se llama un patrón que proporciona un modo de acceder secuencialmente a los
elementos de un objeto agregado sin necesidad de conocer su organización interna C:
a. Método de fabricación
b. Compuesto
c. lterador
d. Prototipo
[--. I ..........................................................y-3
$................................ ................................ i
s{a:&- $i:7$43z~'&Q
.
.S, *y,*'i+\.yl
*....j .--......
.P; 3t
-....... 1 ~ ~ q ~ ; r i f i s ~ a r <$ ; ~
L............................................
b h
3
[ <xz:ae~fiarfisQ&-<j
$ .....................................................
,
1
st;3$$ <$:?$$$$$~$$a~x$e
1 Q~$Q*&$- I
class Foo {
int vrx = 5;
Pregunta 10: Un patrón que utilizamos para crear un objeto representativo que controla el acceso a otro
objeto que puede ser remoto, complejo de crear o que necesita de algún tipo de protección recibe el nombre
de:
a. Memento
b. Bridge
c. Proxy
d. Visitante
Pregunta 11: En un sistema de gestión de una grabadora de DVD solamente se puede grabar un disco a la vez.
Se quiere usar el patrón Singleton() para controlar este proceso.
a) [l punto] Justifica la elección de este patrón y analiza las ventajas y desventajas de la elección. CHay
otro patrón que se pueda haber usado en vez de éste?
b) [l punto] Plantea el diagrama de clases necesario para abordar la implementación del problema
propuesto. Comienza con un planteamiento genérico y luego particularízalo al problema concreto.
c) [1,25puntos] lmplementa en Java el diagrama de clases propuesto.
Pregunta 12: Para un procesador de texto que permite los números 1- 9 se quiere usar el patrón Flyweight ()
para que el almacenamiento y control del texto sea mejor y más eficiente.
a) [l punto] Justifica la elección de este patrón y analiza las ventajas y desventajas de la elección. CHay
otro patrón que se pueda haber usado en vez de éste?
b) [l punto] Plantea el diagrama de clases necesario para abordar la implementación del problema
propuesto. Comienza con un planteamiento genérico y luego particularízalo al problema concreto.
c) [1,25puntos] lmplementa en Java el diagrama de clases propuesto.
PARTETEÓRICA- TEST[2,5 PUNTOS]:
Sólo una de las respuestas es válida. Las respuestas correctas se puntuarán con +1,0, mientras que las
respondidas de manera incorrecta se puntuarán con -0,25. Las no contestadas no tendrán influencia ni
positiva ni negativa en la nota.
Pregunta 4: Un patrón que proporciona una interfaz para crear familias de objetos relacionados o
dependientes sin necesidad de especificar sus clases específicas recibe el nombre de:
a. Factory Method
b. Builder
c. Abstract Factory
d. Prototype
Pregunta 5: Los beneficios del patrón Composite (Compuesto) son (indica la respuesta falsa):
a. Facilita añadir nuevos tipos de componentes.
b. Simplifica el diseño del cliente.
c. Poder definir jerarquías de clases primitivos y compuestos.
d. Hacer más fácil restringir los componentes de un compuesto.
Pregunta 6: Dado este fragmento de código:
a. Prototipo (Prototype)
b. Método de fabricación (Factory method)
c. Único (Singleton)
d. Constructor (Builder)
Pregunta 8: ¿Cuál de las siguientes afirmaciones acerca del patrón State es falsa?
a. Los objetos estado nunca pueden compartirse.
b. Se aplica cuando el comportamiento de u n objeto depende de su estado y debe cambiar en tiempo de
ejecución.
c. Localiza el comportamiento dependiente del estado y divide dicho comportamiento en diferentes
estados.
d. Hace explícitas las transiciones entre estados.
Pregunta 11: Se podría usar el patrón Observer (Observador) para un sistema de gestión de una Biblioteca,
donde cada vez que un lector devuelve un libro hay que avisar a otras partes del sistema que están
interesadas en conocer este evento:
a) [l punto] Justifique la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay
otro patrón que se puede haber usado en vez de este?
b) [l punto] Plantee el diagrama de clases necesario para abordar la implementación problema
propuesto. Comience con un planteamiento genérico y luego particularícelo al problema concreto.
c) [1,25puntos] lmplemente en Java el diagrama de clases propuesto.
Pregunta 12: Se podría usar el patrón Compound (Compuesto) para un programa que saca información en
teléfono móvil y en la pantalla del ordenador a la vez:
a) [l punto] Justifique la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay
otro patrón que se puede haber usado en vez de este?
b) [l punto] Plantee el diagrama de clases necesario para abordar la implementación problema
propuesto. Comience con un planteamiento genérico y luego particularícelo al problema concreto.
c) [1,25puntos] lmplemente en Java el diagrama de clases propuesto.
PARTETEÓRICA- TEST[2,5 PUNTOS]:
Sólo una de las respuestas es válida. Las respuestas correctas se puntuarán con +1,0, mientras que las
respondidas de manera incorrecta se puntuarán con -0,25. Las no contestadas no tendrán influencia ni
positiva ni negativa en la nota.
Pregunta 1: Las características esenciales de los campos, los constructores y los métodos son (indica la
respuesta falsa):
a. Los campos son responsables de garantizar que un objeto se configure apropiadamente en el momento
de crearlo por primera vez.
b. Los constructores son responsables de garantizar que un objeto se configure apropiadamente en el
momento de crearlo por primera vez.
c. Los métodos implementan el comportamiento de un objeto; proporcionan su funcionalidad.
d. Los campos almacenan datos de manera persistente dentro de un objeto.
a. Prototipo (Prototype)
b. Método de fabricación (Factory method)
c. Único (Singleton)
d. Constructor (Builder)
Pregunta 4: Un patrón que utilizamos para crear un objeto representativo que controla el acceso a otro
objeto que puede ser remoto, complejo de crear o que necesita de algún tipo de protección recibe el nombre
de:
a. Proxy
b. Composite
c. Flyweight
d. Bridge
Pregunta 5: ¿Cómo se accede al quinto elemento de un ArrayList de String que se llama nombres?:
a. String n = nombres.get(5);
b. String n = nombres.getElement(5);
c. String n = nombres.get(4);
d. String n = nombres.getElement(4);
Pregunta 8: Un patrón que proporciona un modo de acceder secuencialmente a los elementos de un objeto
agregado sin necesidad de conocer su organización interna recibe el nombre de:
a. lterator
b. Visitor
c. Composite
d. Command
¿Qué código habrá que añadir en la línea 8 para poder compilar el código?
a. this(l0);
b. super(l0);
c. ClasePadre(l0);
d. super.ClasePadre(l0);
Pregunta 10: Según la bibliografía básica de la asignatura, ¿cuáles son los beneficios de usar el patrón
Prototipo (Prototype)? (Indica la respuesta falsa):
a. Especificar nuevos objetos modificando valores.
b. Anadir y eliminar productos en tiempo de ejecución.
c. Incrementar la herencia.
d. Inicializar los clones.
Pregunta 11: Se podría usar el patrón Constructor (Factory) en un sistema de gestión de una empresa de sillas
para generar instancias de diferentes tipos de sillas (silla de cocina, silla de comedor, butaca, sofá):
a) [l punto] Justifique la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay
otro patrón que se puede haber usado en vez de este?
b) [l punto] Plantee el diagrama de clases necesario para abordar la implementación problema
propuesto. Comience con un planteamiento genérico y luego particularícelo al problema concreto.
c) [1,25puntos] lmplemente en Java el diagrama de clases propuesto.
Pregunta 12: Se podría usar el patrón Puente (Bridge) dentro del software de un robot de cocina para
implementar la funcionalidad de cocinar platos de pasta (Lasaña, Ravioli) en tipos diferentes (carne y
verdura):
a) [l punto] Justifique la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay
otro patrón que se puede haber usado en vez de este?
b) [l punto] Plantee el diagrama de clases necesario para abordar la implementación problema
propuesto. Comience con un planteamiento genérico y luego particularícelo al problema concreto.
c) [1,25puntos] lmplemente en Java el diagrama de clases propuesto.
SEPTIEMBRE 2017 - MODELOB-m
-- e - a . D e a
Pregunta 1: ¿Cuál d e las siguientes afirmaciones acerca d e l p a t r ó n Abstract Factory (Fabrica Abstracta) es
falsa?
a. State
b. Facade
c. Adapter
d. Proxy
a. Error d e compilación.
b. Error e n t i e m p o d e ejecución
c. 15
d. Ninguna d e las anteriores
public class A {
a. sólo public
b. sólo private
c. sólo static
d. public, private o static
Pregunta 6: ¿Para qué tipo de errores se suele reservar las subclases de E r r o r ? Según la bibliografía básica
de la asignatura.
State cuelga
del contexto
algo
Pregunta 8: Indica cuál de los siguientes elementos no es un participante del patrón Prototype (Prototipo)
a. Prototipo Concreto
b. Observador
c. Cliente
d. Prototipo
Pregunta 9: ¿Con qué patrón se corresponde el siguiente diagrama?
class ClaseA {
public int a;
public void metodo10 {
a++;
a) [l punto] Justifica la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay
otro patrón que se pueda haber usado en vez de éste?
b) [l punto] Plantea el diagrama de clases necesario para abordar la implementación del problema
propuesto. Comienza con un planteamiento genérico y luego particularízalo al problema concreto.
c) [1,25 puntos] lmplementa en Java el diagrama de clases propuesto y un método main que permita
probar el patrón.
Pregunta 12: Le han encargado realizar una aplicación para una empresa de hamburguesas. Suponga que la
empresa tiene dos tipos de hamburguesas cuyo coste es de 5 y 3 euros respectivamente. El cliente, aparte del
tipo de hamburguesa elegido, puede configurar su pedido añadiendo bacon, cuyo coste es de 1euro más, y/o
queso, cuyo coste es de 2 euros más. Se pide utilizar el patrón Decorator para configurar los pedidos, de
manera que al finalizarlos se obtenga una descripción de la hamburguesa solicitada y sus ingredientes, así
como el precio final del pedido.
a) [l punto] Justifique la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay
otro patrón que se podría haber usado en lugar de este?
b) [l punto] Plantee el diagrama de clases necesario para abordar la implementación problema
propuesto. Comience con un planteamiento genérico y luego particularícelo al problema concreto.
Explique detalladamente todas las decisiones tomadas.
d) [1,25 puntos] lmplemente en Java el diagrama de clases propuesto y un método main que permita
probar el patrón.
PARTETEÓRICA- TEST[2,5 PUNTOS]:
Sólo una de las respuestas es válida. Las respuestas correctas se puntuarán con +1,0, mientras que las
respondidas de manera incorrecta se puntuarán con -0,25. Las no contestadas no tendrán influencia ni
positiva ni negativa en la nota.
a. lterator (Iterador)
b. Bridge (Puente)
c. Adapter (Adaptador)
d. Ninguno de los anteriores.
Pregunta 3: Como parte del proceso de diseño de un programa orientado a objetos se pueden usar las
tarjetas CRC. ¿Qué significa CRC?
a. Collaborators/Responsibilities/Collaboration.
b. Class/Responsibilities/Collaborators.
c. Class/Responsibilities/Class.
d. Ninguna de las anteriores.
Pregunta 4: ¿Con qué patrón se corresponde el siguiente diagrama?
a. Decorator (Decerador)
b. Compound (Compuesto)
c. Facade (Fachada)
d. Ninguno de los anteriores.
Pregunta 5: Indica cual de las siguientes afirmaciones es correcta en relación a que tipo de bucle se debe
utilizar:
a. Si tenemos un bucle que no está relacionado con colecciones habrá que elegir el bucle for-each
b. Si necesitamos iterar a través de todos los elementos de una colección, el bucle for-each es casi siempre
la opción más elegante.
c. El bucle for-each es adecuado cuando nos hace falta utilizar de manera explícita el contador del bucle.
d. El bucle for es preferible si, al principio del bucle, no sabemos cuantas veces tenemos que ejecutarlo.
....
* W * * w * Y * * * w * w * w * * Q w * w
a. lterator (Iterador)
b. Interpreter (Intérprete)
c. Mediator (Mediador)
d. Ninguno de los anteriores
a. Un objeto es inmutable si su contenido o su estado no puede ser cambiado una vez que se ha creado
b. La clase String tiene u n método de nombre trim que permite modificar caracteres en cualquier posición
de una cadena
c. Un objeto de tipo String puede ser modificado una vez que está creado, por tanto no es un ejemplo de
objeto inmutable
d. Como regla general, las cadenas de texto de tipo String se suelen comparar mediante el operador ==
Pregunta 8: Indique cual de las siguientes opciones declarará un método en una clase que fuerza a una
subclase a implementarlo:
Pregunta 10:
Según la bibliografía básica de la asignatura los patrones de comportamiento incluyen (indica la respuesta
falsa):
a. State (Estado)
b. Memento (Recuerdo)
c. Facade (Fachada)
d. Visitor (Visitante)
Pregunta 11: Se podría usar el patrón Observer (Observador) para diseñar un sistema de gestión de un
supermercado, en el que cada vez que se compre un producto, se avise a otros sistemas de la tienda que
están interesadas en conocer este evento:
a) [l punto] Justifique la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay
otro patrón que se puede haber usado en vez de este?
b) [l punto] Plantee el diagrama de clases necesario para abordar la implementación problema
propuesto. Comience con un planteamiento genérico y luego particularícelo al problema concreto.
c) [1,25puntos] lmplemente en Java el diagrama de clases propuesto.
Pregunta 12: Se podría usar el patrón Compound (Compuesto) para un programa que saca información en la
pantalla del móvil y en un reloj a la vez:
a) [l punto] Justifique la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay
otro patrón que se puede haber usado en vez de este?
b) [l punto] Plantee el diagrama de clases necesario para abordar la implementación problema
propuesto. Comience con un planteamiento genérico y luego particularícelo al problema concreto.
c) [1,25puntos] lmplemente en Java el diagrama de clases propuesto.
PARTETEÓRICA- TEST[2,5 PUNTOS]:
Sólo una de las respuestas es válida. Las respuestas correctas se puntuarán con +1,0, mientras que las
respondidas de manera incorrecta se puntuarán con -0,25. Las no contestadas no tendrán influencia ni
positiva ni negativa en la nota.
public class T{
public static void main(String[] args) {
boolean var = false;
int num = 5;
do {
num++ ;
) while (var=!var);
System.out.println(num++);
1
a. 7
b. 8
c. 6
d. Bucle infinito
a. Definir el esqueleto de un algoritmo dejando la implementación de algunos de los pasos del esqueleto a
las subclases.
b. Permite añadir dinámicamente nuevas responsabilidades/nuevo comportamiento a un objeto,
proporcionando una alternativa a la definición de subclases
c. Facilitar la construcción de objetos relacionados entre sí.
d. Definir una familia de algoritmos, encapsular cada uno de ellos y hacerlos intercambiables. Permite que
un algoritmo varíe independientemente de los clientes que lo usan.
Pregunta 3: ¿Qué patrón de diseño utilizaría para controlar la creación de un objeto en base a una interfaz
preestablecida pero permitiendo que la implementación específica pueda decidir qué subclase construir?
a. Singleton (Unico)
b. Builder (Constructor)
c. Prototype (Prototipo)
d. Factory Method (Método Factoría)
Pregunta 4: ¿Cuál de las siguientes afirmaciones acerca del patrón Chain of Responsibility es falsa?
class Padre {
public void metodo() {
System.out.print("PADRE");
1
1
public class Hijo extends Padre {
a. PADRE
b. HIJO
c. Error de compilación
d. Error en tiempo de ejecución
Pregunta 8: Dado el siguiente fragmento de código en Java. ¿Cuál será la salida por consola?
Pregunta 9: Indica cuál de los siguientes elementos no es u n participante del patrón Prototype (Prototipo)
a. Prototipo Concreto
b. Componente
c. Cliente
d. Prototipo
Pregunta 10: Del patrón lterator (Iterador) cuales de las siguientes afirmaciones son correctas:
a) [l punto] Justifique la elección de este patrón y analice las ventajas y desventajas de la elección. ¿Hay
otro patrón que se pueda haber usado en vez de éste?
b) [l punto] Platee el diagrama de clases necesario para abordar la implementación del problema
propuesto. Comience con un planteamiento genérico y luego particularícelo al problema concreto.
c) [1,25puntos] lmplemente en Java el diagrama de clases propuesto y un método main que permita probar
el patrón.
Pregunta 12: Se desea utilizar el patrón Observer para gestionar las notificaciones de una aplicación móvil de
avisos de atascos.
a) [l punto] Justifique la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay
otro patrón que se podría haber usado en lugar de este?
b) [l punto] Plantee el diagrama de clases necesario para abordar la implementación problema propuesto.
Comience con un planteamiento genérico y luego particularícelo al problema concreto. Explique
detalladamente todas las decisiones tomadas.
c) [1,25puntos] lmplemente en Java el diagrama de clases propuesto.
PARTETEÓRICA- TEST[2,5 PUNTOS]:
Sólo una de las respuestas es válida. Las respuestas correctas se puntuarán con +1,0, mientras que las
respondidas de manera incorrecta se puntuarán con -0,25. Las n o contestadas n o tendrán influencia ni
positiva ni negativa en la nota.
.*<C.*\\* .k ;k
i * W * * 9 i * * Q * * * Q ( M *
8
a. lterator (Iterador)
b. Bridge (Puente)
c. Decorator (Decorador)
d. Ninguno de los anteriores.
Pregunta 2: Lo más habitual es que una clase tiene solamente u n constructor. En el caso de que haya dos o
más constructores en una clase se llama:
a. Sobrecarga
b. Herencia
c. Métodos internos
d. Abstracción
float a = 2.3F;
char b = ' r ' ;
int c = 99;
Indica cual será la salida por pantalla (cada valor en una línea diferente):
a. true true false
b. true false false
c. true false true
d. false false false
Pregunta 4: ¿Con qué patrón se corresponde el siguiente diagrama?
a. Decorator (Decerador)
b. Compound (Compuesto)
c. lterator (Iterador)
d. Ninguno de los anteriores.
Pregunta 5: Una manera de comprobar el valor que devuelve un método en una clase de Java es a través de
JUnit. ¿Cómo se haría esa prueba para comprobar que el método calcularEdad() de una instancias de una
clase (persona) devuelva el valor de 30?
a. assertValue(30, persona.calcularEdad());
b. assertMethod(30, persona.calcularEdad 0);
c. assertEquials(30, persona.calcularEdad 0); Anulada
d. Ninguna de las anteriores.
................................................. :......
....................
>'s;t$$ ;:<sr.*
$Y.$$ si i'j;SPix>
:.L.
a. Builder (Fabrica)
b. Prototype (Prototipo)
c. Abstract Builder (Fabrica Abstracta)
d. Ninguno de los anteriores
Pregunta 7: Si llamamos al método toLowerCase() de una instancia (casa) de la clase String de la siguiente
forma:
casa.toLowerCase();
Pregunta 8: lndique el resultado de compilar y hacer una instancia del siguiente código:
1 import java.util.*;
2
3 public class M0 {
4 private ArrayList<String> foo;
5
6 public MO() {
7 foo = new ArrayList<String>();
8 1
9 1
a. El programa daría un error de compilación en la Iínea 1.
b. El programa daría un error de ejecución en la Iínea 7.
c. El programa no daría ningún error de compilación y asignaría un nuevo ArrayList de cadenas (String) al
variable foo;
d. Ninguna de las anteriores.
Según la bibliografía básica de la asignatura los patrones estructurales incluyen (indica la respuesta falsa):
a. Composite (Compuesto)
b. Facade (Fachada)
c. Proxy (Apoderado)
d. State (Estado)
Pregunta 11: Se podría usar el patrón Puente (Bridge) dentro del software de un programa de dibujo para
implementar la funcionalidad de pintar formas geométricos (circulo, triángulo y cuadrado) en colores
diferentes (rojo, azul y verde):
a) [l punto] Justifique la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay
otro patrón que se puede haber usado en vez de este?
b) [l punto] Plantee el diagrama de clases necesario para abordar la implementación problema propuesto.
Comience con un planteamiento genérico y luego particularícelo al problema concreto.
c) [1,25puntos] lmplemente en Java el diagrama de clases propuesto.
Pregunta 12: Se podría usar el patrón Constructor (Factory) en un sistema de gestión de una empresa de
coches para generar instancias de diferentes tipos de coche (coche eléctrico, monovolumen y 4x4):
a) [l punto] Justifique la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay
otro patrón que se puede haber usado en vez de este?
b) [l punto] Plantee el diagrama de clases necesario para abordar la implementación problema propuesto.
Comience con un planteamiento genérico y luego particularícelo al problema concreto.
c) [1,25puntos] lmplemente en Java el diagrama de clases propuesto.
PARTETEÓRICA- TEST[2,5 PUNTOSI:
Sólo una de las respuestas es válida. Las respuestas correctas se puntuarán con +1,0, mientras que las
respondidas de manera incorrecta se puntuarán con -0,25. Las no contestadas no tendrán influencia ni
positiva ni negativa en la nota.
a. 15 true
b. Error de compilación en la Iínea 6
c. Error de compilación en la Iínea 11
d. Error de compilación en la Iínea 12
a. igual
b. diferente
c. Error de compilación en la Iínea 5
d. La Iínea 5 lanza una excepción en tiempo de ejecución
rriievR~~:G%2&eA
(1
tt?i-sn%e~1brs?.,n?etod04
9)
!X92060~
rnetad~2.i,]
:GizseC
a. 3
b. 4
c. 5
d. Se lanza una excepción del tipo NullPointerException
Pregunta 11: Se desea utilizar el patrón Builder (Constructor) para gestionar la preparación de menús en un
restaurante de bocadillos. Un menú típicamente incluye un bocadillo y una bebida. El bocadillo puede ser de
lomo o de tortilla y la bebida puede ser cocacola o una cerveza. Los bocadillos se envuelven en papel albal y
las bebidas se dispensan en un vaso de plástico. El precio de los bocadillos es de 3 euros mientras que el
precio de la cocacola es de 1 euro y el de la cerveza de 1,50 euros. El patrón builder deberá permitir la
creación de los siguientes menús: menú mediterráneo de tortilla y cocacola y menú montañés con lomo y
cerveza. La salida por pantalla deberá mostrar al usuario los diferentes elementos del menú, incluyendo el
tipo de bocadillo, el tipo de envoltorio o contenedor de bebida, el tipo de bebida, el precio por unidad y el
precio total del menú.
a) [ l punto] Justifica la elección de este patrón y analiza las ventajas y desventajas de la elección. CHay
otro patrón que se pueda haber usado en vez de éste?
b) [ l punto] Plantea el diagrama de clases necesario para abordar la implementación del problema
propuesto. Comienza con un planteamiento genérico y luego particularízalo al problema concreto.
c) [1,25 puntos] lmplementa en Java el diagrama de clases propuesto y un método main que permita
probar el patrón de acuerdo a las indicaciones del enunciado.
Pregunta 12: Se desea utilizar el patrón Composite para gestionar equipos de personas que dependen de un
determinado superior dentro de la Universidad. Tómese como ejemplo para el desarrollo del ejercicio el
equipo de gobierno de una universidad. En una estructura de este tipo, del Rector de la Universidad
dependen los Vicerrectores de Ordenación Académica, Profesorado y Estudiantes, mientras que de cada uno
de estos vicerrectores dependen un par de vicerrectores adjuntos. El patrón Composite debe ayudar a crear
estas dependencias de modo que sea posible mostrar por pantalla la lista completa de miembros del equipo
de gobierno, mostrando su nombre y el cargo que ocupa.
a) [ l punto] Justifica la elección de este patrón y analiza las ventajas y desventajas de la elección. CHay
otro patrón que se pueda haber usado en vez de éste?
b) [ l punto] Plantea el diagrama de clases necesario para abordar la implementación del problema
propuesto. Comienza con un planteamiento genérico y luego particularízalo al problema concreto.
c) [1,25 puntos] lmplementa en Java el diagrama de clases propuesto y un método main que permita
probar el patrón de acuerdo a las indicaciones del enunciado.
PARTETEÓRICA- TEST[2,5 PUNTOS~:
Sólo una de las respuestas es válida. Las respuestas correctas se puntuarán con +1,0, mientras que las
respondidas de manera incorrecta se puntuarán con -0,25. Las no contestadas no tendrán influencia ni
positiva ni negativa en la nota.
Pregunta 1: CPara qué tipo de errores se suele reservar las subclases de E r r o r ? Según la bibliografía básica
de la asignatura.
a. Los errores del sistema en tiempo de compilación.
b. Los errores del sistema en tiempo de ejecución.
c. Los errores de programación en tiempo de compilación.
d. Ninguna de las anteriores.
Pregunta 2: CCuáles de los siguientes participantes forman parte del patrón Fábrica Abstracta (Abstract
Factory). lndica la respuesta falsa según la bibliografía básica de la asignatura:
a. Fabricaconcreta
b. ProductoAbstracto
c. Fabrica
d. Cliente
Pregunta 4: Según la bibliografía básica de la asignatura, el propósito del patrón Prototipo (Prototype) es:
a. Especifica los tipos de objetos a crear por medio de una instancia prototípica, y especifica nuevos objetos
copiando dicho prototipo.
b. Crea nuevos objetos por medio de las propiedades de una instancia prototípica.
c. Especifica los tipos de objetos a crear por medio de una instancia prototípica, y crea nuevos objetos
copiando dicho prototipo.
d. Especifica los características de objetos a crear por medio de una instancia prototípica, y crea nuevos
objetos copiando dicho prototipo.
Pregunta 7: El propósito del patrón Visitante (Visitor) según la bibliografía básica de la asignatura es:
a. Representa una operación sobre los elementos de una estructura de objetos.
b. Representa una operación sobre un objeto.
c. Representa operaciones sobre los elementos de una estructura de objetos.
d. Representa operaciones sobre los elementos de un objeto.
Pregunta 9: Sobre el patrón Apoderado (Proxy), según la bibliografía básica de la asignatura, se puede decir:
a. El Proxy redirige peticiones al Sujeto cuando sea necesario, dependiendo del tipo de proxy.
b. El Proxy redirige peticiones al Sujetoconcreto cuando sea necesario, dependiendo del tipo de proxy.
c. El Proxy redirige peticiones al Proxylnstancia cuando sea necesario, dependiendo del tipo de proxy.
d. El Proxy redirige peticiones al SujetoReal cuando sea necesario, dependiendo del tipo de proxy.
Pregunta 10: Según la bibliografía básica de la asignatura el propósito del patrón Observador (Observer) es:
a. Define una dependencia de muchos-a-muchos entre objetos.
b. Define una dependencia de uno-a-muchos entre objetos.
c. Define una dependencia de uno-a-uno entre objetos.
d. Ninguna de las anteriores.
Preaunta 11: Se podría usar el patrón Observador (Observer) para implementar la funcionalidad de
notificación en el catálogo de la página Web de una tienda para informar a los clientes que ya hay ejemplares
disponible para comprar:
a) [l punto] Justifique la elección de este patrón y analiza las ventajas y desventajas de la elección. CHay
otro patrón que se puede haber usado en vez de este?
b) [l punto] Plantee el diagrama de clases necesario para abordar la implementación problema
propuesto. Comience con un planteamiento genérico y luego particularícelo al problema concreto.
c) [1,25 puntos] lmplemente en Java el diagrama de clases propuesto.
Preaunta 12: Se podría usar el patrón Único (Singleton) para lograr que solamente un editor de una página de
Wikipedia pudiera modificar la página a la vez:
a) [l punto] Justifique la elección de este patrón y analiza las ventajas y desventajas de la elección. CHay
otro patrón que se puede haber usado en vez de este?
b) [l punto] Plantee el diagrama de clases necesario para abordar la implementación problema
propuesto. Comience con un planteamiento genérico y luego particularícelo al problema concreto.
c) [1,25 puntos] lmplemente en Java el diagrama de clases propuesto.
PARTETEÓRICA- TEST[2,5 PUNTOS]:
Sólo una d e las respuestas es válida. Las respuestas correctas se p u n t u a r á n c o n +1,0, mientras q u e las
respondidas d e manera incorrecta se p u n t u a r á n c o n -0,25. Las n o contestadas n o t e n d r á n influencia n i
positiva n i negativa e n la nota.
Pregunta 1:¿Cuáles d e los siguientes participantes f o r m a n p a r t e d e l p a t r ó n fábrica abstracta?:
a- A3, A4, A5
b- Al, A2, A3
C- Al, A3, A5
d- A2, A3, A4
a- M é t o d o d e fabricación
b- Constructor abstracto
c- Constructor d e fabricación
d- Fábrica abstracta
a- Usar comportamiento para permitir un gran número de objetos de grano fino de forma eficiente.
b- Usar comportamiento para permitir un gran número de objetos de grano mediano de forma eficiente
c- Usar comportamiento para permitir un gran número de objetos de grano grueso de forma eficiente
d- Usar comportamiento para permitir un gran número de objetos de forma eficiente
Pregunta 5: ¿Cuáles de los siguientes participantes forman parte del patrón constructor, indique las correctas:
a- Al, A2, A5
b- Al, A3, A5
C- A2, A4, A5
d- Al, A3, A4
¿Qué tendremos que añadir a la Iínea 14, en vez de XXX, para asignar el nombre del archivo file en la clase
Post?:
a- super();
b- this.file = file;
c- file = file;
d- super.file = file;
Pregunta 7: Las participantes del patrón Observer (Observador) incluyen (indica la respuesta falsa):
a- SujetoAbstracto
b- Observador
c- ObservadorConcreto
d- Sujetoconcreto
Pregunta 9: Las participantes del patrón lnterpreter (Intérprete) incluyen (indica la respuesta falsa):
a- ExpresionTerminal
b- ExpresionAbstracta
c- Contexto
d- ExpressionNoAbstracta
Pregunta 10: Los beneficios del patrón Composite (Compuesto) son (indica la respuesta falsa):
Pregunta 11: Le proponemos usar el patrón Prototype (Prototipo) para crear diferentes clases de coches (por
ejemplo: AUDI, BMV, SEAT, etc.) en un sistema de gestión de estos productos:
a) [l punto] Justifique la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay
otro patrón que se puede haber usado en vez de este?
b) [l punto] Plantee el diagrama de clases necesario para abordar la implementación problema
propuesto. Comience con un planteamiento genérico y luego particularícelo al problema concreto.
c) [1,25puntos] lmplemente en Java el diagrama de clases propuesto.
Pregunta 12: Se podría usar el patrón Compound (Compuesto) para un programa que saca información en la
pantalla de un teléfono móvil, una tableta y un ordenador a la vez:
a) [l punto] Justifique la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay
otro patrón que se puede haber usado en vez de este?
b) [l punto] Plantee el diagrama de clases necesario para abordar la implementación problema
propuesto. Comience con un planteamiento genérico y luego particularícelo al problema concreto.
c) [1,25puntos] lmplemente en Java el diagrama de clases propuesto.
UNIVERSIRAD NACIONAL
DE ERUCACI~N A ~ISTANCIA- Escuan TÉC NKA SUPERIWDE INGEN IERÍAIN fORMÁTICA
71OS201I - D i s ~ i a
a DE APLICACI~NE~
Q ~ Nl TADA
f A QMETQS
[GRADOEN ~NGENIER~A INFQRMÁTEA 1 f ECNOLOG~SDE LA INFORMACIÓN)
Pregunta 1: ¿Cuál de las siguientes afirmaciones acerca del patrón Singleton (Unico) es falsa?:
a. Definir el esqueleto de un algoritmo dejando la implementación de algunos de los pasos del esqueleto
a las subclases.
b. Permite añadir dinámicamente nuevas responsabilidades/nuevo comportamiento a un objeto,
proporcionando una alternativa a la definición de subclases
c. Facilitar la construcción de objetos relacionados entre sí.
d. Definir una familia de algoritmos, encapsular cada uno de ellos y hacerlos intercambiables. Permite
que un algoritmo varíe independientemente de los clientes que lo usan.
Pregunta 3: ¿Cuál de las siguientes afirmaciones acerca del patrón Chain of Responsibility es falsa?
a. Simplifica el objeto al no ser necesario que éste conozca la estructura de la cadena y que mantenga
una referencia directa a cada uno de sus elementos.
b. Es necesario especificar explícitamente el receptor al que va dirigida la petición.
c. Desacopla el objeto que envía la petición de sus receptores.
d. Facilita la creación o eliminación de responsabilidades de manera dinámica.
Pregunta 4: El patrón Observador sigue lo que hace un sujeto. ¿Cuáles son los beneficios de usar u n patrón
observador? (Indique la respuesta FALSA):
Pregunta 5: ¿Cuáles son las consecuencias de utilizar el patrón Factory Method (Método Factoría)?:
a. Descentraliza el control.
b. Abstrae cómo cooperan los objetos.
c. Simplifica los protocolos de los objetos.
d. Reduce la herencia.
Pregunta 7: ¿Cuál de las siguientes afirmaciones es correcta respecto a una clase interna?
a. Puede acceder a los campos y métodos públicos y protegidos de la clase envolvente, pero no
privados.
b. Puede acceder a los campos y métodos públicos y privados de la clase envolvente.
c. Puede acceder a los campos y métodos públicos de la clase envolvente, pero no a privados ni a
protegidos.
d. No puede acceder a los campos y métodos privados de la clase envolvente.
a. B,A
b. Error en tiempo de ejecución
c. Error de compilación
d. B,null
Pregunta 9: Dado el siguiente fragmento de código en Java. ¿Cuál será la salida por consola?
Pregunta 10: Dado el siguiente fragmento de código en Java. ¿Cuál de las siguientes afirmaciones es correcta?
a. lmprime en consola 10
b. Error en tiempo de ejecución.
c. Imprime en consola VALOR=10
d. Error de compilación.
Pregunta 11: En una universidad se desea utilizar el patrón Fachada (Facade) para construir un sistema que
ayude a realizar la matrícula de 3 tipos diferentes de estudiantes. Más concretamente, tenemos estudiantes
de grado, estudiantes de master y estudiantes de doctorado. Para cada uno de estos tipos de estudiantes el
proceso de matriculación supone almacenar la información de su nombre y NIF, extendiendo la información
almacenada del siguiente modo:
1- Para los estudiantes de grado se almacenará el curso y el identificador del grado.
2- Para los estudiantes de master se almacenará el identificador del master.
3- Para los estudiantes de grado se almacenará el identificador del programa de doctorado y el nombre
del director de la tesis.
a) [l punto] Justifica la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay
otro patrón que se pueda haber usado en vez de éste?
b) [l punto] Plantea el diagrama de clases necesario para abordar la implementación del problema
propuesto. Comienza con un planteamiento genérico y luego particularízalo al problema concreto.
c) [1,25 puntos] lmplementa en Java el diagrama de clases propuesto y un método main que permita
probar el patrón.
Pregunta 12: Le han encargado realizar una aplicación en Java para gestionar los pedidos de una empresa de
cupcakes. La empresa dispone de 3 tipos de cupcakes sobre los cuales se pueden añadir 4 tipos de extras. Si
los precios de los 3 tipos de cupcakes son de 1, 2 y 5 euros respectivamente y el coste de añadir un extra es de
0,50 céntimos en todos los casos, se pide que utilizando el patrón Decorator (Decorador) realice una sencilla
aplicación en Java que permita al usuario configurar su cupcake y que le informe de la configuración final de
éste y así como de su precio.
a) [l punto] Justifique la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay
otro patrón que se podría haber usado en lugar de este?
b) [l punto] Plantee el diagrama de clases necesario para abordar la implementación problema
propuesto. Comience con un planteamiento genérico y luego particularícelo al problema concreto.
Explique detalladamente todas las decisiones tomadas.
c) [1,25puntos] lmplemente en Java el diagrama de clases propuesto.
PARTETEÓRICA- TEST[2,5 PUNTOS]:
Sólo una de las respuestas es válida. Las respuestas correctas se puntuarán con +1,0, mientras que las
respondidas de manera incorrecta se puntuarán con -0,25. Las no contestadas no tendrán influencia ni
positiva ni negativa en la nota.
Pregunta 1:A la hora de gestionar excepciones, ¿cuál es la diferencia entre "throws" y "throw"?
a) "throws" genera la excepción y "throw" es la declaración del método que genera la excepción.
b) Tanto "throw" como "throws" genera la excepción.
c) "throws" es la declaración del método que genera la excepción y "throw" genera la excepción.
d) Tanto "throw" como "throws" son formas de declarar el método que genera la excepción.
Pregunta 2: ¿Qué patrón proporciona una interfaz unificada para un conjunto de interfaces de un
su bsistema?:
a. Bridge (puente)
b. Adapter (Adaptador)
c. Facade (Fachada)
d. Proxy (Apoderado)
Pregunta 3: Entre las condiciones que debe haber para poder aplicar el patrón Flyweight (Peso Ligero) existe
la siguiente:
1. Una aplicación utiliza un gran número de objetos.
2. Los costes de almacenamiento son elevados debido a la cantidad de objetos.
3. La relación entre los grupos de objetos es costosa.
4. La aplicación no depende de la identidad de un objeto.
Pregunta 4: Dado el siguiente fragmento de código, indique cuál de las siguientes afirmaciones es el resultado
de ejecución:
public class FF {
private String pers = "Juan";
class GG {
public void saludar(String pers) {
System.out.println("Hola " + pers);
1
1
1
public class Test {
public static void main(String... args) throws Exception {
FF ff = new FF();
FF.GG gg = ff.new GG();
gg.saludar("Pepe");
a. Habrá un error de compilación.
b. La salida es: Hola Pepe
c. Se compila pero da un error de ejecución.
d. La salida es: Hola Juan
Pregunta 5: El patrón Singleton (Único) aporta los siguientes beneficios (indica la respuesta falsa)
a) Permite un espacio de nombres reducido.
b) Permite el acceso paralelo a todas las instancias.
c) Permite el refinamiento de operaciones y la representación.
d) Permite un número variable de instancias.
Pregunta 6: ¿Cómo se define un método público media que tenga un parámetro que sea un array de int y que
devuelva un double?:
a. public double[] media(int numeros)
b. public double media (int[] numeros)
c. public double media(int numeros)
d. public double media (int[] números[])
Pregunta 7: ¿Cuáles son los participantes del patrón Adapter (Adaptador)? Indica la respuesta falsa.
a. Adaptador
b. Adaptado
c. Adaptable
d. Cliente
¿Qué tipo de Listener habrá que usar (donde están las XXX en el código anterior) para detectar que el usuario
ha hecho clic en el botón?
a. new ActionListener()
b. new EventListenerO
c. new ButtonListener()
d. new ActionPerformedListener()
Pregunta 10: ¿Qué patrón proporciona un representante o sustituto de otro objeto para controlar el acceso a
éste?:
a. Bridge (puente)
b. Adapter (Adaptador)
c. Facade (Fachada)
d. Proxy (Apoderado)
Preeunta 11: En una empresa, el Director General tiene a su cargo directo varios empleados, algunos de los
cuales son también Directores que tienen a su vez a su cargo empleados. Se quiere usar el patrón Composite
(Compuesto) para representar estas relaciones.
a) [l punto] Justifica la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay
otro patrón que se podría haber usado en vez de éste?
b) [l punto] Plantea el diagrama de clases necesario para abordar la implementación del problema
propuesto. Comienza con un planteamiento genérico y luego particularízalo al problema concreto.
c) [1,25puntos] lmplementa en Java el diagrama de clases propuesto.
Preeunta 12: En una simulación de la construcción de una casa se quiere realizar el proceso en cuatro pasos
(construcción de la fundación, el marco, la parte exterior y la parte interior). Se quiere usar el patrón Builder
(Constructor) para este simulador.
a) [l punto] Justifica la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay
otro patrón que se podría haber usado en vez de éste?
b) [l punto] Plantea el diagrama de clases necesario para abordar la implementación del problema
propuesto. Comienza con un planteamiento genérico y luego particularízalo al problema concreto.
c) [1,25puntos] lmplementa en Java el diagrama de clases propuesto.
PARTETEÓRICA- TEST[2,5 PUNTOS]:
Sólo una de las respuestas es válida. Las respuestas correctas se puntuarán con +1,0, mientras que las
respondidas de manera incorrecta se puntuarán con -0,25. Las no contestadas no tendrán influencia ni
positiva ni negativa en la nota.
Pregunta 1: ¿Cuál de las siguientes afirmaciones acerca del patrón Abstract Factory es falsa?:
Pregunta 3: ¿Cuál de las siguientes afirmaciones acerca del patrón Memento (Recuerdo) es cierta?
a. Define una interfaz para crear un objeto, pero deja que sean las subclases quienes decidan qué clase
instanciar.
b. Conecta jerarquías de clases paralelas.
c. Facilita el intercambio de familias de productos.
d. Evita exponer información que sólo debería ser gestionada por un creador, pero que sin embargo
debe ser guardada fuera del creador.
Pregunta 4: ¿Cuál de los siguientes escenarios no es adecuado para aplicar el patrón Visitor (Visitante) ?
a. Se necesitan realizar muchas operaciones distintas y no relacionadas sobre objetos de una estructura
de objetos y queremos evitar "contaminar" sus clases con dichas operaciones.
b. Cuando una estructura de objetos contiene muchas clases de objetos con diferentes interfaces y
queremos realizar operaciones sobre esos elementos que dependen de su clase concreta.
c. Cuando se quiere representar jerarquías de objetos parte-todo.
d. Cuando las clases que definen la estructura de objetos rara vez cambian, pero muchas veces
queremos definir nuevas operaciones sobre la estructura.
Pregunta 5: Del patrón Chain of Responsibility (Cadena de Responsabilidad) podemos decir que:
a. Libera a un objeto de tener que saber qué otro objeto maneja una petición.
b. Los clientes pueden tratar uniformemente a las estructuras compuestas y a los objetos individuales.
c. Permite especificar nuevos objetos modificando valores.
d. Se usa cuando se quiere evitar un enlace permanente entre una abstracción y su implementación.
Pregunta 8: Según el texto de la bibliografía básica de la asignatura, indique cuál de las siguientes
afirmaciones es correcta:
a. Un objeto de tipo String puede ser modificado una vez que está creado, por tanto es u n ejemplo de
objeto mutable.
b. La clase String tiene un método de nombre trim() que pasa todos los caracteres de una cadena a
mayúsculas.
c. Las cadenas de texto de tipo String se pueden comparar mediante el método equals().
d. Un objeto no es mutable si su contenido o su estado puede ser modificado una vez que se ha creado.
import java.util.*;
public class Test {
public static void main (String[ ] Args) {
HashMap<String,String> mapa=new HashMap<String,String>();
mapa. put ("An, "valorA") ;
mapa. put ("Bn, "valorB") ;
mapa. put ("C", "valorC") ;
{
private int valor;
public Test(int n){valor=n;}
public int calcular()
{
int resultado=l;
int numero=valor;
if (valor>=l)
{
while(numero>=2){
resultado*=numero-1;
numero--;
}
return resultado;
}
else{
return 1;
}
}
public static void main (String [ ] args){
Test t=new Test(3);
int v=t.calcular();
System.out.println(v);
}
}
a. Muestra en consola 2
b. Muestra en consola 6
c. Muestra en consola O
d. Muestra en consola 1
Preeunta 11: Se desea utilizar el patrón Facade (Fachada) para diseñar un servicio de venta telefónica que
facilite llevar a cabo las operaciones de realización del pedido, gestión del cobro y facturación, así como de
envío. Nótese que cada una de estas operaciones se llevan a cabo a través de sistemas independientes. Con el
fin de simplificar el problema suponga que el cliente únicamente puede comprar un producto por cada
llamada telefónica.
a) [l punto] Justifica la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay
otro patrón que se pueda haber usado en vez de éste?
b) [l punto] Plantea el diagrama de clases necesario para abordar la implementación del problema
propuesto. Comienza con un planteamiento genérico y luego particularízalo al problema concreto.
c) [1,25 puntos] lmplementa en Java el diagrama de clases propuesto y un método main que permita
probar el patrón.
Preeunta 12: Se desea utilizar el patrón Visitor (Visitante) para generar informes de los empleados de una
empresa donde se reflejen las horas trabajadas y el importe total a percibir. El uso del patrón Visitor se lleva a
cabo con el fin de desacoplar la generación de estos informes de la propia implementación de la clase
Empleado.
a) [l punto] Justifica la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay
otro patrón que se pueda haber usado en vez de éste?
b) [l punto] Plantea el diagrama de clases necesario para abordar la implementación del problema
propuesto. Comienza con un planteamiento genérico y luego particularízalo al problema concreto.
c) [1,25 puntos] lmplementa en Java el diagrama de clases propuesto y un método main que permita
probar el patrón.
PARTETEÓRICA- TEST[2,5 PUNTOS]:
Sólo una de las respuestas es válida. Las respuestas correctas se puntuarán con +1,0, mientras que las
respondidas de manera incorrecta se puntuarán con -0,25. Las no contestadas no tendrán influencia ni
positiva ni negativa en la nota.
Pregunta 1: ¿Cuál de las siguientes afirmaciones acerca del patrón Singleton (Unico) es falsa?:
a. Oculta detalles de implementación a los clientes.
b. Permite el refinamiento de operaciones y la representación.
c. Permite un número variable de instancias.
d. Permite el acceso controlado a su única instancia.
Pregunta 3: ¿Cuál de las siguientes afirmaciones acerca del patrón Builder (Constructor) es cierta?
a. Define una interfaz para crear un objeto, pero deja que sean las subclases quienes decidan qué clase
instanciar.
b. Conecta jerarquías de clases paralelas.
c. Facilita el intercambio de familias de productos.
d. Se centra en construir un objeto complejo paso a paso.
Pregunta 4: ¿Cuál de los siguientes escenarios no es adecuado para aplicar el patrón Strategy (Estrategia) ?
a. Se necesitan distintas variantes de un mismo algoritmo.
b. Un algoritmo usa datos que los clientes no deberían conocer.
c. Se requiere configurar una clase con un determinado comportamiento entre muchos posibles.
d. Cuando una abstracción tiene dos aspectos y uno depende del otro.
class ClaseA {
public int a;
public void metodol() {
a++;
}
}
public class ClaseB extends ClaseA {
public void metodol() {
a--;
}
public void metodol (int param) {
metodol();
super.metodol();
a += param;
}
public static void main(String[] args) {
ClaseB obj = new ClaseB();
obj.metodol(2);
a. Error de compilación.
b. Lanza una excepción en tiempo de ejecución.
c. Muestra un O en consola.
d. Muestra un 2 en consola.
Pregunta 7: ¿En que casos debería aplicarse el patrón Flyweight (Peso Ligero)?
1. Una aplicación utiliza un gran número de objetos.
2. Los costes de almacenamiento son altos debido a la gran cantidad de objetos.
3. La mayor parte del estado del objeto puede hacerse extrínseco.
4. Muchos grupos de objetos pueden reemplazarse por relativamente pocos objetos compartidos, una
vez que se ha eliminado el estado extrínseco.
5. La aplicación no depende de la entidad de un objeto.
Pregunta 8: Según el texto de la bibliografía básica de la asignatura, indique cuál de las siguientes
afirmaciones es correcta:
a. Un objeto es inmutable si su contenido o su estado no puede ser cambiado una vez que se ha creado.
b. Un objeto de tipo String puede ser modificado una vez que está creado, por tanto no es un ejemplo
de objeto inmutable.
c. La clase String tiene un método de nombre trim que permite modificar caracteres en cualquier
posición de una cadena.
d. Como regla general, las cadenas de texto de tipo String se suelen comparar mediante el operador ==.
Pregunta 9: Dado el siguiente fragmento de código en Java. ¿Cuál será la salida por consola?
public class Test
{
public static void main (String [ ] args) {
for (int i=O; i < ("HOY").length(); i++) {
System.out.print ("HOY".substring (O, i+l) ) ; }
}
}
a. HOHOY
b. HHO
c. HOY
d. HHOHOY
Pregunta 10: Dado el siguiente fragmento de código en Java. ¿Cuál de las siguientes afirmaciones es correcta?
a. lmprime en consola 5
b. Error en tiempo de ejecución.
c. lmprime en consola a=5
d. Error de compilación.
Pregunta 11: Se desea utilizar Factory Method en un videojuego con el fin de poder crear tres tipos de
enemigos. En concreto, Factory Method debe ser capaz de instanciar un dragón, una tortuga o una serpiente.
Estos tres tipos de enemigos tienen la capacidad de atacar de diferentes maneras; el dragón escupiendo
fuego, la tortuga chocando contra el héroe del videojuego y la serpiente mordiendo.
a) [l punto] Justifica la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay
otro patrón que se pueda haber usado en vez de éste?
b) [l punto] Plantea el diagrama de clases necesario para abordar la implementación del problema
propuesto. Comienza con un planteamiento genérico y luego particularízalo al problema concreto.
c) [1,25 puntos] lmplementa en Java el diagrama de clases propuesto y un método main que permita
probar el patrón.
Pregunta 12: Se desea utilizar el patrón State para diseñar una máquina de estados que controle el encendido
y apagado de un aire acondicionado desde un mando a distancia que dispone de un único botón. El
funcionamiento del mando es muy sencillo, ya que permite pasar de uno de los estados al otro en el
momento en el que el botón se pulse.
a) [l punto] Justifica la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay
otro patrón que se pueda haber usado en vez de éste?
b) [l punto] Plantea el diagrama de clases necesario para abordar la implementación del problema
propuesto. Comienza con un planteamiento genérico y luego particularízalo al problema concreto.
c) [1,25 puntos] lmplementa en Java el diagrama de clases propuesto y un método main que permita
probar el patrón.
PARTETEÓRICA- TEST[2,5 PUNTOS]:
Sólo una de las respuestas es válida. Las respuestas correctas se puntuarán con +1,0, mientras que las
respondidas de manera incorrecta se puntuarán con -0,25. Las no contestadas no tendrán influencia ni
positiva ni negativa en la nota.
Pregunta 5: El patrón Facade (Fachada) proporciona las siguientes ventajas (indica la respuesta incorrecta):
a. Oculta a los clientes los componentes del subsistema.
b. Promueve un acoplamiento débil entre el subsistema y sus clientes.
c. No impide que las aplicaciones usen las clases del subsistema.
d. Hace visible a los clientes los componentes del subsistema.
Pregunta 6: En el patrón Memento (Recuerdo), el participante Conserje desempeña las siguientes funciones:
1. Usa el memento para volver a su estado anterior.
2. Es responsable de guardar en lugar seguro el memento.
3. Nunca examina los contenidos del memento ni opera sobre ellos.
Pregunta 8: ¿Qué significa el siguiente fragmento de código Java?: int dos() { return 2; }
a. Hay un método "int dos" que no recibe ningún parámetro de entrada y devuelve el valor 2.
b. Hay un variable "int" cuyo valor es "dos() { return 2; }"
c. Hay un método "dos" que no recibe ningún parámetro de entrada y devuelve un entero cuyo valor es 2.
d. El fragmento no representa un fragmento de código legal en Java.
Pregunta 10: Si las clases B y A heredan de la clase D y la clase C hereda de la clase B, entonces (indica la
respuesta que daría un error de compilación):
a. D d = new A();
b. K k = new D();
c. B b = new A();
d. B b = new C();
PARTEPRÁCTICA[6,5 PUNTOS]:
Pregunta 11: Para un procesador de texto que permite las letras A - Z se quiere usar el patrón Flyweight ()
para que el almacenamiento y control del texto sea mejor y más eficiente.
a) [l punto] Justifica la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay
otro patrón que se pueda haber usado en vez de éste?
b) [l punto] Plantea el diagrama de clases necesario para abordar la implementación del problema
propuesto. Comienza con un planteamiento genérico y luego particularízalo al problema concreto.
c) [1,25puntos] lmplementa en Java el diagrama de clases propuesto.
Pregunta 12: En un sistema de gestión de una impresora solamente se puede imprimir un trabajo a la vez. Se
quiere usar el patrón SingletonO para controlar este proceso.
a) [l punto] Justifica la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay
otro patrón que se pueda haber usado en vez de éste?
b) [l punto] Plantea el diagrama de clases necesario para abordar la implementación del problema
propuesto. Comienza con un planteamiento genérico y luego particularízalo al problema concreto.
c) [1,25puntos] lmplementa en Java el diagrama de clases propuesto.
PARTETEÓRICA- TEST[2,5 PUNTOS]:
Sólo una de las respuestas es válida. Las respuestas correctas se puntuarán con +1,0, mientras que las
respondidas de manera incorrecta se puntuarán con -0,25. Las no contestadas no tendrán influencia ni
positiva ni negativa en la nota.
Pregunta 4: Un applet es un pequeño programa de Java que se puede ejecutar en un navegador web. A la
hora de especificar un applet dentro de una página HTML ¿cuáles son las partes obligatorias?: name, code,
width, height:
a) code
b) name + width + height
c) code
d) code + width + height
Pregunta 5: El propósito del patrón Estado es:
a) Permitir que un objeto modifique su comportamiento cada vez que cambie su estructura.
b) Permitir que un objeto modifique su estructura cada vez que cambie su comportamiento.
c) Permitir que un objeto modifique su comportamiento cada vez que cambie su estado interno.
d) Permitir que un objeto modifique su estructura cada vez que cambie su estado interno.
7 Forma
i Cuadrado
Pregunta 7: Un patrón que proporciona una interfaz para crear grupos de objetos relacionados sin necesidad
de especificar sus clases específicas recibe el nombre de:
a) Factory Method
b) Builder
c) Abstract Factory
d) Observer
Pregunta 9: Según el texto de la bibliografía básica de la asignatura, ejemplos de bordes en interfaces gráficos
son (indique la respuesta FALSA):
a) BevelBorder
b) CompountBorder
c) EmptyBorder
d) LineBorder
Pregunta 10: ¿Cuáles son los beneficios de usar un patrón observador? (Indique la respuesta FALSA):
a) Un observador y un sujeto pueden pertenecer a diferentes capas de abstracción en un programa.
b) Un sujeto necesita saber las clases concretas de los observadores.
c) Un sujeto no necesita saber la clase concreta de su observador.
d) Se puede añadir un observador sin modificar el sujeto correspondiente.
Preeunta 11: Para un sistema de comercio electrónico, se quiere usar el patrón Estado (State) para gestionar
los estados de una compra que un usuario puede realizar desde la página Web de la tienda. Los estados de la
compra son: empezado (la compra se acaba de empezar), esperando (faltan los datos de la tarjeta de
crédito), verificado (se ha cargado la compra a la tarjeta sin problema y se va a enviar el producto al usuario),
cancelado (se ha cancelado la compra) y enviado (se ha enviado el producto al usuario):
a) [l punto] Justifica la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay
otro patrón que se pueda haber usado en vez de éste?
b) [l punto] Plantea el diagrama de clases necesario para abordar la implementación del problema
propuesto. Comienza con un planteamiento genérico y luego particularízalo al problema concreto.
c) [1,25puntos] lmplementa en Java el diagrama de clases propuesto.
Preeunta 12: En una empresa de almacenamiento los clientes pueden alquilar espacios para guardar sus
pertinencias como si fuera el trastero de su casa. La empresa tiene diferentes planes que relacionan cantidad
de espacio y calidad de servicio con precios. El plan básico ofrece espacio equivalente a 3 metros cuadrados
en un almacén compartido con acceso durante las horas de oficina. El plan bronce ofrece espacio equivalente
a 3 metros cuadrados en un almacén individual con acceso durante las horas de oficina. El plan plata ofrece
espacio equivalente a 5 metros cuadrados en un almacén individual con acceso durante las 24 horas del día. El
plan oro ofrece espacio equivalente a 10 metros cuadrados en un almacén individual con acceso durante las
24 horas del día. Se plantea usar el patrón Constructor (Builder) para el sistema informático que va a usar en
la empresa:
a) [l punto] Justifica la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay
otro patrón que se pueda haber usado en vez de éste?
b) [l punto] Plantea el diagrama de clases necesario para abordar la implementación del problema
propuesto. Comienza con un planteamiento genérico y luego particularízalo al problema concreto.
c) [1,25puntos] lmplementa en Java el diagrama de clases propuesto.
PARTETEÓRICA- TEST[2,5 PUNTOS]:
Sólo una de las respuestas es válida. Las respuestas correctas se puntuarán con +1.0, mientras que las respondidas de
manera incorrecta se puntuarán con -0.25. Las n o contestadas no tendrán influencia ni positiva ni negativa en la nota.
Pregunta 1: ¿Cual de las siguientes colaboraciones no es cierta en el caso del patrón Builder?
a. El cliente crea el objeto Director y lo configura con el objeto constructor deseado.
b. El cliente obtiene el producto del constructor.
c. El Constructor maneja las peticiones del Director
d. El Constructor notifica al Director cada vez que hay que construir una parte de un producto.
Pregunta 2: En una simulación de los zorros y los conejos se puede definir una clase padre Animal. En una versión
modificada de la simulación el código podría ser:
import java.util.List;
System.out.println("Anima1");
}
}
public class ZorrosConejos {
public static void main(String[] args) {
Animal z = new Zorro();
z.metodo2();
}
}
Indica qué ocurrirá al ejecutar el código:
a. Error en tiempo de ejecución.
b. Se mostrará en consola el mensaje "Soy un zorro".
c. Error de compilación.
d. Mostrará en consola el mensaje "Soy un animal"
Pregunta 3: Indica cual de los siguientes elementos no es un participante del patrón Prototype (Prototipo)
a. Prototipo Concreto
b. Cliente
c. Prototipo
d. Componente
Pregunta 4: Indique cuál de las siguientes afirmaciones es correcta:
a. 1,2
b. Ninguna
c. 1, 3
d. 2,4
Pregunta 6: Del patrón lterator (Iterador) cuales de las siguientes afirmaciones son correctas:
public Test(int n)
valor=n ;
}
int resultado=l;
int numero=valor;
if (valor>=l)
do
resultado*=numero;
numero-- ;
}while(numero>=l);
return resultado;
}
else{
numero-- ;
}
return resultado;
}
}
}
El resultado de su ejecución sería:
a. -6
b. Bucle infinito
c. 6
d. O
Pregunta 8: Indica cual de las siguientes afirmaciones es falsa respecto a las ventajas del patrón Memento (Recuerdo):
a. Preserva los límites de la encapsulación.
b. Su uso puede ser costoso.
c. Es una alternativa a la herencia.
d. Simplifica al Creador.
a. Las colecciones de objetos son objetos que pueden almacenar un número predeterminado e invariable de otros
objetos.
b. Un iterador es un objeto que proporciona funcionalidad para recorrer todos los elementos de una colección.
c. Un ciclo consiste en la escritura repetida de un bloque de sentencias.
d. Un array es un tipo especial de colección que puede almacenar un número variable de elementos.
Pregunta 10: Respecto al patrón Bridge (Puente), cuales de las siguientes afirmaciones son correctas:
1. Desacopla la interfaz y la implementación.
2. Mejora la extensibilidad.
3. Oculta detalles de implementación a los clientes.
4. Se aplica cuando se desea evitar un enlace permanente entre una abstracción y su implementación.
Preeunta 11: Se desea diseñar una sencilla calculadora que permita realizar multiplicaciones de dos números. Se pide
aplicar el patrón Memento (Recuerdo) con el fin de implementar la operación undo (deshacer), que facilite la
recuperación del resultado de la última operación realizada. Por ejemplo, si el usuario realiza la operación 3*2 =6 y,
justo a continuación realiza la operación 2*7, pero se confunde en el valor 7, el patrón permitirá aplicar una operación
recuperarCaIculoAnterior que muestre al usuario el resultado de la última operación realizada, en este caso, 6.
a) [l punto] Justifica la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay otro patrón
que se pueda haber usado en vez de éste?
a) [l punto] Plantea el diagrama de clases necesario para abordar la implementación del problema propuesto.
Comienza con el planteamiento genérico del patrón y luego particularízalo al problema concreto.
b) [1,25 puntos] lmplementa en Java el diagrama de clases propuesto e implementa un método main que permita
probar el funcionamiento de éstas.
Preeunta 12: Se desea diseñar un sencillo programa que permita configurar su armamento a un jugador de un juego
tipo de disparos en primera persona (first person shoter) su armamento. Se pide aplicar el patrón Decorator
(Decorador) para permitir añadir al arma básica, y de manera dinámica, diferentes elementos tales como una mira
telescópica, un lanzador de granadas, diferentes tipos de culatas, una linterna, etc.
c) [ l punto] Justifica la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay otro patrón
que se pueda haber usado en vez de éste?
d) [ l punto] Plantea el diagrama de clases necesario para abordar la implementación del problema propuesto.
Comienza con el planteamiento genérico del patrón y luego particularízalo al problema concreto.
e) [1,25 puntos] lmplementa en Java el diagrama de clases propuesto e implementa un método main que permita
probar el funcionamiento de éstas.
PARTETEÓRICA- TEST[2,5 PUNTOS]:
Sólo una de las respuestas es válida. Las respuestas correctas se puntuarán con +1.0, mientras que las respondidas de
manera incorrecta se puntuarán con -0.25. Las no contestadas no tendrán influencia ni positiva ni negativa en la nota.
Pregunta 1: Entre las condiciones que debe haber para poder aplicar el patrón Flyweight (Peso Ligero) están las
siguientes:
¿Qué tipo de Listener habrá que usar (donde están los XXX en el código anterior) para detectar que el usuario ha hecho
clic en el botón?
a. new EventListenerO
b. new ActionListener()
c. new ButtonListener()
d. new ActionPerformedListener()
Pregunta 3: ¿Cuáles son los participantes del patrón Adapter (Adaptador) (indica la respuesta falsa)?
a. Adaptador
b. Adaptable
c. Objetivo
d. Sujeto
Pregunta 5: En comparación de un Adapter (Adaptador) y un Bridge (Puente), se puede decir que (indica la respuesta
falsa):
Pregunta 6: Algunas de las técnicas para la implementación del patrón Abstract Factory (Fábrica Abstracta) son (indica la
respuesta falsa):
Pregunta 7: En un organizador de música podemos usar un ArrayList para guardar los nombres de las canciones:
import java.util.ArrayList;
import java.util.lterator;
Pregunta 8: Los fines del patrón lterator (Iterador) son (indica la respuesta falsa):
a. lncrementa el acoplamiento.
b. No cambia el acoplamiento.
c. Permite tratar el acoplamiento como si fuera la cohesión.
d. Reduce el acoplamiento.
Pregunta 10: En el patrón Strategy (Estrategia), el participante Estrategia tiene la siguiente función:
Pregunta 11: Para un sistema de gestión de la fabricación de un coche, se quiere usar el patrón Facade (Fachada) para el
montaje de los diferentes subsistemas del coche (Ruedas, Chasis, Conducción, Combustible, Electrónica, etc.)
a) [l punto] Justifica la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay otro patrón
que se pueda haber usado en vez de éste?
b) [l punto] Plantea el diagrama de clases necesario para abordar la implementación problema propuesto.
Comience con un planteamiento genérico y luego particularízalo al problema concreto.
c) [1,25puntos] lmplementa en Java el diagrama de clases propuesto.
Pregunta 12: En un banco hace falta la validación de un empleado para canjear un cheque. Si la cantidad es superior a
un límite establecido, el empleado tiene que pasar la autorización a un superior (en el orden Empleado de Caja 3
Director Adjunto 3 Director). Se plantea usar el patrón Chain of Responsibility (cadena de responsabilidad) para
modelar este proceso en un sistema informático que va a usar en el banco:
a) [l punto] Justifica la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay otro patrón
que se pueda haber usado en vez de éste?
b) [l punto] Plantea el diagrama de clases necesario para abordar la implementación problema propuesto.
Comience con un planteamiento genérico y luego particularízalo al problema concreto.
c) [1,25puntos] lmplementa en Java el diagrama de clases propuesto.
PARTETEÓRICA- TEST[2,5 PUNTOS]:
Sólo una de las respuestas es válida. Las respuestas correctas se puntuarán con +1.0, mientras que las respondidas de
manera incorrecta se puntuarán con -0.25. Las n o contestadas no tendrán influencia ni positiva ni negativa en la nota.
Pregunta 1: Entre las condiciones que debe haber para poder aplicar el patrón Adapter (Adaptador), y más
concretamente un adaptador de objetos, están las siguientes:
1. Se quiere usar una clase existente y su interfaz no concuerda con la que necesita
2. Se quiere crear una clase reutilizable que coopere con clases no relacionadas o que no han sido previstas.
3. Se quiere representar jerarquías de objetos parte-todo.
4. Es necesario usar varias subclases existentes pero no resulta práctico adaptar su interfaz heredando de cada una
de ellas.
Pregunta 2: En una simulación de los zorros y los conejos se puede definir una clase abstracta Animal. En una versión
modificada de la simulación el código podría ser:
import java.util.List;
abstract class Animal {
String nombre = "Animal";
a. Error de Compilación. Una clase abstracta n o puede tener ningún método implementado.
b. Error de Compilación. La clase Zorro debe sobreescribir el método "método2".
c. Error de compilación. El objeto z se ha creado utilizando el constructor de la clase Zorro y, por lo tanto, no tiene
acceso al método "metodo2"
d. Mostrará en consola el mensaje "Soy un animal"
Pregunta 3: Indica cual de los siguientes elementos no es un participante del patrón Decorator (Decorador)
a. Componente
b. Componente Concreto
c. Decorador
d. Cliente
1. El autoboxing se aplica siempre que se pasa un valor de tipo primitivo como parámetro a un método que espera
un tipo envoltorio.
2. El autoboxing se aplica cuando se almacena un valor de tipo primitivo en una variable de tipo envoltorio.
3. El unboxing se aplica cuando se pasa un valor de tipo envoltorio como parámetro a un método que espera un
valor de tipo primitivo.
4. El unboxing se aplica cuando se almacena un valor de tipo envoltorio en una variable de tipo primitivo.
a. 1,2,3,4
b. 1,3
c. 2,4
d. Ninguna
a. El patrón Decorator está diseñado para añadir responsabilidades a objetos creando subclases.
b. El patrón Composite estructura subclases para que se puedan tratar de manera uniforme muchos objetos
relacionados.
c. El patrón Proxy permite asignar o quitar propiedades dinámicamente.
d. Los patrones Composite y Decorator no pueden usarse de manera combinada.
Pregunta 6: Del patrón Observer (Observador) cuales de las siguientes afirmaciones son correctas:
1. Se aplica cuando una abstracción tiene dos aspectos y uno depende del otro.
2. El participante Sujeto Concreto notifica a sus observadores cada vez que se produce un cambio que pudiera
hacer que el estado de éstos fuera inconsistente con el suyo.
3. El participante Sujeto no conoce a sus observadores.
4. Permite un tipo de interacción conocida como publicar-suscribir.
public Test(int n)
1
valor=n ;
}
if (valor>=l)
do
resultado*=numero;
numero-- ;
}while(numero>=l);
return resultado;
}
else{
return 1;
}
Pregunta 8: Indica cual d e las siguientes afirmaciones es falsa respecto a las ventajas d e l p a t r ó n Strategy (Estrategia)
son:
a. Definen una familia d e algoritmos o comportamientos.
b. P e r m i t e n eliminar las sentencias condicionales.
c. Únicamente p e r m i t e n una i m p l e m e n t a c i ó n para cada u n o d e los comportamientos.
d. Son una alternativa a la herencia.
Pregunta 10: Respecto al p a t r ó n Visitor (Visitante), cuales d e las siguientes afirmaciones son correctas:
a) [ l punto] Justifica la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay otro patrón
que se pueda haber usado en vez de éste?
a) [ l punto] Plantea el diagrama de clases necesario para abordar la implementación del problema propuesto.
Comienza con el planteamiento genérico del patrón y luego particularízalo al problema concreto.
b) [1,25 puntos] lmplementa en Java el diagrama de clases propuesto e implementa un método main que permita
probar el funcionamiento de éstas.
Pregunta 12: El nuevo robot de cocina Retro-Mix es capaz de preparar distintos tipos de bebidas. En concreto, puede
preparar combinados de whisky, ron y ginebra. Los pasos que sigue para preparar cada uno de ellos son los siguientes:
Combinado de whisky: Pone hielos en el vaso, echa 3 dedos de whisky y echa una Coca Cola.
Combinado de ron: Pone hielos en el vaso, echa 4 dedos de ron, echa una Coca Cola y exprime un poco de
limón en el vaso.
Combinado de ginebra: Pone hielos en el vaso, echa 2 dedos de ginebra, echa una tónica y pone una rama de
canela.
Se pide diseñar, utilizando el patrón Template Method, la estructura de clases necesaria que permita materializar la
funcionalidad del robot Retro-Mix.
c) [ l punto] Justifica la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay otro patrón
que se pueda haber usado en vez de éste?
d) [ l punto] Plantea el diagrama de clases necesario para abordar la implementación del problema propuesto.
Comienza con el planteamiento genérico del patrón y luego particularízalo al problema concreto.
e) [1,25 puntos] lmplementa en Java el diagrama de clases propuesto e implementa un método main que permita
probar el funcionamiento de éstas.
PARTETEÓRICA- TEST[2,5 PUNTOS]:
Sólo una de las respuestas es válida. Las respuestas correctas se puntuarán con +1.0, mientras que las respondidas de
manera incorrecta se puntuarán con -0.25. Las no contestadas no tendrán influencia ni positiva ni negativa en la nota.
Pregunta 1: ¿Cuál de las siguientes afirmaciones acerca del patrón Abstract Factory (Fabrica Abstracta) es falsa?
Preeunta 6: ¿Cuál de las siguientes afirmaciones acerca del patrón Mediator (Mediador) es falsa?
a) Abstrae cómo cooperan los objetos.
b) Descentraliza el control.
c) Reduce la herencia.
d) Simplifica los protocolos de los objetos.
Preeunta 7: Dado el siguiente fragmento de código, ¿Cuál sería la salida por pantalla?
a) Error de compilación.
b) 9
c) 15
d) 16
Pregunta 8: Dado el siguiente fragmento de código, ¿Cuál sería la salida por pantalla?
interface MiInterfazi j
a) Error de compilación
b) Error en tiempo de ejecución
c) No soy un interfaz
d) Soy un interfaz
Pregunta 9: Dado el siguiente código, ¿Qué habría que implementar como condición del if para que el resultado
mostrado por pantalla sea "IGUALES"?
if (CODIGO AQUI)
System. out.print1n ("IGUALES");
else
System. out.println ("NO IGUALES");
Pregunta 10:¿Cuál de las siguientes afirmaciones es correcta respecto a una clase interna?
a) Puede acceder a los campos y métodos públicos y protegidos de la clase envolvente, pero no privados.
b) Puede acceder a los campos y métodos públicos de la clase envolvente, pero no a privados ni a protegidos.
c) No puede acceder a los campos y métodos privados de la clase envolvente.
d) Puede acceder a los campos y métodos públicos y privados de la clase envolvente.
Preeunta 11: Suponga un escenario donde le han solicitado implementar el funcionamiento de un mando a distancia
universal de televisión. La aproximación más sencilla es crear una clase abstracta o una interfaz, basada en un conjunto
de funcionalidades básicas (encender, apagar o cambiar de canal), a partir de la cual puedan implementarse los
comportamientos concretos de cada fabricante (Samsung, Sony, etc.) en sus televisiones específicas. Con el fin de que
pueda variar de manera sencilla tanto la implementación concreta de cada televisor como la abstracción que ha
definido inicialmente (por ejemplo añadiendo una nueva funcionalidad como siguiente canal o canal anterior), le
proponemos el uso del patrón Bridge (Puente).
a) [ l punto] Justifique la elección de este patrón y analice las ventajas y desventajas de la elección. ¿Hay otro
patrón que se podría haber usado en lugar de este?
b) [ l punto] Plantee el diagrama de clases necesario para abordar la implementación problema propuesto.
Comience con un planteamiento genérico y luego particularícelo al problema concreto. Explique
detalladamente todas las decisiones tomadas.
c) [1,25 puntos] lmplemente en Java el diagrama de clases propuesto.
Preeunta 12: Le han encargado realizar una aplicación en Java para una empresa de reformas. Suponga que la empresa
trabaja tres tipos diferentes de habitación (dormitorios, salas de estar y cuartos de baño) con un coste base de 1000,
2000 y 500 euros respectivamente. Entre las reformas que la empresa realiza se encuentran las siguientes: poner
tarima, alicatar, pintar y decorar, y cuyo coste es de 1000, 500, 400 y 1500 euros respectivamente. Se le ha solicitado
una aplicación que permita configurar la reforma, definiendo el tipo de habitación y las reformas necesarias, y que
devuelva como salida una descripción de la reforma y el precio final de esta. Le proponemos el uso del patrón Decorator
(Decorador).
a) [ l punto] Justifique la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay otro
patrón que se podría haber usado en lugar de este?
b) [ l punto] Plantee el diagrama de clases necesario para abordar la implementación problema propuesto.
Comience con un planteamiento genérico y luego particularícelo al problema concreto. Explique
detalladamente todas las decisiones tomadas.
c) [1,25 puntos] lmplemente en Java el diagrama de clases propuesto.
PARTETEÓRICA- TEST[2,5 PUNTOS]:
Sólo una de las respuestas es válida. Las respuestas correctas se puntuarán con +1.0, mientras que las respondidas de
manera incorrecta se puntuarán con -0.25. Las no contestadas no tendrán influencia ni positiva ni negativa en la nota.
Pregunta 1: El patrón Factory Method (método de fabricación) ofrece una solución a que problema
a) Cómo crear instancias de clases cuando sólo se conoce las clases abstractas.
b) Cómo crear subclases de una clase definida en tiempo de ejecución.
c) Cómo crear instancias de clases abstractas e interfaces.
d) Cómo crear superclases a partir de subclases abstractas.
Pregunta 2: Los participantes en el patrón Prototype (Prototipo) son (indica la respuesta incorrecta):
a) Prototipo
b) Prototipo Abstracto
c) Cliente
d) Prototipo Concreto
Pregunta 3: Las consecuencias de usar el patrón Bridge (puente) son (indica la respuesta incorrecta):
a) Mejora la extensibilidad.
b) Desacopla la interfaz y la implementación.
c) Ocultar los detalles de la implementación a los clientes.
d) Restringir el acceso de los clientes a la implementación.
Pregunta 5: Se puede aplicar el patrón Command (orden) para (indica la respuesta incorrecta):
a) Parametrizar objetos con una acción a realizar.
b) Permitir registrar los cambios de manera que se puedan volver a aplicar.
c) Estructurar un sistema independiente de operaciones de alto nivel.
d) Permitir deshacer.
Pregunta 7: ¿Cómo será la signatura de un constructor para un método que devuelve el cuadrado de dos enteros?
a. public cuadrado (int n l , int n2)
b. public int cuadrado (int n l , int n2)
c. public int cuadrado (int n l , n2)
d. int public int cuadrado (int n l , int n2)
Pregunta 8: ¿Qué código habrá que añadir en vez de XXX para lograr que se salga del bucle al teclear 'S' o 'N' o 'S' o 'n'?
char res;
do
System.out.println("CQuieres seguir (S/N)?");
res = (char)System.in.read( );
} xxx
Pregunta 9: ¿ Qué código habrá que añadir en vez de XXX para lograr que un oyente de acción de los elementos de un
menú llama al método abrirArchivo()?
Pregunta 10: Según el texto de la bibliografía básica de la asignatura, ejemplos de bordes en interfaces gráficos son
(indique la respuesta FALSA):
a. BevelBorder
b. CompoundBorder
c. EmptyBorder
d. EdgeBorder
Pregunta 11: Le proponemos usar el patrón Prototype (Prototipo) para crear diferentes clases de televisores (por
ejemplo: SONY, SAMSUNG; PANASONIC, etc.) en un sistema de gestión de estos productos:
a) [ l punto] Justifique la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay otro
patrón que se puede haber usado en vez de este?
b) [ l punto] Plantee el diagrama de clases necesario para abordar la implementación problema propuesto.
Comience con un planteamiento genérico y luego particularícelo al problema concreto.
c) [1,25 puntos] lmplemente en Java el diagrama de clases propuesto.
Pregunta 12: Una empresa de alquiler de coches ofrece automóviles de alquiler para cortos o largos períodos de
tiempo. El estatus de un coche puede tener cuatro valores: DISPONIBLE, ALQUILADO-CORTO, ALQUILADO-LARGO, y EN-
TALLER. Le proponemos usar el patrón State (estado) para modelar un coche en una empresa de alquiler de coches:
a) [ l punto] Justifique la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay otro
patrón que se puede haber usado en vez de este?
b) [ l punto] Plantee el diagrama de clases necesario para abordar la implementación problema propuesto.
Comience con un planteamiento genérico y luego particularícelo al problema concreto.
c) [1,25 puntos] lmplemente en Java el diagrama de clases propuesto.
PARTETEÓRICA- TEST[2,5 PUNTOS]:
Sólo una de las respuestas es válida. Las respuestas correctas se puntuarán con +1.0, mientras que las respondidas de
manera incorrecta se puntuarán con -0.25. Las n o contestadas no tendrán influencia ni positiva ni negativa en la nota.
a) Definir el esqueleto de un algoritmo dejando la implementación de algunos de los pasos del esqueleto a las
subclases.
b) Definir una familia de algoritmos, encapsular cada uno de ellos y hacerlos intercambiables. Permite que un
algoritmo varíe independientemente de los clientes que lo usan.
c) Permite añadir dinámicamente nuevas responsabilidades/nuevo comportamiento a un objeto, proporcionando
una alternativa a la definición de subclases
d) Facilitar la construcción de objetos relacionados entre sí.
Preeunta 2: ¿Cuál de las siguientes afirmaciones acerca del patrón State es falsa?
a) Los costes de almacenamiento son elevados debido a la gran cantidad de objetos creados.
b) La mayor parte del estado del objeto puede hacerse extrínseco.
c) Muchos grupos de objetos pueden reemplazarse por relativamente pocos objetos compartidos.
d) La aplicación depende de la identidad de un objeto.
Preeunta 4: ¿Qué patrón aplicaría en el caso en el que una clase principal delegue en sus subclases el tipo de objetos a
crear?
a) Abstract Factory
b) Factory Method
c) Decorator
d) Builder
Preeunta 5: ¿Cuál de las siguientes afirmaciones acerca del patrón Chain of Responsibility es falsa?
Preeunta 6: ¿Qué patrón aplicaría en el caso de querer definir una nueva operación sin cambiar las clases de los
elementos sobre los que opera?
a) State
b) Visitor
c) Memento
d) Observer
Preeunta 7: Dado el siguiente fragmento de código, ¿Cómo podríamos invocar el constructor de la clase Base para que
mostrara en consola el mensaje "constructor base"?
class Base{
Base (int i) {
System.out.print1n("~on~tr~ctor
base");
Base ( ) {
1
public void derived ( )
{
//POSICION 3
a) sólo public
b) sólo private
c) sólo static
d) public, private y static
1
class ClaseB {
int contar (int x, int y) { return x + y; )
1
a) 13
b) Fallo de compilación debido a más de un error.
c) Error de compilación en la Iínea 6.
d) Error de compilación en la Iínea 7.
Pregunta 10: ¿Qué sentencia deberíamos insertar en el siguiente código para que éste compile y se ejecute
correctamente?
class ClaseA { )
class ClaseB extends ClaseA { )
class ClaseC extends ClaseB { )
public class ClaseD {
ArrayList<ClaseB> ir ( ) {
/ INSERTAR EL CODIGO AQUI
1
1
Preeunta 11: Suponga una biblioteca de clases donde existe una función Add que toma como parámetros dos enteros y
devuelve la suma de ambos. Suponga ahora que se ha modificado el método Add de la biblioteca, de modo que ahora
recibe como parámetros dos valores decimales. ¿Se podría utilizar el patrón Adapter de modo que no fuera necesario
modificar el código de la clase cliente que hacía uso del método Add inicial?
a) [l punto] Justifique la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay otro
patrón que se podría haber usado en lugar de este?
b) [l punto] Plantee el diagrama de clases necesario para abordar la implementación problema propuesto.
Comience con un planteamiento genérico y luego particularícelo al problema concreto. Explique
detalladamente todas las decisiones tomadas.
c) [1,25puntos] lmplemente en Java el diagrama de clases propuesto.
Preeunta 12: ¿Se podría usar el patrón Observer para un sistema de gestión de Temperaturas que sea capaz de
actualizar un conjunto de dispositivos con la temperatura detectada por una estación central de Temperaturas?
a) [l punto] Justifique la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay otro
patrón que se podría haber usado en lugar de este?
b) [l punto] Plantee el diagrama de clases necesario para abordar la implementación problema propuesto.
Comience con un planteamiento genérico y luego particularícelo al problema concreto. Explique
detalladamente todas las decisiones tomadas.
c) [1,25puntos] lmplemente en Java el diagrama de clases propuesto.
PARTETEÓRICA- TEST[2,5 PUNTOS]:
Sólo una de las respuestas es válida. Las respuestas correctas se puntuarán con +1.0,mientras que las respondidas de
manera incorrecta se puntuarán con -0.25. Las no contestadas no tendrán influencia ni positiva ni negativa en la nota.
Preeunta 3: Los beneficios del patrón Composite (Compuesto) son (indica la respuesta falsa):
a) Poder definir jerarquías de clases primitivos y compuestos.
b) Facilita añadir nuevos tipos de componentes.
c) Simplifica el diseño del cliente.
d) Hacer más fácil restringir los componentes de un compuesto.
Preeunta 4: Las situaciones comunes para utilizar el patrón Proxy (Apoderado) son (indica la respuesta falsa):
a) Un proxy local que proporciona un representante local de un objeto local.
b) Un proxy virtual que crea objetos costosos por encargo.
c) Un proxy remoto que proporciona u n representante local de u n objeto remoto.
d) Un proxy de protección que controla el acceso a un objeto.
Preeunta 5: Las participantes del patrón lnterpreter (Intérprete) incluyen (indica la respuesta falsa):
a) ExpresionTerminal
b) ExpresionAbstracta
c) Contexto
d) Interprete
Preeunta 6: Las participantes del patrón Observer (Observador) incluyen (indica la respuesta falsa):
a) Observador
b) ObservadorConcreto
c) Sujeto
d) Sujetoconcreto
Preeunta 7: Dado este fragmento de código:
public class Test {
String n;
Test(String i) {
n = i;
1
Test0
this("Prueba1");
1
public static void main(String args[]) {
Test p l = new Test("Prueba2");
Test p2 = new Test();
1
1
Después de ejecutar el método main, ¿qué valor tendría la variable n para los objetos p l y p2?
a. Prueba2, Pruebal
b. Prueba2, Prueba2
c. Pruebal, Pruebal
d. Prueba2, null
FooO
letraslist = ???
1
1
a) [l punto] Justifique la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay otro
patrón que se puede haber usado en vez de este?
b) [l punto] Plantee el diagrama de clases necesario para abordar la implementación problema propuesto.
Comience con un planteamiento genérico y luego particularícelo al problema concreto.
c) [1,25puntos] lmplemente en Java el diagrama de clases propuesto.
Preeunta 12: Se podría usar el patrón Observer (Observador) para un sistema de gestión de una Biblioteca, donde cada
vez que un lector devuelve un libro hay que avisar a otras partes del sistema que están interesadas en conocer este
evento:
a) [l punto] Justifique la elección de este patrón y analiza las ventajas y desventajas de la elección. ¿Hay otro
patrón que se puede haber usado en vez de este?
b) [l punto] Plantee el diagrama de clases necesario para abordar la implementación problema propuesto.
Comience con un planteamiento genérico y luego particularícelo al problema concreto.
c) [1,25puntos] lmplemente en Java el diagrama de clases propuesto.
PARTETEÓRICA- TEST[2,5 PUNTOS]:
Sólo una de las respuestas es válida. Las respuestas correctas se puntuarán con +1.0,mientras que las respondidas de
manera incorrecta se puntuarán con -0.25. Las no contestadas no tendrán influencia ni positiva ni negativa en la nota.
Preeunta 1: ¿Qué patrón de diseño utilizaría para controlar la creación de un objeto en base a una interfaz
preestablecida pero permitiendo que la implementación específica pueda decidir qué subclase construir?
a) Singleton (Unico)
b) Builder (Constructor)
c) Prototype (Prototipo)
d) Factory Method (Método Factoría)
Preeunta 2: ¿Qué patrón de diseño utilizaría para limitar la instanciación de clases a un único objeto?
a) Factory Method (Método Factoría)
b) Builder
c) Prototype
d) Singleton
Preeunta 3: ¿Cuáles son las consecuencias de utilizar el patrón Factory method (Método Factoría)?:
a) Se desacopla el código del cliente de las clases específicas de la aplicación.
b) Permite hacer familias de productos intercambiables.
c) Facilita la instanciación de un único objeto.
d) Permite observar los cambios de estado en otros objetos de la aplicación.
Preeunta 4: ¿Qué patrón de diseño utilizaría para desacoplar una abstracción de su implementación de forma que fuera
posible modificar cualquiera de ellas de manera independiente?
a) Adapter (Adaptador)
b) Bridge (Puente)
c) Facade (Fachada)
d) Composite (Composición)
Preeunta 6: ¿Qué patrón de diseño utilizan las jerarquías de clases Java InputStream, OutputStream, Reader y Writer?
a) Adapter (Adaptador)
b) Bridge (Puente)
c) Composite (Composición)
d) Decorator (Decorador)
Preeunta 7: Dado el siguiente código:
class Base {
public void metodo(fina1 int x) {
System.out.print("Base");
1
1
Una empresa de software le ha solicitado que realice una implementación basada en patrones de diseño que permita
simular un mando a distancia virtual universal. Con el fin de que el diseño sea lo más genérico posible, se le ha pedido
que su propuesta funcione con cualquier tipo de televisión y que, además, sea lo suficientemente flexible como para
soportar la inclusión de nuevas funcionalidades en el mando a distancia en el futuro próximo.
En el momento actual, la empresa le ha pedido que implemente su modelo para dos tipos de televisiones (Sony y
Samsung), que disponen de las funcionalidades encender, apagar y seleccionar canal. Del mismo modo, y para
demostrar la viabilidad de su diseño, la empresa le ha pedido que diseñe el mando a distancia virtual de manera que
inicialmente soporte dos tipos de mandos específicos, el primero de ellos deberá responder a las funcionalidades
básicas de los televisores propuestos (encender, apagar, seleccionar canal), mientras que el segundo será un poco más
sofisticado y permitirá al usuario realizar acciones directas para pasar al siguiente canal o al canal anterior.
a) [2 puntos] ¿Qué patrón de diseño sería válido para recoger los requisitos propuestos?. Justifique su respuesta.
b) [1,5 puntos] Plantee el diagrama de clases necesario para abordar la implementación específica del problema.
Comience con un planteamiento genérico y luego particularícelo al problema concreto. Explique
detalladamente todas las decisiones tomadas.
c) [1,5 puntos] lmplemente en Java el diagrama de clases propuesto.
d) [1,5 puntos] lmplemente una sencilla clase con un método main que ilustre el funcionamiento del mando a
distancia virtual para cada una de las implementaciones específicas tanto de televisores como de mandos a
distancia proporcionadas por la empresa.
PARTETEÓRICA- TEST[2,5 PUNTOS]:
Sólo una de las respuestas es válida. Las respuestas correctas se puntuarán con +1.0, mientras que las respondidas de
manera incorrecta se puntuarán con -0.25. Las no contestadas no tendrán influencia ni positiva ni negativa en la nota.
Preeunta 1: Los participantes del patrón Factory Method (método de fabricación) son (indica la respuesta falsa):
a) ProductoAbstracto, ProductoConcreto, Creador y CreadorConcreto
b) ProductoAbstracto, Producto, Creador y CreadorConcreto
c) Producto, ProductoConcreto, Creador y CreadorConcreto
d) Producto, Creador y CreadorConcreto
Preeunta 3: Los beneficios del patrón Singleton (Único) son (indica la respuesta falsa):
a) Permite un espacio de nombres reducido.
b) Permite el refinamiento de operaciones y la representación.
c) Permite un número variable de instancias.
d) Permite acceso controlado a todas las instancias.
Preeunta 4: ¿Qué patrón desacopla una abstracción de su implementación de modo que ambas puedan variar de forma
independiente?:
a) Bridge (puente)
b) Adapter (Adaptador)
c) Facade (Fachada)
d) Proxy (Apoderado)
a) Facade (Fachada)
b) Adapter (Adaptador)
c) Bridge (puente)
d) Decorator (Decorador)
Preeunta 8: ¿Puede una clase como JButton gestionar sus propios eventos? En caso afirmativo, ¿cómo?
a) No
b) Sí / implementando ActionListener
c) Sí / implementando EventListener
d) Sí / implementando WindowListener
Partiendo del desarrollo que ha realizado como parte de la práctica obligatoria del curso 2011-2012, se pide que amplíe
el diseño realizado con el fin de satisfacer un nuevo requisito del cliente:
"Se pretende lanzar una tarjeta de ahorro donde si u n cliente ha comprado 9 pizzas en cualquiera de las franquicias, se
le regale la décima. La tarjeta funciona de la siguiente forma. La primera vez que u n cliente compra una pizza, se le
ofrece al cliente la tarjeta, cuyos datos (número de tarjeta y nombre del cliente) quedan registrados en la franquicia.
Cada vez que el cliente compra una nueva pizza en una de las franquicias, ésta pone un sello en su tarjeta y actualiza los
datos de la compra de ese cliente. Si el cliente compra una pizza en la misma franquicia que consiguió la tarjeta, se
actualizan los datos de la compra en local. Si se trata de otra franquicia, se mandan los datos de la compra a la
franquicia original, donde el cliente activó su tarjeta. Antes de cobrar al cliente su pizza, la franquicia donde ha realizado
la compra el cliente comprueba (en local, si es la franquicia donde ha activado su tarjeta, o en remoto en caso contrario)
si le corresponde una pizza gratuita, en cuyo caso se pone el contador de compras asociadas al usuario a cero y se le da
una tarjeta nueva."
Se pide que rediseñes t u propuesta original de la práctica teniendo en cuenta estos nuevos requisitos. Para ello deberás
responder de manera razonada a los siguientes apartados:
a) [2 puntos] ¿Qué patrón de diseño sería válido para recoger los nuevos requisitos?. Justifique su respuesta.
¿Deberá rediseñar o ampliar alguno de los patrones que ha implementado en su práctica?. Justifique su
respuesta.
b) [1,5 puntos] Plantee el diagrama de clases necesario para abordar la implementación específica del
subproblema propuesto. Comience con un planteamiento genérico y luego particularícelo al problema concreto.
Explique detalladamente todas las decisiones tomadas, así como las clases reutilizadas de su práctica original
(en el caso de haber reutilizado alguna).
c) [1,5 puntos] lmplemente en Java el diagrama de clases propuesto.
d) [1,5 puntos] lmplemente una sencilla clase con un método main que ilustre el proceso de pedido de varias
pizzas en varias franquicias y muestre por pantalla las estadísticas obtenidas.
PARTETEÓRICA- TEST[2,5 PUNTOS]:
Sólo una de las respuestas es válida. Las respuestas correctas se puntuarán con +1.0, mientras que las
respondidas de manera incorrecta se puntuarán con -0.25. Las no contestadas no tendrán influencia ni
positiva ni negativa en la nota.
Preeunta 1: Dado el siguiente fragmento de código, indique cuál de las siguientes afirmaciones es el resultado de
ejecución:
1. public class T {
2. public static void main(String[] args) {
3. List<lnteger> list = new ArrayList<lnteger>();
4. list.add(0, 59);
5. int t = list.get(0);
6. System.out.println(t);
7. 1
8. 1
a) 59
b) Un error de compilación, porque la línea 5 tiene que ser: int t = ((Integer)(list.get(O))).intValue();
c) Un error de compilación, porque no se puede añadir un tipo primitivo en List.
d) Un error de ejecución.
Preeunta 2: Respecto a los bucles, indique cual de las siguientes afirmaciones es falsa:
a) El cuerpo de un bucle for-each puede repetirse O o más veces.
b) Un bucle for-each puede aplicarse sobre cualquier clase que implemente la interfaz Iterable.
c) El cuerpo de un bucle while siempre se ejecuta, como mínimo, una vez.
d) Un bucle for-each puede aplicarse sobre arreglos (arrays).
Preeunta 3: CCualés son las partes obligatorias de un Applet?: name, code, width, height:
a) name + code
b) code
c) code + width + height
d) name
Preeunta 4: Dado el siguiente fragmento de código, indique cuál de las siguientes afirmaciones es el resultado de su
ejecución:
class BC {
public void aM() {
System.out.println("Un método de BC");
1
1
public class SC extends BC {
public void aM() {
System.out.println("Un método de SC");
super.aM();
1
public static void main(String [] arg){
SC sc = new SC ();
sc.a();
1
1
a) Habrá un error de compilación.
b) Se compila pero da un error de ejecución.
c) Un método de BC
d) Un método de SC
Preeunta 5: Según el texto de la bibliografía básica de la asignatura, ejemplos de bordes en interfaces gráficos son
(indique la respuesta FALSA):
a) BevelBorder
b) SpaceBorder
c) CompountBorder
d) EmptyBorder
Preeunta 8: ¿Cuáles son las consecuencias del patrón estructural Adapter? Indica la respuesta FALSA:
a) El cliente y la clase adaptada permanecen independientes.
b) El patrón adapter introduce una indirección en el programa que implica una mayor dificultad en la comprensión
del mismo
c) El patrón adapter no permite n o permite envolver código no orientado a objeto con forma de clase.
d) Se puede usar una clase adapter para determinar cuál de los métodos de un objeto es llamado.
Preeunta 10: Dadas las siguientes afirmaciones sobre el patrón proxy, indique las correctas:
a) Al, A3, A5
b) Al, A4, A5
c) A2, A3, A4
d) A2, A3, A5
Partiendo del desarrollo que ha realizado como parte de la práctica obligatoria del curso 2011-2012, se pide que amplíe
el diseño realizado con el fin de satisfacer un nuevo requisito del cliente:
"Debido al éxito de la franquicia, se quiere extender el modelo de negocio para incluir hamburguesas"
Se pide que rediseñe su propuesta original teniendo en cuenta estos nuevos requisitos. Para ello deberá responder de
manera razonada a los siguientes apartados:
a) [2 puntos] ¿Qué patrón de diseño sería válido para recoger los nuevos requisitos?. Justifique su respuesta.
¿deberá rediseñar o ampliar alguno de los patrones que ha implementado en su práctica?. Justifique su
respuesta.
b) [1,5 puntos] Plantee el diagrama de clases necesario para abordar la implementación específica del
subproblema propuesto. Comience con un planteamiento genérico y luego particularícelo al problema concreto.
Explique detalladamente todas las decisiones tomadas, así como las clases reutilizadas de su práctica original
(en el caso de haber reutilizado alguna).
c) [1,5 puntos] lmplemente en Java el diagrama de clases propuesto.
d) [1,5 puntos] lmplemente una sencilla clase con un método main que ilustre el proceso de pedido de pizzas y
hamburguesas.
PARTETEÓRICA- TEST[2,5 PUNTOS]:
Sólo una de las respuestas es válida. Las respuestas correctas se puntuarán con +1.0,mientras que las respondidas de
manera incorrecta se puntuarán con -0.25. Las no contestadas no tendrán influencia ni positiva ni negativa en la nota.
Preeunta 1: Un patrón que proporciona un modo de acceder secuencialmente a los elementos de un objeto agregado
sin necesidad de conocer su organización interna recibe el nombre de:
a) Visitor
b) Composite
c) lterator
d) Command
Preeunta 2: Un patrón que utilizamos para crear un objeto representativo que controla el acceso a otro objeto que
puede ser remoto, complejo de crear o que necesita de algún tipo de protección recibe el nombre de:
a) Proxy
b) Flyweight
c) Bridge
d) Composite
Preeunta 3: Un patrón que proporciona una interfaz para crear familias de objetos relacionados o dependientes sin
necesidad de especificar sus clases específicas recibe el nombre de:
a) Factory Method
b) Prototype
c) Builder
d) Abstract Factory
Preeunta 6: Desde el punto de vista del diseño, ¿cual de las siguientes propuestas no resultaría adecuada?
a) Coche extiende Vehículo
b) Motocicleta extiende Vehiculo
c) Pizza4Quesos extiende Pizza
d) Triangulo extiende Cuadrado
Preeunta 7: Dado e l siguiente código:
a) 10
b) 5
c) Error de compilación
d) Error en tiempo de ejecución
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
"Ahora se pretende llevar un control centralizado de todas las franquicias. De este modo, el cliente ha solicitado incluir
mejoras en el sistema que permitan guardar y actualizar el número de pizzas servidas en tiempo real e
independientemente de la franquicia que ha hecho la venta. De este modo, una vez entregado el pedido deberá
actualizarse el contador de pizzas correspondiente al tamaño de la pizza correspondiente"
Se pide que rediseñe su propuesta original teniendo en cuenta estos nuevos requisitos. Para ello deberá responder de
manera razonada a los siguientes apartados:
a) [2 puntos] ¿Qué patrón de diseño sería válido para recoger los nuevos requisitos?. Justifique su respuesta.
¿deberá rediseñar o ampliar alguno de los patrones que ha implementado en su práctica?. Justifique su
respuesta.
b) [1,5 puntos] Plantee el diagrama de clases necesario para abordar la implementación específica del
subproblema propuesto. Comience con un planteamiento genérico y luego particularícelo al problema concreto.
Explique detalladamente todas las decisiones tomadas, así como las clases reutilizadas de su práctica original
(en el caso de haber reutilizado alguna).
c) [1,5 puntos] lmplemente en Java el diagrama de clases propuesto.
d) [1,5 puntos] lmplemente una sencilla clase con un método main que ilustre el proceso de pedido de varias
pizzas en varias franquicias y muestre por pantalla las estadísticas obtenidas.