Esame laboratorio di programmazione - Compito B
Parte I
Un territorio è stato diviso in zone, che a sua volta
possono essere composte da altre zone più piccole. Il
tuo compito è quello di realizzare delle classi che
servono a rappresentare queste zone. Vanno in particolare
rappresentate le seguenti classi:
- Zona
- una zona, che può essere solo o una zona semplice
oppure una zona composta
- ZonaSemplice
- di una zona semplice si vogliono rappresentare la sua
superfice (un reale) e l'insieme di strade che si trovano al
suo interno
- Strada
- ognuno di questi oggetti rappresenta un segmento di
strada che si trova all'interno di una zona; di questo
segmento vanno rappresentate la sua lunghezza e il nome
della strada a cui appartiene (una stringa)
- ZonaComposta
- una zona composta è composta da altre zone, che
possono essere sia semplici che composte
Queste classi vanno messe in un package geo. 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 double lunghezzaStrada(Zona z, String s)
- data una zona e il nome di una strada, calcola la
lunghezza totale, ossia il totale di tutti i segmenti che
hanno quella stringa come nome di strada
- static int valore(Zona z, Map<String, Integer> a)
- data una zona e un assegnamento che dice quanto è
il costo di realizzazione a km di ogni strada, calcola il
costo totale di tutte le strade della zona