RA4 - CEi¶
Empaquetar actividades
Empaqueta las actividades, dentro de la carpeta ut05, en la carpeta actividades/ce4i.
Actividad 29¶
La clase Carpeta, cada carpeta tiene un nombre y una lista de Mensajes. Para ello usaremos un array con capacidad para 100 mensajes y un atributo que indique el número de mensajes que contiene la carpeta. Además se implementarán los siguientes métodos:
public Carpeta(String nombre): Constructor. Dado un nombre, crea la carpeta sin mensajes.public void añadir(Mensaje m): Añade a la carpeta el mensaje indicado.public void borrar(Mensaje m) throws ElementoNoEncontradoException: Borra de la carpeta el mensaje indicado. Lanza la excepción si el mensaje no existe.public Mensaje buscar(int codigo) throws ElementoNoEncontradoException: Busca el mensaje cuyo código se indica. Si lo encuentra devuelve el mensaje, en caso contrario lanza la excepción.public String toString()que devuelva unStringcon el nombre de la carpeta y sus mensajespublic static void moverMensaje(Carpeta origen, Carpeta destino, int codigo) throws ElementoNoEncontradoException: Método estático. Recibe dos Carpetas de correo y un código de mensaje y mueve el mensaje indicado de una carpeta a otra. Para ello buscará el mensaje en la carpeta origen. Si existe lo eliminará y lo añadirá a la carpeta de destino. Si el mensaje indicado no está en la carpeta de origen lanzaElementoNoEncontradoException.
Actividad 30¶
paquete _06_juegoDeCartas
Se está desarrollando una aplicación que usa una baraja de cartas.
Empaqueta las clases de las actividades: 30 y 31 en el paquete _06_juegoDeCartas dentro de actividades.
Una de ellas es la clase Carta que permite representar una carta de la baraja española. La información requerida para identificar una Carta es:
- su
palo(oros, copas, espadas o bastos) y - su
valor(un entero entre 1 y 12).
Para dicha clase, se pide:
- Definir 4 constantes, atributos de clase (estáticos) públicos enteros, para representar cada uno de los palos de la baraja (
OROSserá el valor 0,COPASel 1,ESPADASel 2 yBASTOSel 3). - Definir los atributos (privados):
paloyvalor. - Escribir dos constructores: uno para construir una carta de forma aleatoria (sin parámetros) y otro para construir una carta de acuerdo a dos datos: su palo y su valor (si los datos son incorrectos se lanzará
IllegalArgumentException) - Escribir los métodos
consultoresymodificadoresde los valores de los atributos. - Escribir un método
compareTopara comprobar si la carta actual es menor que otra carta dada. El criterio de ordenación es por palos (el menor es oros, después copas, a continuación espadas y, finalmente, bastos) y dentro de cada palo por valor (1, 2, ..., 12). - Escribir un método
equalspara comprobar la igualdad de dos cartas. Dos cartas son iguales si tienen el mismo palo y valor. - Escribir un método
sigPalopara devolver una nueva carta con el mismo valor que el de la carta actual pero del palo siguiente, según la ordenación anterior y sabiendo que el siguiente al palo bastos es oros. - Escribir un método
toStringpara transformar enStringla carta actual, con el siguiente formato: "valor de palo"; por ejemplo, "4 de oros" o "1 de bastos" (sobrescritura del métodotoStringdeObject).
Actividad 31¶
Implementar una clase JuegoCartas con los métodos siguientes:
-
Un método de clase (estático)
public static int ganadora( Carta c1, Carta c2, int triunfo)que dados dos objetosCartay un número entero representando el palo de triunfo (o palo ganador), determine cuál es la carta ganadora. El método debe devolver 0 si las dos cartas son iguales. En caso contrario, devolverá -1 cuando la primera carta es la ganadora y 1 si la segunda carta es la ganadora.Para determinar la carta ganadora se aplicarán las siguientes reglas:
- Si las dos cartas son del mismo palo, la carta ganadora es el as (valor 1) y, en el resto de casos, la carta ganadora es la de valor más alto (por ejemplo, "1 de oros" gana a "7 de oros", "5 de copas" gana a "2 de copas", "11 de bastos" gana a "7 de bastos").
- Si las dos cartas son de palos diferentes:
- Si el palo de alguna carta es el palo de triunfo, dicha carta es la ganadora.
- En otro caso, la primera carta siempre gana a la segunda.
-
Un método
mainen el que se debe:- Crear una
Cartaaleatoriamente y mostrar sus datos por pantalla. - Generar aleatoriamente un entero en el rango [0..3] representando el palo de triunfo, y mostrar por pantalla a qué palo corresponde.
- Crear una
Cartaa partir de un palo y un valor dados (solicitados al usuario desde teclado), y mostrar sus datos por pantalla. - Mostrar por pantalla la carta ganadora (invocando al método del apartado anterior con el objeto
Cartadel usuario.
- Crear una