Está en la página 1de 3

 

Ingeniería del Software 
 

Grado en Ing. Computadores, Grado en Ing. Informática,  
Grado en Ing. del Software y Doble Grado en Ing. Informática ‐ Matemáticas 
Facultad de Informática. Universidad Complutense de Madrid 
Segundo parcial examen final de junio 2018 

1.  [4,5] Dado el caso de uso del final del ejercicio (CDU): 
a. [2]  Proporciona  diagramas  de  clases  necesarias  para  la  implementación  del  CDU 
aplicando los patrones de arquitectura multicapa requeridos en el proyecto de la 
asignatura. 
b. [2,5]  Proporciona  diagramas  de  secuencia  necesarios  para  la  implementación  del 
CDU con la arquitectura del apartado anterior. 
Queremos hacer una pequeña aplicación para gestionar una tienda de guitarras. 
La  aplicación  considera  constructores  y  modelos  de  guitarras.  Un  constructor  puede 
fabricar muchos modelos o ninguno. Todo modelo ha de tener un constructor, y sólo uno. 
De un constructor nos interesa saber su nombre y dirección. De un modelo de guitarra nos 
interesa saber el nombre del modelo, el material de la tapa, y el material de aros y fondo 
(el mismo para ambos). 
Todas  las  entidades  se  gestionan  a  través  de  un  identificador  único  que  es  creado 
automáticamente por el sistema cuando son creadas. 
En este contexto nos centramos en el caso de uso/requisito funcional alta de modelo de 
guitarra. Los datos de entrada son el identificador del constructor, el nombre del modelo, 
el material de la tapa, y el material de aros y fondo. El sistema debe comprobar que no hay 
ya un modelo de guitarra con ese nombre (esté activo o no) y que el constructor existe y 
está activo. 
 
2. [2,5]  Genera  los  diagramas  UML  para  caracterizar  la  estructura  estática  [1  punto]  y 
comportamiento dinámico [1,5 puntos] descritos en el siguiente fragmento de código:  
public class A {

private Boolean x;

private Collection<B> bs;

public String f(D d) {

String res= null;

if (bs!=null && d!=null)


{
Iterator<B> it= bs.iterator();

while(it.hasNext())
{
B b= it.next();
int i= b.g();
d.h(i);
}
res= d.r();
}
return res;
}
}
 

public class A1 extends A {

private int y;
}

public class A2 extends A {

private String z;
}

 
public interface B {

public int g();



 
 
public class BImp implements B {

private String s;

public int g() {……………………………………}


}

public class D {

private String w;

public void h(int i) {……………………………………}

public String r() {……………………………………}


}
 

 
 
 

APELLIDOS:             NOMBRE: ……...……………   
DNI/NIE:            FIRMA: 
 

(MODELO A: ENTREGA ESTA HOJA CON LAS RESPUESTAS MARCADAS)                

3. [3]  Marca  con  un  círculo  la  respuesta  correcta  en  cada  una  de  las  siguientes  preguntas. 
Cada respuesta correcta suma 0,5 puntos y cada respuesta incorrecta resta 0,25. 
 
1. ¿Qué patrón organiza objetos en estructuras de árbol para representar jerarquías de 
parte‐todo? 
a. Command 
b. Iterator 
c. Decorator 
d. Composite 
 
2. Un inconveniente del patrón Fachada es: 
a. Oculta a los clientes los componentes del subsistema 
b. Reduce el número de objetos con los que tratan los clientes 
c. Hay que actualizar la fachada al incluir nuevas operaciones 
d. No impide que las apps utilicen las clases del subsistema 
 
3. Motivación del patrón Decorador: 
a. Queremos añadir responsabilidades dinámicamente a objetos individuales 
b. La herencia es una solución dinámica 
c. Un enfoque más rígido es encerrar el componente en otro objeto 
d. Todas ciertas 
 
4. El patrón Mediator debe aplicarse cuando: 
a. Un  conjunto  de  objetos  se  comunican  de  forma  compleja,  con 
interdependencias difíciles de comprender 
b. Las interdependencias resultantes están estructuradas 
c. Es fácil reutilizar un objeto que referencia otros objetos 
d. Cuando hay que dividir en dos un sistema 
 
5. El patrón Observador debe aplicarse cuando: 
a. Una abstracción tiene dos aspectos y uno depende del otro 
b. Cuando un cambio en un objeto requiere cambiar otros 
c. Cuando un objeto debería ser capaz de notificar a otros 
d. Todas ciertas 
 
6. El  patrón  _________________    permite  que  interactúen  clases  que  tenían  interfaces 
incompatibles  

a. Interactor 
b. Decorator 
c. Adapter 
d. Command 

También podría gustarte