Esame laboratorio di programmazione - Compito B

Parte I

Vanno realizzate dell classi che rappresentino dati relativi ad una rete fognaria. Si suppone che le condutture si colleghino fra loro soltanto ai pozzetti. Ogni pozzetto ha una sola conduttura di uscita. Si realizzino le seguenti classi:

Conduttura
per ogni conduttura vengono memorizzate la lunghezza e il pozzetto di partenza e di arrivo; si usa il valore null come pozzetto di uscita per indicare che la conduttura scarica al di fuori della rete
Pozzetto
per ogni pozzetto vengono rappresentate le sue coordinate (due interi), l'insieme delle condutture entranti e la (singola) conduttura uscente
Allaccio
un allaccio è un punto in cui la fognatura di un edificio si collega alla rete fognaria; esisono due tipi di allacci, ma in ogni caso va memorizzato l'indirizzo (una stringa) dell'edificio
AllaccioConduttura
è un allaccio che è stato fatto su una conduttura; va memorizzata la conduttura e il punto di allaccio in termini di distanza dall'inizio della conduttura
AllaccioPozzetto
è un allaccio su un pozzetto; in questo caso va memorizzato soltanto il pozzetto

Queste classi vanno messe in un package fogna. Tutte le classi devono essere incapsulate e i loro oggetti non modificabili. Non sono ammessi valori nulli. 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 stessaUscita(Allaccio a, Allaccio b)
dati due allacci, determinare se scaricano nella stessa conduttura di uscita
static int quantiAllacci(Conduttura c)
data una conduttura di uscita calcolare quanti allacci esistono sulla rete che scarica in essa