RA4 - CEe¶
Empaquetar actividades
Empaqueta las actividades, dentro de la carpeta ut05, en la carpeta actividades/ce4e.
Actividad 18¶
paquete _04_contrarreloj
Se quiere realizar una aplicación para registrar las posiciones y tiempos de llegada en una carrera ciclista contrarreloj.
Empaqueta las clases de las actividades: 18, 19, 20 en el paquete _04_contrarreloj dentro de actividades.
La clase Corredor representa a un participante en la carrera. Sus atributos son el dorsal (entero), el nombre (string) y el tiempo en segundos (double) que le ha costado completar el recorrido. Los métodos con los que cuenta son:
-
public Corredor(int d, String n): Constructor a partir del dorsal y el nombre. Por defecto el tiempo tardado es 0. -
public double getTiempo(): Devuelve el tiempo tardado por el corredor. -
public int getDorsal(): Devuelve el dorsal del corredor. -
public String getNombre(): Devuelve el nombre del corredor. -
public void setTiempo(double t) throws IllegalArgumentException: Establece el tiempo tardado por el corredor. Lanzará la excepción si el tiempo indicado es negativo. -
public void setTiempo(double t1, double t2) throws IllegalArgumentException: Establece el tiempo tardado por el corredor.
t1 indica la hora de comienzo y t2 la hora de finalización (expresadas en segundos). La diferencia en segundos entre los dos datos servirá para establecer el tiempo tardado por el Corredor.
Lanzará la excepción si el tiempo resultante es negativo.
public String toString(): Devuelve un String con los datos del corredor, de la forma:
-
public boolean equals(Object o): Devuelve true si los corredores tienen el mismo dorsal y false en caso contrario. -
public int compareTo (Corredor o): Un corredor es menor que otro si tiene menor dorsal. -
public static int generarDorsal(): Devuelve un número de dorsal generado secuencialmente. Para ello la clase hará uso de un atributostatic int siguienteDorsalque incrementará cada vez que se genere un nuevo dorsal.
Actividad 19¶
Diseñar una clase Java TestCorredor que permita probar la clase Corredor y sus métodos. Para ello se desarrollará el método main en el que:
- Se crearán dos corredores: El nombre lo indicará el usuario mientras que el dorsal se generará utilizando el método
generarDorsal()de la clase. - Se establecerá el tiempo de llegada del primer corredor a 300 segundos y el del segundo a 400.
- Se mostrarán los datos de ambos corredores (
toString).
Actividad 20¶
La clase ListaCorredores permite representar a un conjunto de corredores. En la lista, como máximo habrá 200 corredores, aunque puede haber menos de ese número. Se utilizará un array, llamado lista, de 200 elementos junto con una propiedad numCorredores que permita saber cuentos corredores hay realmente. Métodos:
-
public ListaCorredores(): Constructor. Crea la lista de corredores, inicialmente vacía. -
public void anyadir(Corredor c) throws ElementoDuplicadoException: Añade un corredor al final de la lista de corredores, siempre y cuando el corredor no esté ya en la lista, en cuyo caso se lanzaráElementoDuplicadoException -
public void insertarOrdenado(Corredor c): Inserta un corredor en la posición adecuada de la lista de manera que esta se mantenga ordenada crecientemente por el tiempo de llegada. Para poder realizar la inserción debe averiguarse la posición que debe ocupar el nuevo elemento y, antes de añadirlo al array, desplazar el elemento que ocupa esa posición y todos los posteriores, una posición a la derecha. -
public Corredor quitar(int dorsal) throws ElementoNoEncontradoException: Quita de la lista al corredor cuyo dorsal se indica. El array debe mantenerse compacto, es decir, todos los elementos posteriores al eliminado deben desplazarse una posición a la izquierda. El método devuelve el Corredor quitado de la lista. Si no se encuentra se lanzaElementoNoEncontradoException. -
public String toString(): Devuelve unStringcon la información de la lista de corredores. Los minutos aparecerán formateados con 2 decimales. Por ejemplo:
(Clase Contrarreloj) Realizar un programa que simule una contrarreloj. Para llevar el control de una carrera contrarreloj se mantienen dos listas de corredores (dos objetos de tipo ListaCorredores):
- (
hanSalido) Una con los que han salido, que tiene a los corredores por orden de salida. El atributo tiempo de estos corredores será 0. Para que los corredores se mantengan por orden de salida, se añadirán a la lista utilizando el método añadir. - (
hanLlegado) Otra con los corredores que hay llegado a la meta. A medida que los corredores llegan a la meta se les extrae de la primera lista, se les asigna un tiempo y se les inserta ordenadamente en esta segunda lista.
En el método main realizar un programa que muestre un menú con las siguientes opciones:
Salida: Para registrar que un corredor ha comenzado la contrarreloj y sale de la línea de salida. Solicita al usuario el nombre de un corredor y su dorsal, y lo añade a la lista de corredores que han salido.Llegada: Para registrar que un corredor ha llegado a la meta. Solicita al usuario el dorsal de un corredor y el tiempo de llegada (en segundos). Quita al corredor de la lista de corredores quehanSalido, le asigna el tiempo que ha tardado y lo inserta (ordenadamente) en la lista de corredores quehanLlegadoClasificación: Muestra la lista de corredores quehanLlegado. Dado que esta lista está ordenada por tiempo, mostrarla por pantalla nos da la clasificación.Salir: Sale del programa.