Esame laboratorio di programmazione - Compito A

Parte I

Vanno realizzate delle classi per rappresentare dati relativi a squadre di calcio. In particolare, vanno realizzate le classi che permettono la memorizzazione dei dati delle squadre stesse e dei loro dipendenti (calciatori, allenatori, medici). Si realizzino le seguenti classi:

Squadra
ha un nome (stringa), una data di fondazione (intero), e un insieme che contiene i suoi dipendenti (vedi sotto);
Dipendente
contiene nome, cognome, e codice fiscale (tre stringhe); può essere o un Calciatore, o un Allenatore, oppure un Medico; non sono previsti altri tipi di dipendenti
Calciatore
oltre ai dati dei dipendenti, va memorizzata la lista delle squadre in cui il giocatore ha precedentemente militato
Allenatore
oltre ai dati dei dipendenti, va memorizzato il numero di giornate per le quali l'allenatore è stato in carica fino al momento attuale
Medico
non vanno memorizzati altri dati oltre a quelli di tutti gli altri dipendenti

Queste classi vanno messe in un package squadre. Tutte le classi devono essere incapsulate e i loro oggetti non modificabili. Non sono ammessi valori nulli. Vanno realizzati i seguenti metodi in tutte le classi:

Parte II

In una classe al di fuori del package inserire i seguenti metodi:

Boolean incontro(Squadra a, Squadra b)
questo metodo ritorna true se qualche giocatore della squadra a ha precedentemente giocato per la squadra b
int totale(Squadra a, Map<Calciatore, Integer> i)
a partire dalla squadra a, si calcoli l'ingaggio totale dei suoi calciatori, dei calciatori delle squadre in cui avevano precedentemente giocato, ecc. La mappa contiene l'ingaggio di ogni calciatore.