Formula 1
Sviluppare l’applicazione che consente di gestire il punteggio piloti
del campionato di F1.
Tutte le classi devono essere nel package "formula1".
R1 - Definizione Piloti
Il sistema agisce tramite la classe Campionato.
Il metodo creaPilota() che
accetta come parametro il nome (Es. "Barrichello") crea un
oggetto Pilota e lo registra
nel campionato. La classe Pilota offre
il metodo getNome() per
leggere il nome.
Per ottenere l'elenco dei piloti si usa il metodo getPiloti() che restituisce una
collezione di oggetti Pilota. Per
ottenere uno specifico pilota si usa il metodo getPilota() che riceve
come parametro il nome e restituisce l'oggetto Pilota corrispondente.
R2 - Gran Premi
I piloti gareggiano nei gran premi. Per definire un gran premio si
utilizza il metodo definisciGranPremio()
della classe Campionato che riceve come parametro il nome del G.P. (es.
"Imola"); tale metodo
restituisce un oggetto di tipo GP.
La classe GP offre il metodo getNome()
per ottenere il nome.
Per ottenere uno specifico G.P. è possibile utilizzare il
metodod getGranPremio() delle
classe Campionato che riceve il nome del G.P.
R3 - Tempi
I piloti che corrono i gran premi totalizzano dei tempi che possono
essere inseriti tramite il metodo setTempo()
della classe Campionato che riceve come parametri: il gran premio, il
pilota, ed il tempo
espresso in ore, minuti, secondi e centesimi. Questo metodo deve
verficare che i minuti ed i secondi siano compresi tra 0 e 59 e che i
centesimi siano compresi tra 0 e 99, altrimenti genera un'eccezione di TempoNonValido.
Questo metodo restituisce un oggetto di tipo Tempo, che ridefinisce il
metodo toString() in modo che
restituisca il tempo nel formato "h:m:s.c" (Es. se h=1, m=30, s=5, c=40
il metodo restituisce "1:30:5.40").
Dato un gran premio, in base ai tempi è possibile ottenere
l'ordine di arrivo tramite il metodo getOrdineArrivo()
che restituisce una lista di piloti ordinati in maniera crescente
rispetto al tempo.
R4 - Graduatoria
Dato un gran premio deve essere possibile ottenere la posizione
nell'ordine di arrivo di un pilota tramite il metodo getPosizione() che riceve come
parametro il pilota in questione. Il primo pilota che compare nella
lista dell'ordine di arrivo avrà posizione 1 e cosi' via.
Dato un pilota deve essere possibile sapere quali gran premi ha
disputato, utilizzando il metodo getDisputati().
Dato un pilota deve essere possibile sapere quanti punti ha guadagnato
seguendo la seguente regola: 10 punti per ogni primo posto, 8 per ogni
secondo posto, 6 per ogni terzo, 5 per ogni quarto, 4 per ogni quinto,
3 per ogni sesto, 2 per ogni settimo, 1 per ogni ottavo. Il metodo getPunti() della classe Pilota
restituisce il punteggio del pilota.
Nella classe Campionato il metodo getClassifica()
restituisce la collezione dei piloti in ordine decrescente di punti.
R5 - Lettura da File
È possibile leggere le informazioni su piloti e gran premi (come
ai punti 1 e 2) tramite il metodo leggiInfo()
della classe Campionato, questo metodo riceve come parametro il path
del file da aprire.
Le informazioni sono organizzate per righe; ogni riga può
contenere informazioni relative ad un pilota o ad un gran premio.
La descrizione di un pilota inizia con la lettera "P" ed è
seguita da ":" e dal nome del pilota.
La descrizione di un gran premio inizia con la lettera "G" ed è
seguita da ":" e dal nome del gran premio (fino alla fine della linea).
Il nome
del gran premio può includere degli spazi.