-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
NOTA: 7
Respecto al informe
- En la sección detalles de implementación no se detallan o muestran razones por las cuales el diseño que persistió fue el propuesto. Por ejemplo:
- Porqué herencia vs delegación.
- Porqué utilicé tal o cuál patrón.
Diagrama de clases
-
Diagrama 1:
- Existen múltiples relaciones sin multiplicidad.
- Mazo contiene lista de cartas pero no figura en diagrama.
- Mazo duplicado.
- Mazo contiene métodos no diagramados.
-
Diagrama 3:
- Las clases que implementan
Estado
no tienen contrato. - La clase
Modo
no cuenta con contrato. - La clase
CartaMagica
no tiene el contrato que dice el diagrama.
- Las clases que implementan
Diagrama de secuencia
Los diagramas de secuencia esquematizan interacciones entre cases a los efectos de resolver un caso de uso. El diagrama 4 no esquematiza un caso de uso.
- Diagrama 4:
- El nombre de las instancias no siguen el standard que sugiere la cátedra.
- Cuando
EfectoInsectoComeHombres
recibe el mensajeactivarEfectoDeVolteoAnteAtaque
existe una iteración que no se evidencia.
for (Carta destruida: cartaDestruidasDelAtacantePorElEfecto){
tablero.colocarCementerio(destruida,jugadorEnemigo);
if (destruida instanceof modelo.cartas.cartasMonstruo.CartaMonstruo)
tablero.get(jugadorEnemigo).eliminarDeZonaMonstruo((modelo.cartas.cartasMonstruo.CartaMonstruo) destruida);
}
Respecto al código
- Utilización recurrente del instanceof (20 ocurrencias):
Archivo: InvocacionCartaDragonDefinitivoOjosAzules
private boolean validarSacrificios() {
boolean resultado = true;
for (CartaMonstruo cartaMonstruo : sacrificios) {
resultado = cartaMonstruo instanceof DragonBlancoDeOjosAzules;
if (! resultado) { break; }
}
return sacrificios.size() == 3 && resultado;
}
Archivo: Tablero
private void colocarCartaEnCementerio(Carta carta, Jugador jugador) {
if(carta instanceof CartaMonstruo){
divisiones.get(jugador).eliminarDeZonaMonstruo((CartaMonstruo) carta);
}else{
divisiones.get(jugador).eliminarDeZonaTrampaMagica(carta);
}
divisiones.get(jugador).colocarCementerio(carta);
}
Archivo: Mano
public boolean sonTodasExodia() {
Set<CartaMonstruoExodia> piezasDeExodia= new HashSet<CartaMonstruoExodia>();
for (Carta carta: cartas) {
if( carta instanceof CartaMonstruoExodia){
piezasDeExodia.add((CartaMonstruoExodia)carta);
}
}
if (piezasDeExodia.size()==5)
return true;
else return false;
}
- Código mazo: Código susceptible de ser refactorizado aplicando polimorfísmo en lugar del
switch
.
try{
while(cartas.size()<40 - 18){
Scanner cartasMonstruo = new Scanner(new File("resources/Nombres Monstruos.txt"));
Scanner cartasMagicasTrampa = new Scanner(new File("resources/Nombres Cartas Magicas Trampas.txt"));
Scanner cartasEspeciales = new Scanner(new File("resources/Nombres Cartas Especiales.txt"));
Random r = new Random();
int numeroMonstruos = 0;
int mazoNumero = r.nextInt(4-1) +1;
Random numeroRandomCarta = new Random();
int numeroElegido;
switch (mazoNumero) {
case 1:
if(numeroMonstruos < 15){
numeroElegido = numeroRandomCarta.nextInt(TOTAL_CARTAS_MONSTRUO);
int numero = 0;
while (numero <= numeroElegido) {
nombreDeCarta = cartasMonstruo.nextLine();
numero++;
}
agregarCarta(nombreDeCarta, jugador, jugadorContrario, zonaMonstruoAtacante, zonaMonstruoPropia, tablero);
cartasMonstruo.reset();
}break;
case 2:
//if (contadorDeCartasMagicasTrampa<TOTAL_CARTAS_MAGICAS_TRAMPA){
numeroElegido = numeroRandomCarta.nextInt(TOTAL_CARTAS_MAGICAS_TRAMPA);
int numeroMagico = 0;
while (numeroMagico <= numeroElegido){
nombreDeCarta = cartasMagicasTrampa.nextLine();
numeroMagico++; }
agregarCarta(nombreDeCarta, jugador, jugadorContrario, zonaMonstruoAtacante, zonaMonstruoPropia, tablero);
cartasMagicasTrampa.reset();
contadorDeCartasMagicasTrampa++;
break;
//}
case 3:
//if(contadorDeCartasEspeciales < TOTAL_CARTAS_ESPECIALES) {
numeroElegido = numeroRandomCarta.nextInt(TOTAL_CARTAS_ESPECIALES);
int numeroEspecial = 0;
while (numeroEspecial <= numeroElegido) {
nombreDeCarta = cartasEspeciales.nextLine();
numeroEspecial++; }
//if (!registroCartasEspeciales.contains(nombreDeCarta)){
agregarCarta(nombreDeCarta, jugador, jugadorContrario, zonaMonstruoAtacante, zonaMonstruoPropia, tablero);
contadorDeCartasEspeciales++;
registroCartasEspeciales.add(nombreDeCarta);
//}
cartasEspeciales.reset();
//}
break;
default:
break;
}
cartasEspeciales.close();
cartasMagicasTrampa.close();
cartasMonstruo.close();
}
Reporte cobertura
- La baja cobertura evidencia la falta de aplicación de TDD. Reporte aquí: reporte_cobertura.zip
Metadata
Metadata
Assignees
Labels
No labels