Prova al calcolatore

Compito B
Durata: 1:45

Prima parte

Il "Centro Musicologico Tromba di Eustachio", che mantiene cataloghi delle opere dei principali compositori, vuole informatizzare il suo archivio. A questo scopo, va realizzata una classe Composizione. I dati di ogni composizione sono i seguenti:

autore
una stringa che contiene il nome del compositore
nome
una stringa che contiene il nome della composizione
tonalita
una stringa che contiene la tonalità della composizione
anno
anno in cui la composizione è stata scritta (un int)

Si realizzi la classe Composizione, le cui componenti (variabili di istanza) sono nome, opera, tonalita, anno. La classe deve avere un costruttore a 4 argomenti e metodi get e set per ogni componente. Si realizzino anche i metodi toString ed equals.


Seconda parte

Per gestire i cataloghi delle composizioni, si vogliono memorizzare i dati relativi alle composizioni in catalogo. A questo scopo, si realizzi la classe Catalogo; per ogni catalogo, va rappresentato l'insieme delle composizioni, usando un array, oppure una LinkedList, oppure una Lista, oppure un HashSet. I metodi da implementare sono i seguenti:

static Composizione readComposizione(BufferedReader br)
legge i dati di una composizione dal BufferedReader passato come argomento: ritorna un oggetto Composizione con questi dati, oppure null se non è stato possibile leggere i dati perchè il file è finito;
Catalogo(String nomefile)
il costruttore ha come parametro il nome di un file che contiene i dati di un catalogo: i dati delle composizioni contenute nel file vengono letti e memorizzati nella struttura dati usata per la loro memorizzazione
void stampaComposizioni(String autore, int annoIniziale, int annoFinale)
stampa su schermo i dati di tutte le composizioni in catalogo dell'autore specificato dal parametro autore che siano state composte tra annoIniziale e annoFinale (compresi).
Composizione composizionePiuVecchia(String tonalita)
restituisce la composizione più vecchia in catalogo che abbia la tonalità specificata dal parametro tonalita. Se il catalogo non contiene alcuna composizione con quella tonalità, restituire null.