En este segundo módulo practicaremos con listas, pilas y colas.
En este segundo módulo utilizaremos estructuras más complejas para almacenar la información de la aplicación, añadiendo los métodos necesarios para poder gestionar estas estructuras.
En este módulo tienes que:
Escribir una clase contenedora derivada de la clase abstracta del módulo 1, que almacene los objetos en una lista enlazada de objetos.
Añadir a esta clase contenedora los métodos siguientes:
Escribir las siguientes clases derivadas de esta clase contenedora:
Una clase que implemente un comportamiento de pila, es decir, estrategia LIFO, con los métodos habituales.
Otra clase que implemente un comportamiento de cola, es decir, estrategia FIFO, con los métodos habituales.
Una clase que implemente un comportamiento de pila con prioridad, ordenando los elementos según el criterio definido por el método compareTo
.
Una clase que implemente un comportamiento de cola con prioridad, ordenando los elementos según el criterio definido por el método compareTo
.
Incluye un método en la clase de la aplicación para comparar dos contenedores de objetos, en el orden interno que tenga cada uno, que se pasen por parámetro. El criterio de comparación de objetos es el definido por compareTo
y el parámetro a devolver como resultado de la evaluación lo decides tú.
Modifica la clase de la aplicación del módulo anterior para validar el código desarrollado en este módulo.
Así, en nuestra aplicación de ejemplo, tendríamos una nueva clase CardDeckList
que implementa el mazo guardado como una lista enlazada, y contendría los métodos añadidos requeridos. Además tendríamos las cuatro clases derivadas:
Además, la clase Game
tendría un método nuevo
int play(CardDeck player1, CardDeck player2)
que compara carta a carta de cada mazo
y suma 1 si gana el jugador 1 o -1 si gana el jugador 2. El resultado final es positivo si globalmente gana el mazo del jugador 1, negativo si gana el del jugador 2, o 0 en caso de empate. El método lanza una excepción GameException
si el número de cartas no es el mismo en ambas barajas.