Si vuole simulare il funzionamento della cassa per il pagamento del pedaggio all’entrata di un tunnel lungo 25 km, la cui entrata è vietata ai camion che trasportano liquidi infiammabili, alle moto con cilindrata inferiore a 125 cc. Pertanto prima di emettere il ticket, bisogna verificare che il veicolo che si è presentato alla cassa possa entrare nel tunnel: se l’accesso è negato, il veicolo dovrà percorrere la strada alternativa che però è lunga 90 km. I veicoli pagano importi diversi: 1. le moto ammesse (cilindrata > 125) pagano 7 euro 2. le automobili pagano 12 euro 3. i camper pagano 2 euro per ogni metro di lunghezza 4. i camion pagano 5 euro a tonnellata di peso Scrivere il codice del programma che permetta di far pagare il pedaggio ai veicoli che arrivano: quando un veicolo arriva alla cassa il cassiere deve scegliere il tipo di veicolo arrivato tra moto, automobile, camper e camion in base al seguente diagramma delle classi, creando in modo casuale le caratteristiche dei veicoli (cilindrata per le moto, lunghezza per il camper, peso (2 - 12) e trasporto liquidi infiammabili (0-1)….). Classe Cassa: menu() = Deve gestire in un ciclo che termina a richiesta dell’utente le funzionalità richieste e precisamente: Fondazione ITS A. Volta – linguaggi – Flavia Lollis 1 Arrivo veicolo – viene scelto il tipo di veicolo arrivato e richiesti i dati caratterizzanti (oppure creati in modo casuale) e si richiede l’emissione del ticket chiamando il metodo emettiTicket uscita emettiTicket(Veicolo ve) – si deve verificare se il veicolo arrivato è ammesso al tunnel, se lo è si calcola l’importo da pagare calcolato in base al tipo di veicolo, altrimenti si rifiuta l’accesso al tunnel. Classe Veicolo Veicolo() : costruttore senza parametri; calcolaPedaggio() - metodo vuoto che restituisce un importo nullo; le classi figlie faranno override di questo metodo accessoOK() - il metodo è vuoto e restituisce un boolean impostato a false; le classi figlie faranno override di questo metodo Classe Automobile: Automobile(): costruttore senza parametri che crea un’automobile che non né a gas né elettrica. Automobile(int g, int e): costruttore che ha come parametri i flag per indicare se l’automobile è a gas o elettrica calcPedaggio() : in base a quanto è stato definito per le automobili calcola il pedaggio da pagare e restituisce l’importo accessoOK() - il metodo restituisce il valore true perché tutte le automobili sono ammesse Classe Moto: Moto(): costruttore senza parametri che crea una moto la cui cilindrata è un numero casuale tra 50 e 600. Moto(int c): costruttore che ha come parametro la cilindrata della moto calcPedaggio() : in base a quanto è stato definito per le moto calcola il pedaggio da pagare e restituisce l’importo accessoOK() - il metodo restituisce il valore true se la cilindrata > 125, altrimenti false Classe Camper: Camper(): costruttore senza parametri che crea un camper la cui lunghezza è un numero casuale tra 4 e 9. Camper(int l): costruttore che ha come parametro la lunghezza del camper calcPedaggio() : in base a quanto è stato definito per i camper calcola il pedaggio da pagare e restituisce l’importo accessoOK() - il metodo restituisce il valore true perché tutti i camper sono ammessi Fondazione ITS A. Volta – linguaggi – Flavia Lollis 2 Classe Camion: Camion(): costruttore senza parametri che crea un camion il cui peso è un numero casuale tra 2 e 20. Camion(int p): costruttore che ha come parametro il peso del camion calcPedaggio() : in base a quanto è stato definito per i camion calcola il pedaggio da pagare e restituisce l’importo accessoOK() - il metodo restituisce il valore true entrambi i flag sono = 0, altrimenti false Fondazione ITS A. Volta – linguaggi – Flavia Lollis 3