Esame laboratorio di programmazione - Compito A

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 edifici che si trovano all'interno di essa
Edificio
di un edificio si rappresentano le sue coordinate (x,y) e la sua altezza
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 boolean verificaDivisioni(Zona z)
verifica che in una zona composta che si trova all'interno di una zona composta che si trova all'interno di una zona composta non contenga a sua volta delle zone composte
static int valore(Zona z, Map<Edificio, Integer> a)
data una zona e un assegnamento che dice quanto valgono gli edifici, questo metodo calcola il valore totale degli edifici della zona