Sie sind auf Seite 1von 90

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:Se usa el patrón Bridge (Puente) cuando:


a. tanto las abstracciones como sus implementaciones no deben ser extensibles mediante subclases.
b. se quiere compartir una implementación entre varios objetos.
c. se quiere permitir un enlace permanente entre una abstracción y su implementación.
d. los cambios en la implementación de una abstracción deben tener impacto en los clientes.

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 3:CCuál de las siguientes sentencias se ejecuta de manera correcta?


a. String vehiculos = {"Coche", "Moto", "Barco");
b. String vehiculos [] = new String {"Coche" "Moto" "Barco");
c. String vehiculos [] = { "Coche" "Moto" "Barco");
d. String vehiculos [] = {"Coche", "Moto", "Barco");

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 5: CCuál de las siguientes es una característica de la clase java.lang.Error?


a. implements Throwable.
b. implements Exception.
c. extends Exception.
d. Ninguna de las anteriores.

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 8: De los participantes en el patrón Builder (Constructor), el papel del ConstructorConcreto es


(indica la respuesta incorrecta):
a. Extender la clase Director.
b. lmplementar la interfaz Constructor.
c. Definir la representación a crear.
d. Proporcionar una interfaz para devolver el producto.

Pregunta 9: El participante Estrategia del patrón Strategy:


a. Configura un objeto Estrategiaconcreta.
b. lmplementa el algoritmo EstrategiaAbstracta.
c. Declara una interfaz común a todos los algoritmos permitidos.
d. Ninguna de las anteriores afirmaciones es correcta.

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.

Pregunta 3: CCon qué patrón se corresponde el siguiente diagrama?

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

Pregunta 5: CCómo se comprueba el tamaño de un ArrayList de String que se llama nombres?:


a. int tmno = nombres.size();
b. int tmno = nombres.length();
c. int tmno = nombres.capacity();
d. int tmno = java.lang.ArrayList.size(nombres);
Pregunta 6: CPara qué ayuda la encapsulación en un diseño del paradigma orientado a objetos?
a. Para reducir el acoplamiento y conducir, por tanto, a un peor diseño.
b. Para reducir el acoplamiento y conducir, por tanto, a un mejor diseño.
c. Para aumentar el acoplamiento y conduce, por tanto, a un mejor diseño.
d. Para cancelar el acoplamiento y conducir, por tanto, a un mejor diseño.

Pregunta 7: CCon qué patrón se corresponde el siguiente diagrama?

