1. [20 punti] Si considerino i seguenti concetti: • Prodotto: ha un

Programmazione II - Matricole Pari
Appello 27/06/2014
Non è consentito usare libri o appunti.
Durata: 1,5 ore.
1.
[20 punti] Si considerino i seguenti concetti:
• Prodotto: ha un nome, una nazione di produzione, un codice numerico e un prezzo;
• Locazione: ha un settore e un indice che denota la posizione nel settore;
• Settore: ha un numero di posizioni che possono essere libere o assegnate;
• Item: è un prodotto con una locazione;
• Magazzino: ha un indirizzo, un insieme di item e un insieme di settori;
• WrongLocationCodeException: eccezione controllata;
• ItemNotFoundException: eccezione non controllata.
L’interfaccia pubblica di Magazzino deve fornire metodi per l’aggiunta di un prodotto,
restituzione di un prodotto, la cancellazione di un item e la ricerca di un prodotto.
Nell’aggiungere un prodotto bisogna assegnare una locazione disponibile.
La restituzione di un prodotto e la cancellazione di un item devono avvenire per locazione
(passando come parametro una locazione). Se la locazione non è tra quelle possibili del
magazzino allora deve essere lanciata un’eccezione WrongLocationCodeException.
La ricerca di un prodotto ha come parametro un prodotto e deve restituire una locazione a
cui è assegnato un prodotto equivalente (che contiene le stesse informazioni).
Se non viene trovato alcun prodotto equivalente, deve lanciare un’eccezione
ItemNotFoundException.
Gli oggetti di tipo Locazione devono essere immutabili.
Implementare in Java i concetti descritti sopra suddividendo nel codice sorgente i metodi
delle classi realizzate in metodi di accesso e metodi modificatori. Per indicare la categoria di
appartenenza utilizzare un commento all’inizio di ogni gruppo.
La soluzione proposta deve rispettare i requisiti della buona progettazione object-oriented e
utilizzare gli strumenti più opportuni del linguaggio Java.
2. [10 punti] Scrivere una classe di test adeguata per la classe Magazzino. La valutazione di
questo esercizio terrà conto della capacità del test proposto di coprire tutte le parti del codice di
Magazzino e del tracciamento delle operazioni (metodi invocati, oggetti istanziati, lancio di
eccezioni, etc. devono essere tutte riportate con messaggi in console).
Pag. 1