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
public class CreatureLevelIterator implements Iterator<Creature> {
private List<Creature> creatures;
private int pos = 0
private int maxLevel;
public CreatureLevelIterator(List<Creature> creatures,
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]?
Seguimos con el desarrollo del videojuego de rol de los ejercicios anteriores 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).
En el siguiente diagrama de secuencia, ¿qué opción es verdadera?
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 así:
En el diagrama anterior, ¿a través de qué clase y con método arranca el proceso de envío de un evento?
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?
Seguimos con el desarrollo del videojuego de rol de los ejercicios anteriores planteado en el ejercicio anterior para modelar el laberinto del juego.
La implementación del método show() realiza lo siguiente:
En la
clase
Wallvisualiza
la pared.
En la
clase
Doorvisualiza
la puerta e invoca al método
show() de la habitación a la que da acceso.En la
clase
Roomvisualiza
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.
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 (
Abajo se proporciona una propuesta de diseño basada en el patrón . Asumir la existencia de los constructores y métodos getter y setter necesarios.
Atendiendo a este diagrama de clases, ¿cuál de las siguientes afirmaciones es verdadera?
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 ( ), cada una de los cuales puede tener habitaciones vecinas, puertas ( ) y/o paredes (
Sobre los elementos anteriores se puede realizar la operación 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
En este contexto, ¿cuál de las siguientes afirmaciones es falsa?
Seguimos con el desarrollo del videojuego de rol de los ejercicios anteriores , que contenga los elementos del juego: habitaciones, criaturas, objetos, etc. Para ello, se propone seguir el patrón 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;
}
. . .
}
Seguimos con el desarrollo del videojuego de rol del ejercicio anterior (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.
¿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?
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 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,
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());