Prova al calcolatore

Compito D
Durata: 1:45

Prima parte

La catena di enoteche ``Nonsolovini'' vuole realizzare un programma di memorizzazione dei dati relativi ai magazzini. A questo scopo, va realizzata la classe Annata, che rappresenta i dati relativi alle bottiglie di un certo vino e di una certa annata. Per ogni annata, vanno memorizzati i seguenti dati:

nome
nome del vino (una stringa)
produttore
il nome del produttore del vino (una stringa)
anno
l'anno in cui il vino è stato prodotto (un intero)
gradazione
la gradazione alcolica del vino (un reale)

Si realizzi la classe Annata, le cui componenti (variabili di istanza) sono nome, produttore, anno, gradazione. La classe deve essere incapsulata, ossia deve avere tutte le variabili di istanza private e i tutti i metodi get e set. Deve essere realizzato anche un costruttore con quattro argomenti, e i metodi toString ed equals


Seconda parte

È necessario realizzare la classe che rappresenta l'insieme di tutte le annate di tutti i tipi di vino vendute da una enoteca della catena. A questo scopo, si realizzi la classe Enoteca; un oggetto di questa classe rappresenta un insieme di oggetti Annata usando un array, oppure una LinkedList, oppure un HashSet oppure una Lista. I metodi da implementare sono i seguenti:

static Annata readAnnata(BufferedReader br)
legge i dati di una annata dal BufferedReader passato come argomento: ritorna un oggetto Annata con questi dati, oppure null se non è stato possibile leggere i dati perchè il file è finito;
Enoteca(String nomefile)
il costruttore ha come parametro il nome di un file: i dati delle annate contenute nel file vengono lette e memorizzate nella struttura dati usata per la loro memorizzazione
boolean gradiOk()
per effettuare il controllo di qualità, si vuole verificare se tutti i vini hanno gradazione alcolica compresa fra 5 e 12,5; questo metodo restituisce true se questa condizione è vera per tutte le annate
double mediaGradi(String nome)
calcola la gradazione alcolica media per tutte le annate di un vino il cui nome viene passato come parametro