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:

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