[--. 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

a. Método de fabricación (Factory method)


b. Único (Singleton)
c. Constructor (Builder)
d. Prototipo (Prototype)

Pregunta 8: Dado el siguiente código:

class Foo {
int vrx = 5;

public static void main(String args[]) {


Foo obj = new Foo();
obj.metodo(50);
1
void metodo (int vrx) {
vrx = 10;
System.out.print(this.vrx + " " + vrx);
1
1
CCuál será el resultado de ejecutar el método main?
a. 5 10
b. 5 50
c. 1 0 5 0
d. 1 0 5

Pregunta 9: CCómo se puede generar una excepción si no se encuentra el archivo?:


a. throw new NoFileException("Archivo no encontrado");
b. throw new FileException("Archivo no encontrado");
c. throw new NullPointerException("Archivo no encontrado");
d. throw new FileNotFoundException("Archivo no encontrado");

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 1: ¿Qué modificadores serían válidos para la clase LaClaseInterna?

public class LaClaseExterna {

public static void main(String argv[]){ )

/*Modificador AQUI*/ class LaClaseInterna { )


1
a. sólo public
b. sólo static
c. public, private y static
d. sólo private

Pregunta 2: El propósito del patrón Flyweight (peso ligero) es:


a. Usar comportamiento para permitir un gran número de objetos de grano grueso de forma eficiente
b. Usar comportamiento para permitir un gran número de objetos de grano fino de forma eficiente.
c. Usar comportamiento para permitir un gran número de objetos de grano mediano de forma eficiente
d. Usar comportamiento para permitir un gran número de objetos de forma eficiente

Pregunta 3: ¿Cuál es la diferencia entre la cohesión y el acoplamiento?


a. La cohesión describe cuánto se ajusta una unidad de código a una tarea y el acoplamiento describe la
interconectividad de las clases.
b. La cohesión describe interconectividad de las clases y el acoplamiento describe cuánto se ajusta una
unidad de código a una tarea.
c. La cohesión describe el grado de visibilidad de las variables de las clases y el acoplamiento describe la
interconectividad de las clases.
d. La cohesión y el acoplamiento hacen referencia a dos aspectos complementarios de la interconectividad
de las clases.

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:

public class Prueba {


String elemento;
Prueba(String el) {
elemento = el;
1
Prueba( ) {
this("PatataW);
1
String getElemento() {
return(e1emento);
1
public static void main(String args[]) {
Prueba pl = new Prueba("FritaW);
Prueba p2 = new Prueba();
1
1
Después de ejecutar el método main, ¿qué valor tendría la variable elemento para los objetos p l y p2?
a. Frita,Patata
b. Frita,Frita
c. Patata,Patata
d. Frita, null

Pregunta 7: ¿Con qué patrón se corresponde el siguiente diagrama?

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 9: ¿Para qué sirve un bucle?


a. Para ejecutar u n bloque de instrucciones repetidamente, sin tener que escribirlas múltiples veces.
b. Para ejecutar varios bloques de instrucciones repetidamente, sin tener que escribirlas múltiples veces.
C. Para ejecutar instrucciones de una forma repetida.
d. Ninguna de las respuestas anteriores
Pregunta 10: 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.uti1.Lis.t;
public class Animal {
String nombre = "Animal";

public void metodo2(){


System.out.println("Soy un animal");
1
1
public class Zorro extends Animal {
String nombre = "Zorro";

public String nombreAnimal(){


return(nombre);
1
public void metodo2(){
System.out.println("Soy un zorro");
1
public void metodol(List<Animal> newAnimals){
System.out.println( "Animal") ;
1
1
public class ZorrosConejos {
public static void main(String[] args) {
Animal z = new Zorro();
z.metodo2();
1
1
Indica qué ocurrirá al ejecutar el código:
a. Error en tiempo de ejecución.
b. Error de compilación.
c. Se mostrará en consola el mensaje "Soy un zorro".
d. Mostrará en consola el mensaje "Soy un animal"

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.

Pregunta 2: ¿Con qué patrón se corresponde el siguiente diagrama?


.......................

a. Prototipo (Prototype)
b. Método de fabricación (Factory method)
c. Único (Singleton)
d. Constructor (Builder)

Pregunta 3: ¿Qué es la abstracción?:


a. La capacidad de ignorar el nivel superior de un problema para poder centrar la atención en los detalles de
sus distintas partes.
b. La capacidad de ignorar los detalles de distintas partes, para centrar la atención en un nivel superior de un
problema.
c. La capacidad de ignorar los detalles de distintas partes, para centrar la atención en un nivel inferior de un
problema.
d. Ninguna de las anteriores.

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 6: ¿Con qué patrón se corresponde el siguiente diagrama?

a. Método de fabricación (Factory method)


b. Único (Singleton)
c. Constructor (Builder)
d. Prototipo (Prototype)

Pregunta 7: ¿Cuál es el efecto la encapsulación?


a. Una adecuada encapsulación de las clases reduce el acoplamiento y conduce, por tanto, a un peor
diseño.
b. Una mínima encapsulación de las clases reduce el acoplamiento y conduce, por tanto, a un mejor diseño.
c. Una extensa encapsulación de las clases reduce el acoplamiento y conduce, por tanto, a un mejor diseño.
d. Una adecuada encapsulación de las clases reduce el acoplamiento y conduce, por tanto, a un mejor
diseño.

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

Pregunta 9: Dado el siguiente código:


1. class ClasePadre {
2. ClasePadre(int x) {
3. System.out .println ( "Padre") ;
4. 1
5- 1
6. public class ClaseHijo extends ClasePadre {
7. ClaseHijo() {
8. / / Aquí
9. System.out .println( "Hijo") ;
10. 1
11. )

¿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

PARTETEÓRICA- TEST[2,5 PUNTOS]:


Sólo u n a d e las respuestas es válida. Las respuestas correctas se p u n t u a r á n c o n +1,0, m i e n t r a s q u e las
respondidas d e m a n e r a 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ál d e las siguientes afirmaciones acerca d e l p a t r ó n Abstract Factory (Fabrica Abstracta) es
falsa?

a. Promueve la consistencia e n t r e productos.


b. Facilita la inclusión d e nuevos t i p o s d e productos.
c. Facilita e l i n t e r c a m b i o d e familias d e productos.
d. Aísla las clases concretas.

Pregunta 2: Si quisiera controlar e l acceso a u n o b j e t o específico ¿Qué p a t r ó n aplicaría?

a. State
b. Facade
c. Adapter
d. Proxy

Pregunta 3: Dado e l siguiente f r a g m e n t o d e código, ¿Cuál sería la salida p o r pantalla?

public class Test


t
static int a = 3;
static int b;
public static void main(String args[]){
a--;
calculo ( ) ;
System.out.println(a + b + a++);

public static void calculo(){


b = ++a + ++a;)
1

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

Pregunta 4: ¿Cuál d e las siguientes afirmaciones acerca d e l p a t r ó n Chain o f Responsibility es falsa?

a. Desacopla e l o b j e t o q u e envía la petición d e sus receptores.


b. Es necesario especificar explícitamente e l receptor al q u e va dirigida la petición.
c. Simplifica el o b j e t o al n o ser necesario q u e éste conozca la estructura d e la cadena y q u e mantenga una
referencia directa a cada u n o d e sus elementos.
d. Facilita la creación o eliminación d e responsabilidades d e m a n e r a dinámica.
Pregunta 5: ¿Qué modificadores serían válidos para la clase B?

public class A {

public static void main(String argv[]){ ]


/*Modificador AQUI*/ class B { }
1

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.

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 7: ¿Con qué patrón se corresponde el siguiente diagrama?

State cuelga
del contexto
algo

a. Patrón strategy (Estrategia)


b. Patrón Visitor (Visitante)
c. Patron Observer (Observador)
d. Ninguno de los anteriores

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?

a. Patrón decorator (Decorador)


b. Patrón bridge (Puente)
c. Patrón Abstract Factory (Factoría Abstracta)
d. Ninguno de los anteriores

Pregunta 10: Dado el siguiente código, ¿cuál de las afirmaciones es cierta?

class ClaseA {
public int a;
public void metodo10 {
a++;

public class ClaseB extends ClaseA {


public void metodo10 {
a--;
1

public void metodol (int param) {


metodo10 ;
super .metodo1 ( ) ;
a += param;
1

public static void main(String[] args) {


ClaseB obj = new ClaseB();
obj .metodo1 (2);
System.out .print (obj.a);
1
1

a. Lanza una excepción en tiempo de ejecución.


b. Muestra un O en consola.
c. Muestra un 2 en consola.
d. Ninguna de las afirmaciones es cierta
Pregunta 11: Se desea utilizar el patrón State para diseñar una máquina de estados que controle el
funcionamiento del mando a distancia de un televisor. El funcionamiento del mando es muy sencillo, ya que
únicamente permite encender y apagar el televisor o cambiar de canal cuando éste está encendido.

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.

Pregunta 1: ¿Con qué patrón se corresponde el siguiente diagrama?

a. lterator (Iterador)
b. Bridge (Puente)
c. Adapter (Adaptador)
d. Ninguno de los anteriores.

Pregunta 2: ¿A qué tipo pertenecen los siguientes campos?

private Alumno alumno;


private boolean listo;
private String nombre;

a. Alumno, boolean, String.


b. private, private, private.
c. alumno, Boolean, String.
d. alumno, listo, nombre.

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.

Pregunta 6: ¿Con qué patrón se corresponde el siguiente diagrama?

k?:\$ :\&Y$ :.q <::*>:>F.,;

....
* W * * w * Y * * * w * w * w * * Q w * w

a. lterator (Iterador)
b. Interpreter (Intérprete)
c. Mediator (Mediador)
d. Ninguno de los anteriores

Pregunta 7: Indica cual 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. 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:

a. abstract public void foo();


b. static void foo (int i) {}
c. public native double foo();
d. protected void foo (int i){}

Pregunta 9: Indique el resultado de ejecutar el siguiente código que se muestra a continuación:

public class Demo {


public static void suma4 (Integer i) {
int val = i.intValue();
val += 4;
i = new Integer (val);
1

piaZs1i.c static usid main (String args[]) {


Integer i = wew Integer (5);
suma4 (i);
System.ou!:.println (i.intValue ( ) ) ;

a. El programa indicará un fallo en tiempo de compilación


b. El programa imprime por pantalla el valor "5"
c. El programa imprime por pantalla el valor "9"
d. El programa lanzará una excepción en la línea 3 (int val = i.intValue();)

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.

Pregunta 1: ¿Cuál será el resultado de ejecutar el siguiente código?

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

Pregunta 2: ¿Cuál es el objetivo del patrón Strategy (Estratégia)?

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?

a. Desacopla el objeto que envía la petición de sus receptores.


b. Se aplica cuando el comportamiento de un objeto depende de su estado y debe cambiar en tiempo de
ejecución.
c. 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.
d. Facilita la creación o eliminación de responsabilidades de manera dinámica.
Pregunta 5: Dado el siguiente fragmento de código, cuál será la salida por pantalla:

class Padre {
public void metodo() {
System.out.print("PADRE");
1
1
public class Hijo extends Padre {

public void metodo() {


System.out.print("HIJ0");
1
public static void main(String[] args) {
Padre b = new Hijo();
b.metodo();
1

a. PADRE
b. HIJO
c. Error de compilación
d. Error en tiempo de ejecución

Pregunta 6: ¿Con qué patrón se corresponde el siguiente diagrama?

a. Patrón Composite (Compuesto)


b. Patrón Chain of Responsability (Cadena de Responsabilidad)
c. Patrón Facade (Fachada)
d. Ninguno de los anteriores
Pregunta 7: ¿Con qué patrón se corresponde el siguiente diagrama?

a. Patrón abstract Factory (Factoria Abstracta)


b. Patrón Decorator (Decorador)
c. Patrón prototype (Prototipo)
d. Ninguno de los anteriores

Pregunta 8: 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 < ("ABCW).length(); i++) {
System.out.print ("ABCW.substring (i, ("ABCW).length() ) ) ;
1
1
1
a. ABCBCC
b. ABCBC
c. ABCB
d. ABC

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:

1. Permite acceder al contenido de un objeto agregado sin exponer su representación interna.


2. Proporciona una interfaz uniforme para recorrer diferentes estructuras agregadas.
3. Permite la iteración polimórfica.
4. Permite varios recorridos sobre objetos agregados.
Pregunta 11: Se desea utilizar Factory Method en una aplicación de gestión de usuarios para crear tres tipos
de usuarios diferentes. Cada uno de los diferentes tipos de usuarios pueden realizar la misma operación de
diferentes maneras.

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.

Pregunta 1: ¿Con qué patrón se corresponde el siguiente diagrama?

.*<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

Pregunta 3: Dado el siguiente fragmento de código:

float a = 2.3F;
char b = ' r ' ;
int c = 99;

System.out.println(c + a > 12);


System.out.println(c >= 8 & & b != 'r');
System.out.println((b == ' c ' ) 1 1 (c + a == 12));

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.

Pregunta 6: ¿Con qué patrón se corresponde el siguiente diagrama?

................................................. :......

....................
>'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();

¿Cuál sería el resultado de compilar y/o ejecutar el código?


a. El código convertiría la cadena nombre a mayúsculas.
b. El código generaría un error de ejecución.
c. El código generaría un error de compilación.
d. Ninguna de las anteriores.

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.

Pregunta 9: lndique el resultado de ejecutar el siguiente código:

public class test {


public static void menos5 (Integer i) {
int val = i.intValue();
val -= 5;
i = new Integer (val);
1
public static void main (String args[]) {
Integer i = new Integer (5);
menos5(i);
System.out.println (i.intValue ( ) ) ;
1
1
a. El programa lanzará una excepción en la Iínea 3
b. El programa indicará un fallo en tiempo de compilación
c. El programa imprime por pantalla el valor "O"
d. El programa imprime por pantalla el valor "5"
Pregunta 10:

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.

Pregunta 1: CCon qué patrón se corresponde el siguiente diagrama?

a. Patrón state (Estado)


b. Patrón strategy (Estrategia)
c. Patrón Visitor (Visitante)
d. Ninguno de los anteriores

Pregunta 2: CCon qué patrón se corresponde el siguiente diagrama?


a. Patrón decorator (Decorador)
b. Patrón bridge (Puente)
c. Patrón singleton (Único)
d. Ninguno de los anteriores
Pregunta 3 : CCuál es el resultado de ejecutar el siguiente código?

1. public class ClaseA {


2. private int miembrol = 15;
3. boolean miembro2 = true;
4.
5. public static void main (String [ ] args) {
6. System.out .println (new ClaseB ( ) ) ;
7. 1
8. 1
9.
10. class ClaseB extends ClaseA {
11. public String toString() {
12. return miembro1 + " " + miembro2;
13. 1
14. 1

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

Pregunta 4: CCual es el resultado de ejecutar el siguiente código?

1. public class ClaseA {


2. private Integer x;
3.
4. public boolean compare (int y) {
5. return x == y;
6. 1
7.
8. public static void main (String [ ] args) {
9. ClaseA obj = new ClaseA ( ) ;
10. if (obj.compare(21)) {
11. System.out .println ("igual");
12. 1 else {
13. System.out .println ("diferente") ;
14. 1
15. 1
16. 1

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

Pregunta 5: Indica cuál de las siguientes afirmaciones es correcta:

a. Los campos también son conocidos como variables de estado.


b. El alcance de una variable define la sección de código desde donde la variable puede ser declarada.
c. Los constructores permiten que cada objeto sea preparado adecuadamente cuando es creado.
d. El tiempo de vida de una variable describe el número de veces que es utilizada en un método.
Pregunta 6: (1x207): CEn qué casos debería aplicarse el patrón Chain of Responsability (Cadena de
Responsabilidad)?

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 identidad de un objeto.

Las respuestas correctas son:


a. 1 , 2 , 4 y 5
b. 1, 2, 3 y 5.
c. 1, 2, 3, 4 y 5.
d. Ninguno de los anteriores

Pregunta 7: CCon qué patrón se corresponde el siguiente diagrama?

rriievR~~:G%2&eA

(1
tt?i-sn%e~1brs?.,n?etod04

9)
!X92060~
rnetad~2.i,]
:GizseC

Patrón abstract Factory (Factoria Abstracta)


Patrón builder (Constructor)
Patrón prototype (Prototipo)
Ninguno de los anteriores

Pregunta 8: CCon qué patrón se corresponde el siguiente diagrama?


a. Patrón object adapter (Adaptador de Objetos)
b. Patrón bridge (Puente)
c. Patrón Flyweight (Peso Ligero)
d. Ninguno de los anteriores

Pregunta 9: CCon qué patrón se corresponde el siguiente diagrama?

a. Patrón Composite (Compuesto)


b. Patrón Decorator (Decorador)
c. Patrón Facade (Fachada)
d. Ninguno de los anteriores
Pregunta 10: CCuál es el resultado de ejecutar el siguiente código?

3. String cadena = "holazcomozestasztu";


4. String [ ] v = cadena.split ("z");
5. System.out .println (v.length) ;

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 3: Si la clase E s t u d i a n t e extiende la clase abstracta P e r s o n a que tiene un método abstracto


edad, Cqué podemos afirmar?
a. Que no se pueden crear instancias de Persona.
b. Que necesariamente Estudiante es abstracta.
c. Que si Estudiante implementa el método edad, entonces seguro que Estudiante no es abstracta.
d. Que puedo crear instancias de Persona.

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 5: Dada la siguiente jerarquía de herencia:

lndica cuál de las siguientes asignaciones es correcta:


a. Patata p l = new Verdura()
b. Verdura v l = new apio();
c. Apio a l = new Verdura()
d. Todas las asignaciones anteriores son correctas.
Pregunta 6: Sobre el patrón Adaptador (Adapter), según la bibliografía básica de la asignatura, se puede decir:
a. Los clientes llaman a operaciones de una instancia de Adaptador, que a su vez, llama a operaciones de
Adaptable, que son las que satisfacen la petición.
b. Los clientes llaman a operaciones de una instancia de Adaptable, que a su vez, llama a operaciones de
Adaptador, que son las que satisfacen la petición.
c. Los clientes llaman a operaciones de una instancia de Adaptador que satisface la petición.
d. Los clientes llaman a operaciones de una instancia de Adaptable que satisface la petición.

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 8: CCómo se pude invocar un método en el IDE BlueJ?


a. Haciendo clic con el botón derecho del ratón en una clase, y seleccionando en el menú emergente el
método correspondiente.
b. Haciendo clic con el botón derecho del ratón en un objeto o clase indistintamente, y seleccionando en el
menú emergente el método correspondiente.
c. Haciendo clic con el botón derecho del ratón en un objeto, y seleccionando en el menú emergente el
método correspondiente.
d. Ninguna de las anteriores.

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?:

Al: Fábrica concreta


A2: M é t o d o s d e fabricación
A3: Fábrica abstracta
A4: Constructores d e fabricación
A5: Producto abstracto

a- A3, A4, A5
b- Al, A2, A3
C- Al, A3, A5
d- A2, A3, A4

Pregunta 2: ¿Qué p a t r ó n d e diseño es el m á s a p r o p i a d o c u a n d o h a y q u e t o m a r una decisión a la hora d e


instanciar una clase?:

a- M é t o d o d e fabricación
b- Constructor abstracto
c- Constructor d e fabricación
d- Fábrica abstracta

Pregunta 3: Dado e l siguiente código:

1 //Una agenda sencilla


2 class Contacto {
3 private String nombre; private String telefono;
4 public Contacto (String n, String t) {
5 nombre = n; telefono = t;
6 }
7 public String getNombre() {
8 return(nombre);
9 }
10 >
11 public class Agenda {
12 private ArrayList<Contacto> contactos = new ArrayList<Contacto>();
13
14 public Agenda ( ) {
15 contactos.add(new Contacto ("Pepe","1234"));
16 contactos.add(new Contacto ("Juan","1236"));
17 }
18 public void borrarContacto(String nombre) {
19 for (Contacto p: contactos) {
2O if (p.getNombre().equals(nombre)) {
21 contactos.remove(p);
22 System.out.println(“Contacto borrado");
23 }
24 }
25 }
26 }
¿Cuál es el resultado de compilar / llamar el método borrarContacto("Juan")?

a- Se produce un error de compilación en la Iínea 12.


b- Se produce un error de compilación en la Iínea 21.
c- Se produce un aviso(warning) durante la ejecución en la Iínea 21
d- Se imprime por pantalla el mensaje: Contacto borrado

Pregunta 4: El propósito del patrón Flyweight (peso ligero) es:

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:

Al: Clase concreta de construido


A2: lnterfaz del constructor
A3: lnterfaz del builder
A4: lnterfaz del director
A5: Clase concreta de constructor

a- Al, A2, A5
b- Al, A3, A5
C- A2, A4, A5
d- Al, A3, A4

Pregunta 6: Si simplificamos el ejemplo PhotoPost del libro de la asignatura de la siguiente manera:

1 public class Post {


2 private String usuario;
3
4 public Post(){}
5 public Post(String autor) {
6 usuario = autor;
7 }
8 }
9 class PhotoPost extends Post {
1O private String file;
11
12 public PhotoPost(String autor, String file) {
13 super(autor);
14 XXX
15 }
16 }

¿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 8: El autoboxing se lleva a cabo automáticamente cada vez que:

a- se quiere pasar el tipo primitivo de un método a otro.


b- se quiere un valor de tipo primitivo en un contexto el el que no se requiere un tipo envoltorio.
c- se utiliza un valor de tipo primitivo en un contexto el el que se requiere un tipo envoltorio.
d- Ninguna de las respuestas anteriores.

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):

a- Hacer más fácil restringir los componentes de un compuesto.


b- Poder definir jerarquías de clases primitivos y compuestos.
c- Facilita añadir nuevos tipos de componentes.
d- Las instancias de una clase están accesibles a un solo cliente.

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)

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. Permite un número variable de instancias.


b. Permite el refinamiento de operaciones y la representación.
c. Evita acoplar el emisor de una petición a su receptor.
d. Oculta detalles de implementación a los clientes.

Pregunta 2: ¿Cuál es el objetivo del patrón Strategy?

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):

a. Un sujeto necesita saber la clase concreta de su observador.


b. Un observador y sujeto pueden pertenecer a diferentes capas de abstracción en un programa.
c. Un sujeto no necesita saber la clase concreta de su observador.
d. Se puede añadir un observador sin modificar el sujeto correspondiente.

Pregunta 5: ¿Cuáles son las consecuencias de utilizar el patrón Factory Method (Método Factoría)?:

a. Facilita la instanciación de u n único objeto.


b. Permite hacer familias de productos intercambiables.
c. Se desacopla el código del cliente de las clases específicas de la aplicación.
d. Permite observar los cambios de estado en otros objetos de la aplicación.
Pregunta 6: ¿Cuál de las siguientes afirmaciones acerca del patrón Mediator (Mediador) es falsa?

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.

Pregunta 8: Dado este fragmento de código:

public class Test {


String n;
Test(String i) {
n = i;
}
Test() {
this.super("A");
}
public static void main(String args[]) {
Test pl = new Test("BU);
Test p2 = new Test();
}
}
Después de ejecutar el método main, ¿qué valor tendrá la variable n para los objetos p l y p2?

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?

public class Test


{
public static void main (String [ ] args) {
for (int i=O; i < ("TRESU).length(); i++) {
System.out.print ("123456789".substring (O, i+l) ) ; }
}
}

Pregunta 10: Dado el siguiente fragmento de código en Java. ¿Cuál de las siguientes afirmaciones es correcta?

public class Test {

static int valor=lO;


public int getValor() {return valor;}
public static void main (String[ ] Args){
System.out.println ("VALOR=" + this.getValor());
}
}

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.

Las respuestas correctas son:


a. 1,3,4
b. 1,2,4
c. 2,3,4
d. 1,2,3,4

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

Pregunta 8: Si el botón Plus de una calculadora se define con el siguiente código:

plusButton = new JButton("Plus");


plusButton.addActionListener(XXX {
public void actionPerformed(ActionEvent e) { suma(); }
1);
toolbar.add(plusButton);

¿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 9: El participante Estrategia del patrón Strategy:


a. Declara una interfaz común a todos los algoritmos permitidos.
b. Configura un objeto Estrategiaconcreta.
c. lmplementa el algoritmo EstrategiaAbstracta.
d. Ninguna de las anteriores afirmaciones es correcta.

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?:

a. Es fácil dar cabida a nuevos tipos de productos.


b. Facilita el intercambio de familias de productos.
c. Promueve la consistencia entre productos.
d. Aísla a los clientes de las clases de implementación.

Pregunta 2: Del patrón Facade (Fachada) podemos decir que:


a. Permite un gran número de objetos de grano fino de forma eficiente.
b. Define un objeto que encapsula cómo interactúan una serie de objetos.
c. Permite un comportamiento cooperativo que n o es proporcionado por los objetos Colegas y el
protocolo es multidireccional.
d. Proporciona una interfaz unificada para un conjunto de interfaces de un subsistema.

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 6 0: ¿Cuál es el resultado de compilar y ejecutar el siguiente código?

public interface Padre


{
public void metodoA() {
this .metodoB ( ) ;
public void metodoB();

public class Hijo implements Padre


{
public void metodoB() {
System.out.print("Método B de Hijo. ");
1

public class Test {


public static void main(String[] args) {
Padre h=new Hijo ( ) ;
h.metodoA() ;
1

a. Muestra en consola: "Método B de Hijo. "


b. Error de compilación. Una interfaz debe declarar todos sus métodos pero no implementarlos.
c. Error de compilación. El objeto h n o puede declararse de tipo Padre.
d. Error de compilación. Hay que sobreescribir el metodoA() en la clase Hijo.

Pregunta 7: ¿En que casos debería aplicarse el patrón Decorator (Decorador)?


1. Para añadir objetos individuales de forma dinámica y transparente.
2. Para responsabilidades que pueden ser retiradas.
3. Se quiere crear una clase reutilizable que coopere con clases n o relacionadas o que no han sido
previstas.
4. Cuando la extensión mediante la herencia no es viable.

Las respuestas correctas son


a. l y 2 .
b. l y 3 .
c. 1,2 y 4.
d. 1, 2, 3 y 4.

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.

Pregunta 9: ¿Cuál es el resultado de compilar y ejecutar el siguiente código?

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") ;

for (String e1emento:mapa.keySet ( ) ) {


mapa. remove (elemento);
System.out.print("Elimino: "+elemento+". ");
a. Muestra en consola: "Elimino A. "
b. Muestra en consola: "Elimino: A." y una excepción del tipo ConcurrentModificationException
c. Muestra en consola: "Elimino: A. Elimino: B. Elimino: C."
d. Muestra en consola: "Elimino: valorA. Elimino: valorB. Elimino: valorc."

Pregunta 10: ¿Cuál es el resultado de compilar y ejecutar el siguiente código?

public class Test

{
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 2: Del patrón Command (Orden) podemos decir que:


a. Evita acoplar el emisor de una petición a su receptor.
b. Define una representación de su gramática junto con un intérprete que usa dicha representación para
interpretar sentencias del lenguaje.
c. Define un objeto que encapsula cómo interactúan una serie de objetos.
d. Encapsula una petición en un objeto, permitiendo así parametrizar a los clientes con diferentes
peticiones.

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.

Pregunta 5: Del patrón State (Estado) podemos decir que:


a. Permite que un objeto modifique su comportamiento cada vez que cambie su estado interno.
b. Define en una operación el esqueleto de un algoritmo, delegando en las subclases alguno de sus
pasos.
c. Representa y externaliza el estado interno de un objeto sin violar la encapsulación, de forma que éste
puede volver a dicho estado más tarde.
d. Define un objeto que encapsula cómo interactúan una serie de objetos.
Pregunta 6:Dado el siguiente código, ¿cuál de las afirmaciones es cierta?

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.

Las respuestas correctas son


a. l y 2 .
b. 1 , 2 y 3 .
Anulada
c. 1, 2, 3 y 4.
d. 1, 2, 3, 4 y 5.

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?

public class Test {

static int a=5;


public static int getA() {return a;}

public static void main (String[ ] Args)


System.out.println ("a=" + this.getA());
}
}

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 1:¿Cómo se puede generar una excepción si no se encuentra el archivo?:


a. throw new FileNotFoundException("Archivo no encontrado");
b. throw new NoFileException("Archivo no encontrado");
c. throw new FileException("Archivo no encontrado");
d. throw new NullPointerException("Archivo no encontrado");

Pregunta 2: De los participantes en el patrón Builder (Constructor), el papel del ConstructorConcreto es


(indica la respuesta incorrecta):
a. lmplementar la interfaz Constructor.
b. Definir la representación a crear.
c. Proporcionar una interfaz para devolver el producto.
d. Extender la clase Director.

Pregunta 3: El patrón Singleton (Único) proporciona (indica la respuesta incorrecta):


a. un acceso controlado a la única instancia.
b. un espacio de nombres constante.
c. un número variable de instancias.
d. el refinamiento de operaciones.

Pregunta 4: Se usa el patrón Bridge (Puente) cuando:


a. se quiere permitir un enlace permanente entre una abstracción y su implementación.
b. tanto las abstracciones como sus implementaciones no deben ser extensibles mediante subclases.
c. se quiere compartir una implementación entre varios objetos.
d. los cambios en la implementación de una abstracción deben tener impacto en los clientes.

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.

Las respuestas correctas son:


a. l y 2 .
b. l y 3 .
c. 2 y 3
d. 1 , 2 y 3 .
Pregunta 7: 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 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 9: Dado el siguiente fragmento de código en Java:


int m, n;
public void f() {
m = (m - 2) % n;
System.out.print(m + " ");
1
public void g() {
int i = O; m = O; n = 8;
while(i++<n) {
f0;
1
1
¿Cuál es el resultado de ejecutar g()?
a. -2 -4 -6 O -2 -4 -6 O
b. -2 -4 -6 -2 -4 -6 -2 -4
C. O -2 -4 -6 O -2 -4 -6
d. -2 -4 -6 O -2 -4 -6 O -2 -4

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.

6 preguntas de patrones del libro y 4 de Java:

Pregunta 1: Si la primera parte de una clase TicketMachine tuviera la siguiente estructura:

public class TicketMachine {


private String nombre = "UNED";
private String registro = "28040";

public TicketMachine(String nombre) {


this.nombre = nombre;
}

public TicketMachine(String registro) {


this.registro = registro;
}

public static void main (String [ ] args){


String nombre = "maquinal";
TicketMachine tm = new TicketMachine(n0mbre);
}
}
¿Qué pasaría al ejecutar el método main?
a. tm.nombre tendría el valor de "maquinal".
b. El programa daría un error de compilación.
c. tm.registro tendría el valor de "maquinal".
d. El programa daría un error de ejecución.

Pregunta 2: Indique cual de las siguientes afirmaciones es FALSA:


a) El patrón Observer define una relación entre objetos uno-a-muchos.
b) Los objetos Observer se encuentran muy poco acoplados.
c) Los objetos Observer actualizan los objetos Observado utilizando una interfaz común.
d) Java tiene varias implementaciones de este patrón de entre las que podemos destacar
java.util.0bservable.

Pregunta 3: Los participantes en el patrón Prototipo son (indique la respuesta FALSA):


a) Prototipo
b) Cliente
c) Prototipo Concreto
d) Prototipo Abstracto

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.

Pregunta 6: Dada la siguiente jerarquía de clases:

7 Forma

i Cuadrado

¿Cuáles de las siguientes asignaciones serían legales?:


1. Forma f l = new Cuadrado();
2. Forma f2 = new Cubo();
3. Cubo c l = new Cuadrado();
4. Cuadrado c u l = new Cubo();

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 8: ¿Qué es un banco de pruebas?:


a. Uno o más objetos que se emplean para encontrar errores sintácticos en el código.
b. Uno o más objetos que se emplean en más de una prueba.
c. Uno o más objetos que se emplean en una sola prueba.
d. Uno o más objetos que se emplean durante la depuración de un programa.

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.

6 preguntas de patrones del libro y 4 de Java:

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;

public class Animal {


String nombre = "Animal";

public void metodo2(){


System.out.println("Soy un animal");
}
}
public class Zorro extends Animal {
String nombre = "Zorro";

public String nombreAnimal(){


return(nombre);
}

public void metodo2(){


System.out.println("Soy un zorro");
}

public void metodol(List<Animal> newAnimals){

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. La signatura es el encabezado de un método y proporciona la información necesaria para invocarlo.


b. La signatura está formada por los parámetros de un método y proporciona la información necesaria para
invocarlo.
c. La signatura es el nombre de un método y puede tener parámetros para proporcionar información adicional
para realizar una tarea.
d. La signatura es el encabezado de un método y puede tener parámetros para proporcionar información adicional
para realizar una tarea.

Pregunta 5: Del patrón Chain of Responsability (Cadena de Responsabilidad) podemos afirmar:


1. Es utilizado por varias bibliotecas de clases para manejar los eventos de usuario.
2. Se suele aplicar conjuntamente con el patrón Composite.
3. Se suele utilizar conjuntamente con el patrón Iterator.
4. Es utilizado para coordinar actualizaciones complejas.

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:

1. Permite acceder al contenido de un objeto agregado sin exponer su representación interna.


2. Proporciona una interfaz uniforme para recorrer diferentes estructuras agregadas.
3. Permite la iteración polimórfica.
4. Permite varios recorridos sobre objetos agregados.

Pregunta 7: Dada la siguiente definición de clase:

public class Test

private int valor;

public Test(int n)

valor=n ;
}

public int calcular()

int resultado=l;
int numero=valor;

if (valor>=l)

do
resultado*=numero;
numero-- ;
}while(numero>=l);
return resultado;
}
else{
numero-- ;
}
return resultado;
}

public static void main (String [ ] args){

Test t=new Test(-3);


int v=t.calcular();
System.out.println(v);

}
}
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.

Pregunta 9: Indica cuál de las siguientes afirmaciones es correcta

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:

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.

Las condiciones correctas son:


a. 1,2,4
b. 2,3,4
c. 1,3,4
d. 1,2,3,4

Pregunta 2: A una interfaz Swing se puede añadir un botón de la siguiente forma:

miBoton = new JButton("Enviar");


miBoton.addActionListener(XXX {
public void actionPerformed(ActionEvent e) { enviar(); }
1);
tool bar.add(miBoton);

¿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 4: Declarar un campo o método de Java como protegido permite:

a. Acceder directamente a él desde las subclases.


b. Acceder directamente a él desde cualquiera de las clases.
c. Acceder directamente a él solamente desde la clase en que se define.
d. Acceder directamente a él desde las clases padres.

Pregunta 5: En comparación de un Adapter (Adaptador) y un Bridge (Puente), se puede decir que (indica la respuesta
falsa):

a. Ambos patrones promueven la flexibilidad al proporcionar un nivel de indirección a otro objeto.


b. Ambos patrones implican reenviar peticiones a un objeto desde una interfaz distinta.
c. El Adapter resuelve incompatibilidades entre interfaces y el Bridge une una implementación con sus
implementaciones.
d. El Bridge y el Adapter se usan en el mismo punto del ciclo de vida de software.

Pregunta 6: Algunas de las técnicas para la implementación del patrón Abstract Factory (Fábrica Abstracta) son (indica la
respuesta falsa):

a. Definir fábricas extensibles


b. Fábricas únicas (solamente hace falta una instancia de la Fabricaconcreta)
c. Fábrica múltiples (hace falta varias instancias de la Fabricaconcreta)
d. Crear los productos

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;

public class OrganizadorMusica {

ArrayList<String> canciones = new ArrayList<String>();


public static void main(String[] args) {
OrganizadorMusica mo = new OrganizadorMusica();
mo.canciones.add("AI amanecer");
System.out.println("CExiste la canción?: " + mo.existe("Al amanecer"));
1
public boolean existe(String cancion) {
Iterator<String> i t = canciones.iterator();
XXX
String titulo = it.next();
if(titulo.equals(cancion))
return(true);
1
return(fa1se);
1
1
a. while (it canciones()) {
b. while (it.next()) {
c. while (it.hasNext()) {
d. while (it.getNext()) {

Pregunta 8: Los fines del patrón lterator (Iterador) son (indica la respuesta falsa):

a. Hacer visible los campos de un objeto agregado.


b. Permitir varios recorridos sobre objetos agregados.
c. Proporcionar una interfaz uniforme para recorrer diferentes estructuras agregadas.
d. Acceder al contenido de un objeto agregado sin exponer su representación interna.

Pregunta 9: ¿Para qué sirve la encapsulación en un lenguaje de programación como Java?

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:

a. Se configura con un objeto Estrategiaconcreta.


b. lmplementa el algoritmo subyacente a la Estrategia.
c. Declara una interfaz común a todos los algoritmos permitidos.
d. Ninguno de las anteriores.

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.

Las condiciones correctas son:


a. 1,2,4
b. 2,3,4
c. 1,3,4
d. 1,2,3,4

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";

abstract public void metodol(List<Animal> newAnimals);

public void metodo2(){


System.out.println("Soy un animal");
}
}

class Zorro extends Animal {


String nombre = "Zorro";

public String nombreAnimal(){


return(nombre);
}

public void metodol(List<Animal> newAnimals){

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 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

Pregunta 4: Indicar cuales de las siguientes afirmaciones son correctas:

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

Pregunta 5: En comparación, de los patrones Composite, Decorator y Proxy se puede afirmar:

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.

Pregunta 7: Dada la siguiente definición de clase:

public class Test


1
private int valor;

public Test(int n)
1
valor=n ;
}

public int calcular()


1
int resultado=l;
int numero=valor;

if (valor>=l)

do
resultado*=numero;
numero-- ;
}while(numero>=l);
return resultado;
}
else{
return 1;
}

public static void main (String [ ] args){

Test t=new Test(3);


int v=t.calcular();
System.out.println(v);

El resultado d e su ejecución sería:

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 9: Cual d e las siguientes afirmaciones es cierta:

a. U n m é t o d o cohesionado es responsable d e m á s d e una tarea a la vez.


b. La refactorización es la actividad consistente e n reestructurar u n diseño existente para m a n t e n e r u n b u e n
diseño d e clases c u a n d o se modifica o amplía la aplicación.
c. El acoplamiento f u e r t e implica clases m u y independientes q u e se comunican c o n otras clases m e d i a n t e
interfaces compactas y b i e n definidas.
d. El t é r m i n o cohesión es relevante cuando hablamos d e métodos, p e r o n o cuando hablamos d e clases.

Pregunta 10: Respecto al p a t r ó n Visitor (Visitante), cuales d e las siguientes afirmaciones son correctas:

1. El visitante facilita añadir nuevas operaciones.


2. Resulta sencillo añadir nuevas clases d e Elemento Concreto.
3. U n visitante agrupa operaciones relacionadas y separa las q u e n o l o están.
4. El participante Elemento (Nodo) define una operación Aceptar q u e t o m a u n visitante c o m o argumento.
Pregunta 11: Se desea diseñar un traductor de idiomas, más concretamente de inglés, alemán y francés a español. Este
traductor recibe como entrada una frase y el idioma en el que ésta está escrita y genera como salida un mensaje que
indica el idioma de origen y el idioma destino de la traducción. Por ejemplo, si la frase de entrada está escrita en inglés,
debería mostrar algo similar a "idioma de origen ingles - idioma de destino español". Se pide aplicar el patrón Chain of
Responsability (Cadena de Responsabilidad) de modo que se encadenen los traductores de inglés, alemán y francés en
este orden y que en el caso en el que el texto origen no esté escrito en ninguno de estos idiomas, el sistema muestre un
mensaje de error.

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?

a) Promueve la consistencia entre productos.


b) Facilita la inclusión de nuevos tipos de productos.
c) Facilita el intercambio de familias de productos.
d) Aísla las clases concretas.

Preeunta 2: ¿Cuál de las siguientes afirmaciones acerca un adaptador de clases es falsa?


a) No se necesita ningún puntero de indirección adicional para obtener el objeto adaptado.
b) Permite que Adaptador redefina parte del comportamiento de Adaptable.
c) Es válido para adaptar una clase y todas sus subclases.
d) Adaptador es una subclase de Adaptable.

Preeunta 3: ¿Cuándo deberíamos aplicar el patrón Prototype (Prototipo)?


a) Para almacenar el estado.
b) Para coordinar componentes GUI relacionados.
c) Cuando una clase tiene múltiples instancias que son controladas de manera idéntica.
d) Cuando un sistema debe crear objetos de diferentes tipos dentro de una jerarquía de clases compleja.

Preeunta 4: Si quisiera asignar responsabilidades adicionales a un objeto dinámicamente, proporcionando una


alternativa a la herencia ¿Qué patrón aplicaría?
a) Abstract Factory
b) Factory Method
c) Decorator
d) Facade

Preeunta 5: Si quisiera controlar el acceso a un objeto específico ¿Qué patrón aplicaría?


a) State
b) Proxy
c) Facade
d) Adapter

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?

public class MiClase


{
static int v a r l = 3;
static int v a r 2 ;
public static void m a i n ( S t r i n g a r g s [ l ) {
varl--;
c a l c u l o ( );
System. o u t . p r i n t l n ( v a r l + var2 + v a r l + + );
public static void calculo() {
var2 = ++varl + ttvarl; 1

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

public class MiClase implements MiInterfaz


i
public static void main(String args[l) {

MiClase obj = new MiClase ( ) ;

if (obj instanceof MiInterfaz) {


System.out.println("Soy un interfaz");
1 else {
System.out.println("No soy un interfaz");}

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"?

public class MiClase


I
public static void main(String args[l) {

String varl=new String("coche");


String var2=new String("coche");

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 4: El propósito del patrón Flyweight (peso ligero) es:


a) Usar comportamiento para permitir un gran número de objetos de forma eficiente
b) Usar comportamiento para permitir un gran número de objetos de grano fino de forma eficiente.
c) Usar comportamiento para permitir un gran número de objetos de grano mediano de forma eficiente
d) Usar comportamiento para permitir un gran número de objetos de grano grueso de forma eficiente

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 6: El propósito del patrón State (estado) es:


a) Permitir que un objeto modifique su comportamiento cada vez que cambie su estado interno.
b) Permitir que un objeto modifique su estructura cada vez que cambie su estado interno.
c) Permitir que un objeto modifique su comportamiento cada vez que cambie su estructura.
d) Permitir que un objeto modifique su estructura cada vez que cambie su comportamiento.

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

a. while((res !='S1) 1 1 (res !='N1) 1 1 (res !='S') 1 1 (res !='nl));


b. while((res =='S1)&& (res =='N1)&& (res =='S')&& (res =='nl));
c. while((res !='S1)&& (res !='N1)&& (res !='S')&& (res !='nl));
d. while((res =='S1) 1 1 (res =='N1) 1 1 (res =='S') 1 1 (res =='nl));

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()?

JMenultem elAbrir = new JMenultem("Abrir");


elAbrir.addActionListener(new ActionListener() {
XXX
1);
a. public void actionPerformed(ActionEvent e) {abrirArchivo();}
b. public void action(ActionEvent e) {abrirArchivo();}
c. public void actionEvent() {abrirArchivo();}
d. public void listen(ActionEvent e) {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.

Pregunta 1: ¿Cuál es el objetivo del patrón Strategy?

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) Se aplica cuando el comportamiento de un objeto depende de su estado y debe cambiar en tiempo de


ejecución.
b) Localiza el comportamiento dependiente del estado y divide dicho comportamiento en diferentes estados.
c) Los objetos estado nunca pueden compartirse.
d) Hace explícitas las transiciones entre estados.

Preeunta 3: ¿En que ocasiones n o es recomendable aplicar el patrón Flyweight?

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?

a) Desacopla el objeto que envía la petición de sus receptores.


b) 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.
c) Facilita la creación o eliminación de responsabilidades de manera dinámica.
d) Es necesario especificar explícitamente el receptor al que va dirigida la petición.

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 ( ) {

public class Sup extends Base{


public static void main(String argv[]){
Sup S= new Sup ( ) ;
//POSICION 1

1
public void derived ( )
{
//POSICION 3

a) Justo después de la Iínea //POSICION 1, escribiendo Base(l0).


b) Justo después de la Iínea //POSICION 1, escribiendo super(l0).
c) Justo después de la Iínea //POSICION 2, escribiendo super(l0).
d) Justo después de la Iínea //POSICION 3, escribiendo super(l0).

Pregunta 8: ¿Qué modificadores serían válidos para la clase MiClaseInterna?

public class MiClase {

public static void main(String argv[]){ }


/*Modificador AQUI*/ class MiClaseInterna { }

a) sólo public
b) sólo private
c) sólo static
d) public, private y static

Pregunta 9: Dado el siguiente código, ¿cuál de las afirmaciones es cierta?

Número de Línea Código

public class ClaseA extends ClaseB {


public static void main(String[] args) {
Short cuenta = 7;
System.out .println (contar (cuenta, 6) ) ;
J

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

a) return new ArrayList<ClaseC>();


b) return new ArrayList<Object>();
c) return new ArrayList<ClaseA>();
d) Ninguna de las anteriores

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 1: Usamos el patrón Builder (Constructor) cuando:


a) Queremos permitir diferentes representaciones del objeto que está siendo construido.
b) No queremos permitir diferentes representaciones del objeto que está siendo construido.
c) Queremos usar un algoritmo de construcción que no sea independiente de las partes del objeto que está siendo
construido.
d) No queremos aislar el código de construcción y representación.

Preeunta 2: El patrón Singleton (Único) garantiza que:


a) Las instancias de una clase están accesibles a un solo cliente.
b) Una clase sólo tenga una instancia y proporciona un punto de acceso global a ella.
c) No se puede generar subclases del patrón
d) Una clase tenga más que una instancia.

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

Pregunta 8: Dado este fragmento de código:


import java.util.*;
public class Foo {
String[] letras = {"a","b","c"};
List<String> letraslist;

FooO
letraslist = ???
1
1

¿Cómo se puede convertir el arreglo (array) letras en la lista letraslist?


a. letraslist = new List<String>(letras);
b. letraslist = new Arrays(1etras);
c. letraslist = Arrays.asList(letras);
d. letraslist = Arrays.newList(letras);

Pregunta 9: ¿Cuál es la diferencia entre el acoplamiento y la cohesión?


a. El acoplamiento describe cuánto se ajusta una unidad de código a una tarea y la cohesión describe
interconectividad de las clases.
b. El acoplamiento describe la interconectividad de las clases y la cohesión describe cuánto se ajusta una unidad
de código a una tarea.
c. El acoplamiento describe la interconectividad de las clases y la cohesión describe el grado de visibilidad de las
variables de las clases.
d. El acoplamiento y la cohesión hacen referencia a dos aspectos complementarios de la interconectividad de las
clases.

Pregunta 10: ¿Cómo se hace la depuración en BlueJ?


a. A través del menú de herramientas.
b. Haciendo clic con el botón derecho sobre un objeto y seleccionando la entrada Debugger.
c. A través del menú Project.
d. Incorporando un punto de ruptura en el código fuente y ejecutando el código correspondiente.
Preeunta 11: Se podría usar el patrón Compound (Compuesto) para un programa que saca información en la pantalla
del ordenador y en la impresora 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.

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 5: ¿Cuáles son las consecuencias de aplicar el patrón Adapter (Adaptador)?


a) Mejora la eficiencia del sistema
b) Facilita la implementación del código del cliente al interactuar con un interfaz preestablecido.
c) Se debe modificar la clase adaptada.
d) Establece un mecanismo flexible para instanciar un objeto en comparación con una instanciación clásica de
Java.

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:

public class Prueba {


public static void main(String[] args) {
do {
System.out.print("dentro do");
} while (false);
while (false) {
System.out.print("dentro while");
1
System.out.print("fuera");
1
1

¿Cual sera el resultado de compilar y ejecutar el código?


a) Dentro dofuera
b) fuera
c) Error de compilación
d) Bucle infinito

Preeunta 8: Dado el siguiente código:

public static void main(String[] args) {


boolean flag = false;
int x = 0;
do {
x++;
} while (flag=!flag);
System.out.println(x);
1

¿Cuál será el resultado de compilar y ejecutar el código?


a) 0
b) 1
c) 2
d) Bucle infinito

Preeunta 9: Dado el siguiente código:

import java.util.HashSet; class Foo {


import java.util.Set; Integer code;
public class Test{ Foo(lnteger c) {
public static void main(String[] args) { code = c;
Set<Foo> myFooSet = new HashSet<Foo>(); 1
myFooSet.add(new Foo(2)); public boolean equals(Foo f) {
myFooSet.add(new Foo(1)); return false;
myFooSet.add(new Foo(3)); 1
myFooSet.add(new Foo(3)); public boolean equals(0bject f) {
myFooSet.add(new Foo(2)); return true;
System.out.print(myFooSet.size()); 1
1 public int hashCode() {
1 return 17;
1
1
¿Cuál será el resultado de compilar y ejecutar el código?
a) 1
b) 3
c) 5
d) Error de compilacion
Preeunta 1Q: Dado el siguiente código:

class Base {
public void metodo(fina1 int x) {
System.out.print("Base");
1
1

public class Derivado extends Base {

public void metodo(int x) {


System.out.print("Derivado");
1

public static void main(String[] args) {


Base b = new Derivado();
b.metodo(3);
1

¿Cuál será el resultado de compilar y ejecutar el código?


a) Compilará correctamente y mostrará el mensaje "Derivado".
b) Compilará correctamente y mostrará el mensaje "Base".
c) Error de compilación.
d) Error en tiempo de ejecución.

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.

Responda de manera razonada a los siguientes apartados:

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 2: Usamos el patrón Prototype (protipo) cuando (indica la respuesta falsa):


a) Un sistema deba ser independiente de cómo se crean y se componen sus productos.
b) Las clases a instanciar no sean específicas en tiempo de ejecución.
c) Se quiera evitar construir una jerarquía de clases de fábricas paralela a la jerarquía de clases de sus productos.
d) Las instancias de una clase puedan tener uno de entre sólo unos pocos estados diferentes.

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)

Preeunta 5: ¿Qué patrón esta implementado en el siguiente programa?:


class A { public A(int x) {} }
class B { public B(long x) {} }
class C { public C(double x) {} }

public class AAA {


static A makeA(int x) { return new A(x); }
static B makeB(long x) { return new B(x); }
static C makeC(double x) { return new C(x); }

public void test() {}


public static void main(String args[]) {
new AAA().test();
1
1
a) Flyweight (Peso Ligero)
b) Facade (Fachada)
c) Composite (Compuesto)
d) Decorator (Decorador)
Preeunta 6: ¿Qué patrón esta implementado en el siguiente programa?:

abstract class Componente{ class BBB extends AAA{


abstract public void operacion(); private String estadoAgregado;
1 public void operacion(){
class ComponenteConcreto extends Componente{ super.operacion();
public void operacion(){ estadoAgregado = "Nuevo estado";
System.out.println("BBB.operacion()");
System.out.println("ComponenteConcreto.operacion()"); 1
1 1
1 class CCC extends AAA{
abstract class AAA extends Componente{ public void operacion(){
protected Componente componente; super.operacion();
public void setComponente(Componente component){ agregarcomportamiento();
this.componente = component; System.out.println("CCC.operacion()");
1 1
public void operacion(){ void agregarComportamiento(){
if (componente != null) componente.operacion(); System.out.println("comportamiento añadido...");
1 1
1 1
public class Cliente{
public static void main(String[] args){
ComponenteConcreto c = new ComponenteConcreto();
BBB d l = new BBB();
CCC d2 = new CCC();
dl.setComponente(c);
d2.setComponente(dl);
d2.operacion();
1
1

a) Facade (Fachada)
b) Adapter (Adaptador)
c) Bridge (puente)
d) Decorator (Decorador)

Preeunta 7: ¿Qué patrón esta implementado en el siguiente programa?:

public class FFF { public void printFooValue() {


System.out.println(fooValue);
protected static FFF eee; 1
protected String foovalue;
public static void main(String[] args) {
public static FFF getlnstanceo { FFF fff = FFF.getlnstance();
if(eee== null) { fff.printFooValue();
synchronized (FFF.class) { fff.setFooVaule("Un FFF!!");
eee= new FFF(); FFF ggg= FFF.getlnstance();
1 ggg.printFooValue();
1 1
return eee; 1
1
private FFF() {
fooValue ="Hola Mundo!!";
1

public void setFooVaule(String value) {


this.fooValue = value;
1
a) Singleton (Único)
b) Factory Method (Método de fabricación)
c) Memento (Recuerdo)
d) Observer (Observador)

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

Preeunta 9: ¿Cuál es la diferencia entre "throw" y "throws" en el manejo de excepciones?


a) "throw" genera la excepción y "throws" es la declaración del método que genera la excepción.
b) "throws" genera la excepción y "throw" es la declaración del método que genera la excepción.
c) Tanto "throw" como "throws" genera la excepción.
d) Tanto "throw" como "throws" son formas de declarar el método que genera la excepción.

Preeunta 10: ¿Cuál es el resultado del siguiente código?

public static void main(String[] args) {


int tt = 144, sqrt = 1;
while (++sqrt * sqrt != t t ) ;
System.out.println("sqrt(" + tt + ") = " + sqrt);
1
a) sqrt(144) = 1
b) sqrt(144) = 12
c) sqrt(144) = 144
d) sqrt(144) = 0

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 6: ¿Cuál de las opciones no es un inconveniente de los patrones de creación?


a) El patrón singleton tiene algunas de las desventajas de las variables globales.
b) El patrón prototype no es adecuado cuando se van a crear muchas instancias del objeto concreto.
c) En el patrón abstract factory necesitamos retocar muchas clases para añadir un tipo de objetos.
d) El patrón observer tiene algunas de las desventajas de las variables locales.

Preeunta 7: ¿Qué patrón de diseño de creación no se apoya en el polimorfismo?


a) Prototype
b) Abstract Factory
c) Singleton
d) Builder

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 9: ¿Cuándo se podría utilizar una Cadena de responsabilidad?


a) Para poder solicitar una operación a un objeto sin conocer realmente el contenido de esta operación, ni el
receptor real de la misma.
b) Cuando en función del estado del sistema las peticiones emitidas por un objeto deben ser atendidas por
distintos objetos receptores.
c) Para poder definir una interfaz que declara los métodos necesarios para acceder secuencialmente a una
colección de objetos.
d) Para poder almacenar el estado de uno o varios objetos.

Preeunta 10: Dadas las siguientes afirmaciones sobre el patrón proxy, indique las correctas:

Al: Controlar el acceso a un objeto remoto.


A2: Ensamblar objetos complejos
A3: Recoger un objeto que requiere muchos recursos cuando se lo pide un cliente
A4: Almacenar datos comunes redundantes entre un número grande de objetos
A5: Extraer lógica de conexión del cliente que permite llamar a un objeto

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 4: lndique cual de las siguientes afirmaciones es falsa:


a) Uno de los beneficios del patrón Bridge es que permite separar la implementación de la abstracción mediante el
uso de jerarquías de clases separadas.
b) El patrón Bridge resulta útil cuando es necesario modificar una interfaz y una implementación de manera
diferente.
c) El patrón Builder encapsula la construcción de un producto permitiendo su realización en pasos sucesivos.
d) Uno de los problemas del patrón Flyweight es que aumenta el número de instancias de los objetos en tiempo de
ejecución.

Preeunta 5: lndique cual de las siguientes afirmaciones es falsa:


a) El patrón Observer define una relación entre objetos uno-a-muchos.
b) Los objetos Observer actualizan los objetos Observable utilizando una interfaz común.
c) Java tiene una varias implementaciones de este patrón de entre las que podemos destacar java.utiI.0bservable.
d) Los objetos Observer se encuentran muy poco acoplados.

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:

public class ClaseA {


protected void pintar() {
System.out.print("Pintando desde la clase A");
1
1
class ClaseB extends ClaseA {
public void pintar() {
System.out.print("Pintando desde la clase B");
1
1
Indicar cual sería e l resultado d e ejecutar las siguientes líneas d e código.

ClaseA p = new ClaseB();


p.pintar();

a) Pintando desde la clase A


b) Pintando desde la clase B
c) Error d e compilación
d) Error e n t i e m p o d e ejecución

Preeunta 8: Sea la siguiente definición d e clase:

public class ClaseA {


public ClaseA(String S) { System.out.print("Construyendo Clase A."); }
1
Y la siguiente definición d e una subclase:
public class ClaseB extends ClaseA {

public ClaseB(String S) { System.out.print("Construyendo Clase B."); }

public static void main(String [] args) {


new ClaseB("0bjeto Clase B");
System.out.println(" ");
1
1
¿Cuál d e las siguientes afirmaciones es cierta al ejecutar e l código?
a) Se produce u n e r r o r e n t i e m p o d e ejecución.
b ) Se muestra e l mensaje "Construyendo Clase B. Construyendo Clase A."
c) Se muestra e l mensaje "Construyendo Clase A. Construyendo Clase B".
d ) Error d e compilación.
Preeunta 9: Dada la siguiente definición de clases:

public class Externa {


private int 5 = 5;
protected class Interna {
public int 3 = 10;

public void pintar() {


System.out.println(x);
1

¿Qué resultado obtendremos al ejecutar las siguientes líneas de código?

Externa ext = new Externa();


Externa.lnterna in = ext.new Interna();
in.pintar();

a) 10
b) 5
c) Error de compilación
d) Error en tiempo de ejecución

Preeunta 10: Dado el siguiente código:

import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class MiVentana {


private Frame frame = new Frame();

public void registerEvents() {


WindowAdapter wa = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
frame.setVisible(faIse);

¿Cuál de las siguientes afirmaciones es falsa?

a) La clase MiVentana contiene una clase anónima.


b) La clase anónima es hija de WindowAdapter.
c) El objeto wa no tiene acceso al campo frame declarado como miembro de la clase MiVentana.
d) El método windowClosing es llamado cuando se detecta un evento de cierre de una ventana y es implementado
por la interfaz 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:

"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.

Das könnte Ihnen auch gefallen