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:
- 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 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