Esame laboratorio di programmazione - Compito D
Parte I
Si deve realizzare un sistema per la gestione di festival. A
livello di progettazione è stato deciso di
rappresentare ogni punto del programma come un evento, che
però può essere anche una sequenza di altri
eventi.
Vanno rappresentate le seguenti classi
- Evento
- Può essere un evento semplice oppure composto
- EventoSemplice
- è dato da un nome e una durata; può essere
solo di uno dei due tipi descritti qui sotto
- Concerto
- È un tipo di evento semplice; oltre al nome e
alla durata, viene specificato il numero di pezzi che
vengono eseguiti
- Proiezione
- È il solo altro evento semplice da considerare;
oltre ai dati degli eventi generali, viene memorizzato un
campo booleano che indica se il regista sarà
presente alla proiezione
- EventoComposto
- è una sequenza di altri eventi
Queste classi vanno messe in un package eventi. Tutte
le classi devono essere incapsulate e i loro oggetti non
modificabili. Specificare dove si ammettono valori nulli (se
si ammettono). Vanno realizzati i seguenti metodi in tutte
le classi:
- costruttore e metodi get
- metodi standard toString, equals,
hashCode e clone (che realizza la
clonazione profonda)
Parte II
In una classe al di fuori del package inserire i seguenti
metodi:
- static boolean verificaEventi(Evento p)
- verificare che gli eventi che fanno parte di eventi che
fanno parte di altri eventi non contengono a loro volta
degli eventi composti
- static int quantiRegisti(Evento p, Map<Proiezione, Boolean> a)
- calcolare quante proiezioni sono previste avere il
regista; usare il dato della mappa se presente, altrimenti
quello memorizzato nell'oggetto Proiezione