logo

Crowdly

Browser

Add to Chrome

ANÁLISIS Y DISEÑO DE SOFTWARE 2024/25

Looking for ANÁLISIS Y DISEÑO DE SOFTWARE 2024/25 test answers and solutions? Browse our comprehensive collection of verified answers for ANÁLISIS Y DISEÑO DE SOFTWARE 2024/25 at moodle.uam.es.

Get instant access to accurate answers and detailed explanations for your course questions. Our community-driven platform helps students succeed!

Seguimos con el desarrollo

del

videojuego de rol de los ejercicios

anteriores

. Para diversas componentes del programa se prevé la necesidad de

obtener listados de criaturas cuyo nivel sea menor o igual a un máximo dado.

Con el fin de facilitar tal operación se desarrolla la siguiente subclase de

Iterator. 

public class CreatureLevelIterator implements

Iterator<Creature> {     

  private

List<Creature> creatures;

  private int pos = 0

  private int maxLevel; 

  public

CreatureLevelIterator(List<Creature> creatures,

int maxLevel) {

     this.creatures = creatures;

     this.maxLevel = maxLevel;

  }

  @Override

  public boolean hasNext() {

     for( int i=pos; pos<creatures.size(); i++ ) {

       if

( creatures.get(i).getLevel()

<= maxLevel ) {

          return true;

       }

     }

     return false;

  }

  @Override

  public

Creature next()

{

     for( ; pos<creatures.size(); pos++ ) {

       if

( creatures.get(pos).getLevel()

<= maxLevel ) {

          ____[1]____

       }

     }

     return null;      

  }

}

 

¿Qué instrucción habría que

poner en el hueco [1]?

0%
0%
0%
View this question

Seguimos con el desarrollo

del

videojuego de rol de los ejercicios

anteriores

. Consideremos el patrón Observer

planteado en el ejercicio anterior para gestionar los eventos enviados a los

ítems (personajes, criaturas y objetos) que estén en pantalla (entorno de

juego).

Diagrama de clases - Observer

En el siguiente diagrama de secuencia,

¿qué opción es verdadera?

Diagrama de secuencia -  Observer

0%
0%
View this question

Seguimos con el desarrollo

del

videojuego de rol de los ejercicios

anteriores

. Durante el transcurso del juego existirá la posibilidad de

mandar eventos a los ítems (personajes, criaturas y objetos) que estén en

pantalla (entorno de juego), como por ejemplo alteraciones en condiciones

físicas (gravedad, resistencia del suelo, etc.) o la realización de algún

hechizo o ataque múltiple. Los eventos tendrán efecto sobre cada ítem del

entorno de juego en función de su tipo, estado y atributos. 

Para modelar este

requisito se plantea seguir el patrón

Observer

así:

Diagrama de clases - Observer 

En el diagrama anterior, ¿a

través de qué clase y con método arranca el proceso de envío de un evento?

0%
0%
0%
View this question

Seguimos

con el desarrollo del

videojuego de rol

de los ejercicios anteriores

. En el equipo se ha establecido como requisito

que la aplicación permita dos modos: offline y online.

En el primero, se usará

la base de datos local instalada junto al juego, mientras que en la el segundo

se accederá a una base de datos existente en un servidor remoto. En caso de que

no haya conexión en un momento dado, se usará la base de datos local. 

¿Qué

patrón de diseño es aconsejable para modelar el requisito anterior?

0%
0%
0%
View this question

Seguimos con el desarrollo

del

videojuego de rol de los ejercicios

anteriores

. Consideremos el patrón Composite

planteado en el ejercicio anterior para modelar el laberinto del juego.

Diagrama de clases - Composite (2)

La implementación del método show() realiza lo siguiente:

  • En la

    clase

    Wall

    visualiza

    la pared.

  • En la

    clase

    Door

    visualiza

    la puerta e invoca al método

    show() de la habitación a la que da acceso.
  • En la

    clase

    Room

    visualiza

    la habitación e invoca al método

    show() de sus elementos.

Para la siguiente

composición de habitaciones visitadas, puertas y paredes de un laberinto, ¿cuál

es la secuencia de visualización de los elementos? Asumir orden de izquierda a

derecha en los elementos de cada habitación.

Diagrama de objetos - Composite

0%
0%
0%
View this question

Seguimos con el desarrollo

del

videojuego de rol de los ejercicios

