Skip to content

RA4 - CEi

< volver a actividades

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 un String con el nombre de la carpeta y sus mensajes
  • public 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 lanza ElementoNoEncontradoException.

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 (OROS será el valor 0, COPAS el 1, ESPADAS el 2 y BASTOS el 3).
  • Definir los atributos (privados): palo y valor.
  • 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 consultores y modificadores de los valores de los atributos.
  • Escribir un método compareTo para 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 equals para comprobar la igualdad de dos cartas. Dos cartas son iguales si tienen el mismo palo y valor.
  • Escribir un método sigPalo para 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 toString para transformar en String la carta actual, con el siguiente formato: "valor de palo"; por ejemplo, "4 de oros" o "1 de bastos" (sobrescritura del método toString de Object).

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 objetos Carta y 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 main en el que se debe:

    • Crear una Carta aleatoriamente 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 Carta a 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 Carta del usuario.

< volver a actividades