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:

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