Tema de desarrollo
Se desea simular un sistema de buses que recorren una ruta determinada con diferentes
paradas hasta su lugar de destino. Cada bus terminará su recorrido cuando llegue a su
destino o cuando se quede sin pasajeros o sin combustible suficiente para completar el
siguiente trayecto. Un trayecto es el viaje que se realiza de una parada a otra. Cada bus
registra en un archivo la cantidad de pasajeros que se baja en cada parada.
Se le proporciona el diagrama de clases de la aplicación
Considerando el diagrama de clases proporcionado, usted debe realizar las siguientes tareas:
En el paquete excepciones
A. (4 puntos) Cree una excepción de tipo checked llamada ChoferNoEncontrado con
un constructor que recibe la placa del bus y establece el mensaje Bus con placa
<placa> no tiene asignado chofer. No puede iniciar su recorrido.
Modelo: Clase Bus
B. (27 puntos) Implemente el método estático cargarBuses() que lee el archivo buses.txt
que contiene la información de los buses que van a salir de una estación. Este método
construye y devuelve una lista de objetos Bus con los datos del archivo. La primera
línea del archivo es la cabecera.
Cada línea del archivo representa la información del bus separada por;
placa;combustible;paradas;capacidad;licencia;chofer
Como se muestra a continuación:
placa;combustible;paradas;capacidad;licencia;chofer
ABC-1234;100;3;50;1234;Juan Cevallos
XYZ-7894;130;12;55;5678;Marcia Almeida
LMN-4564;120;8;45;9012;Carlos Aguilar
DEF-3214;150;15;60;3456;Ana Mendoza
En el procesamiento del archivo, si el bus no incluye la información del chofer debe
crear y lanzar la excepción ChoferNoEncontrado con la placa del bus.
Recuerde: Manejar siempre las clases específicas de excepciones y no la forma
general de Exception.
C. (43 puntos) Implemente la funcionalidad necesaria para que cada bus se comporte
como un hilo. El hilo simula la trayectoria del bus desde la salida pasando por cada
parada. La variable numParadas incluye la parada en el destino final.
Implemente la funcionalidad del hilo que simula el recorrido del bus y cada una de sus
paradas, considerando lo siguiente:
1. La cantidad inicial de pasajeros de cada bus es igual a la capacidad. Es decir,
el bus desde el inicio estará lleno. La cantidad inicial de galones de
combustible está en la variable combustible.
2. Manejar un archivo para registrar la información del chofer y la cantidad de
pasajeros que se bajan en cada parada. El nombre del archivo se llama
recorrido-<placa>.txt Ejemplo recorrido-ABC-1234.txt. Ver ejemplo del
archivo al final.
3. Mientras no haya llegado a su destino o aun tenga pasajeros o combustible
suficiente para completar el siguiente trayecto (por cada trayecto consume 3.6
galones de gasolina). Implementar lo siguiente:
3.1. Mostrar cuántos pasajeros viajan y la cantidad de combustible
que dispone el bus.
3.2. Simular el paso del tiempo de llegar de una parada a otra
durmiendo 2 segundos.
3.3. Disminuir el combustible que se utilizó para realizar el trayecto.
Recuerde que cada trayecto consume 3.6 galones de gasolina.
3.4. Debe bajar una cantidad aleatoria de pasajeros. Si es la última
parada o no hay suficiente combustible para el siguiente trayecto se
deben bajar todos los pasajeros restantes. Para generar un número
aleatorio, puedes seguir el siguiente ejemplo de código::
Random r = new Random();
int valor = r.nextInt(6); // Aleatorio entre 0 y 5
3.5. Debe mostrar por consola y escribir en el archivo la cantidad
de pasajeros que se bajaron. (Ver ejemplo)
4. Mostrar el mensaje: Bus <placa> ha terminado su recorrido.
Recuerde: El bus termina el recorrido en cualquiera de estos casos:
● No tiene combustible suficiente para llegar a la próxima parada
● Cuando todos los pasajeros se bajaron antes de llegar al destino final
● Llegó al destino final
Clase Main (Examen2E)