anteriores

y profundizamos en el modelado del mapa de juego visitado,

compuesto de habitaciones (

Room), cada una de los cuales habitaciones vecinas, puertas (Door) y/o paredes (Wall). 

Abajo se proporciona una

propuesta de diseño basada en el patrón

Composite

.

Asumir la existencia de los constructores y métodos getter y setter necesarios.

Diagrama de clases - Composite

Atendiendo a este diagrama

de clases, ¿cuál de las siguientes afirmaciones es verdadera?

0%
0%
0%
View this question

Seguimos con el desarrollo

del

videojuego de rol de los ejercicios

anteriores

. Ahora nos centramos en la representación del mapa de juego

visitado, que estará compuesto de habitaciones (

Room

), cada una de los cuales puede tener habitaciones vecinas,

puertas (

Door

) y/o paredes

(

Wall).

Sobre los elementos

anteriores se puede realizar la operación

show

para visualizar una habitación visitada, puerta o

pared.

La visualización del mapa se

hará de manera iterativa por las habitaciones visitadas.

Se plantea seguir el patrón Composite

en el modelado de este

escenario a partir de una clase

MazeSite que represente los citados elementos del mapa.

En este contexto, ¿cuál de

las siguientes afirmaciones es falsa?

0%
0%
0%
View this question

Seguimos con el desarrollo

del

videojuego de rol de los ejercicios

anteriores

. Se plantea que haya un único objeto de la clase World

, que contenga los elementos del juego:

habitaciones, criaturas, objetos, etc. Para ello, se propone seguir el patrón

Singleton

con el código de abajo, pero

en él ¿qué habría que escribir sobre las líneas [1] y [2]?

public class World {

  ____[1]____

  ____[2]____

  public static

World

getInstance() {

     if( theWorld == null ) { theWorld = new World(); }

     return theWorld;

  }

  . . .

}

0%
0%
0%
View this question

Seguimos

con el desarrollo del

videojuego de rol del

ejercicio anterior

. Asumiendo clases Goblin, Ogre, Orc y Troll que heredan de Creature

(abstracta), se plantea el poder equipar

a cada criatura atendiendo a armaduras y armas características de su raza,

profesión u otros atributos. Se propone el siguiente diagrama de clases que

relaciona criaturas con los elementos anteriores.

Por

ejemplo, los orcos guerreros podrían estar equipados con armadura pesada y

espada mandoble, mientras que los orcos ladrones llevarían armadura ligera y cuchillo.

Diagrama de clases - Creature

¿Qué patrón de diseño sería el apropiado para generar

equipamiento de criaturas de manera flexible, y evitando posibilidades de error en el tipo de equipamiento?

0%
0%
0%
View this question

Considerar la siguiente

implementación de un grafo ponderado (con pesos en sus arcos/edges) de vértices

con datos genéricos (asumiendo todos los

import

necesarios, así como los métodos hashCode, equals, compareTo y toString de la

clase de un vértice: Vertex).

public class Vertex<T> implements

Comparable<Vertex<T>> {

  private final int id;

  private T data;

  public Vertex(int id, T data) {

     this.id = id;

     this.data = data;

  }

  public int getId() { return this.id; }

  public T getData() { return this.data; }

  ...

}

public class Graph<T> {

  protected

List<Vertex<T>> vertices; // vértices v

  protected

Map<Vertex<T>, Map<Vertex<T>, Double>> edges; // arcos

(v1,v2) con pesos w

  public Graph() {

     this.vertices = new

ArrayList<>();

     this.edges = new

HashMap<>();

  }

  public

Vertex<T>

addVertex(T data) { ... }

  public void

addEdge(Vertex<T> v1, Vertex<T> v2,

double w) { ... }

  public

List<Vertex<T>> getVertices() { ... }

  public double

getEdgeWeight(Vertex<T> v1, Vertex<T> v2) { ... }

  ...

}

 

¿Qué es lo

que almacena la variable x de abajo dentro de un método de Graph?

x = this.edges.get(v).entrySet()

  .stream()

  .filter(e ->

e.getValue() > 0.5)

  .map(e -> e.getKey())

  .collect(Collectors.toList());

0%
0%
0%
0%
View this question

Want instant access to all verified answers on moodle.uam.es?

Get Unlimited Answers To Exam Questions - Install Crowdly Extension Now!

Browser

Add to Chrome