public class MetroBilbao { private static final TubeManager MANAGER=TubeManager.getTheManager(); //El gestor es un singleton //TODO añadir todas las estaciones (no es parte del ejercicio) private static final String[] ESTACIONES_A = {"Casco Viejo", "Abando"}, ESTACIONES_B = {"Erandio", "Axpe"}, ESTACIONES_C = {"Plencia", "Sopelana"}; static { //Inicializacion del sistema: estaciones y zonas for (String s : ESTACIONES_A) MANAGER.addEstacion(s, Zona.A); for (String s : ESTACIONES_B) MANAGER.addEstacion(s, Zona.B); for (String s : ESTACIONES_C) MANAGER.addEstacion(s, Zona.C); } // PRUEBAS public static void main(String[] args) { pruebaAlta(true, Zona.A, "Pedro", "Pérez Pereda", "653455433X", 1989, true); pruebaAlta(false, Zona.C, "Ana", "Antón Andujar", "306732876J", 2005, false); pruebaAlta(false, Zona.B, "Berta", "Bereziartua Bershmidt", "43745724R", 1969, false); pruebaUso("306732876J", "Abando"); pruebaUso("653455433X", "Plencia"); //Prueba de uso de abono caducado. ("caducar" no iría en la aplicación final) MANAGER.caducar("653455433X"); pruebaUso("653455433X", "Casco Viejo"); pruebaRenovacion("653455433X"); pruebaUso("653455433X", "Casco Viejo"); pruebaRenovacion("306732876J"); } // RUTINAS DE PRUEBAS private static void pruebaAlta(boolean anual, Zona zona, String nombre, String apellidos, String dni, int año, boolean famNum) { try { Abono a = anual ? new AbonoAnual(zona, nombre, apellidos, dni, año, famNum) : new AbonoMensual(zona, nombre, apellidos, dni, año, famNum); System.out.println("Dado de alta el abono\n " + a); System.out.println(" Cantidad a pagar " + Precios.getPrecio(a)); } catch (MetroGestionException ex) { System.out.println(ex.getMessage()); } } private static void pruebaUso(String dni, String estacion) { try { MANAGER.acceso(dni, estacion); System.out.println("El abonado " + dni + " pasa canceladora en " + estacion); } catch (MetroGestionException ex) { System.out.println(ex.getMessage()); } } private static void pruebaRenovacion(String dni) { try { Abono.renueva(dni); System.out.println("Renovado el abono\n " + Abono.getByDni(dni)); System.out.println(" Cantidad a pagar " + Precios.getPrecio(Abono.getByDni(dni))); } catch (MetroGestionException ex) { System.out.println(ex.getMessage()); } } }