Esame laboratorio di programmazione - Compito C
Parte I
Un programma è una sequenza di eventi. Ogni evento
può essere a sua volta un evento elementare oppure un
programma. Si realizzino le seguenti classi per
rappresentare oggetti di questo tipo.
- Programma
- Una sequenza di eventi, con un nome (una stringa)
- Evento
- Può essere un evento semplice oppure composto
- EventoSemplice
- è dato da un nome e una durata
- EventoComposto
- è un programma
Notare che Programma non è sottoclasse di
Evento.
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(Programma 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 durata(Programma p, Map<EventoSemplice, Integer> a)
- calcolare la durata totale del programma; la mappa
contiene le durate di alcuni eventi semplici, non
necessariamente di tutti; per gli altri eventi usare la
durata riportata nell'oggetto