FONDAMENTI DI INFORMATICA L-B - APPELLO DI PROVA DEL 19/03/2007
Specifiche
Si richiede di realizzare una classe (VideoNoleggio)
che rappresenta il sistema di gestione di una videonoleggio. Il vodeonoleggio può
gestire un numero massimo di film e per ogni film viene memorizzato il
titolo. La classe consente inoltre di gestire il noleggio dei film. Si suppone per
semplicità che esista solo una copia di ciascun film.
Tale classe dovrà consentire di:
- Specificare all'atto di creazione di un'istanza il
numero massimo di film che il videonoleggio può gestire (costruttore). E'
obbligatorio utilizzare azzera() per resettare lo stato dell'istanza.
- Resettare l'istanza annullando tutti i film presenti e tutti i noleggi (azzera()).
- Restituire la posizione in cui si trova un film di cui viene indicato il
titolo (cerca()). Le posizioni partono
da zero e si deve restituire -1 se il film cercato non è presente.
- Aggiungere un nuovo film specificandone il titolo (aggiungiFilm()).
Verificare che il titolo non sia già presente utilizzando cerca(): se il
film esiste già non bisogna aggiungerlo.
- Gestire il noleggio di un film (noleggiaFilm()). Bisogna verificare che
il film sia presente nel videonoleggio (usare cerca()) e che non sia già
stato noleggiato a qualcun altro. Se è tutto ok bisogna memorizzare il fatto
che il film viene noleggiato e restituire true. Se il film non esiste o
risulta già noleggiato bisogna restituire false.
- Gestire la restituzione di un film (restituisciFilm()). Bisogna verificare
che il film sia presente nel videonoleggio (usare cerca()) e che risulti
già noleggiato. Se è tutto ok bisogna memorizzare il fatto che il film è stato
restituito e ritornare true. Se il film non esiste o non risulta noleggiato bisogna restituire false.
- Restituire il numero totale di film gestiti dal videonoleggio (numFilm()).
Attenzione: è il numero di film inseriti con aggiungiFilm(), non il
numero massimo specificato nel costruttore.
- Restituire il numero di film che risultano noleggiati (numNoleggiati())
Diagramma UML
VideoNoleggio |
|
+VideoNoleggio(in
maxFilm: int)
+azzera()
#cerca(in titolo: String): int
+aggiungiFilm(in titolo: String)
+noleggiaFilm(in titolo: String): boolean
+restituisciFilm(in titolo: String): boolean
+numFilm(): int
+numNoleggiati(): int |
Programma esempio
public class EsempioNoleggio
{
public static void main(String args[])
{
VideoNoleggio v = new VideoNoleggio(1500); // Massimo 1500 film
v.aggiungiFilm("Via col vento");
v.aggiungiFilm("Brancaleone alle crociate");
v.aggiungiFilm("Amarcord");
v.aggiungiFilm("Effetto notte");
v.aggiungiFilm("Il cielo sopra Berlino");
v.aggiungiFilm("Lo chiamavano Trinità");
v.aggiungiFilm("Fitzcarraldo");
v.aggiungiFilm("Finalmente domenica");
v.noleggiaFilm("Amarcord");
v.noleggiaFilm("Effetto notte");
v.noleggiaFilm("Via col vento");
v.noleggiaFilm("Lo chiamavano Trinità");
v.restituisciFilm("Amarcord");
System.out.println("Film totali: "+v.numFilm());
System.out.println("Film noleggiati: "+v.numNoleggiati());
}
}