Esame laboratorio di programmazione - Compito A
Parte I
Vanno realizzate delle classi per rappresentare dati relativi
a una struttura carceraria. In particolare, vanno realizzate
le classi che permettono la memorizzazione delle stanze
(celle, cucine, magazzini) Si realizzino le
seguenti classi:
- Locale
- un generico locale all'interno della struttura;
può essere una stanza oppure un passaggio (vedi
sotto)
- Stanza
- un locale non di passaggio, quindi
una cella, un magazzino, oppure una cucina; tutte le stanze
hanno un'area
- Cella, Cucina, Magazzino
- ogni oggetto di queste classi ha (oltre l'area), anche
rispettivamente: numero massimo di occupanti (cella), volume
(magazzino), numero di uscite di emergenza (cucina)
- Passaggio
- un qualsasi locale di passaggio (es. un corridoio); ogni
passaggio ha un singolo altro passaggio da cui si accede a
questo (null se si tratta dell'ingresso del
carcere) e un insieme di locali a cui questo passaggio
permette di accedere
Queste classi vanno messe in un package carcere. Tutte
le classi devono essere incapsulate e i loro oggetti non
modificabili. Non sono ammessi valori nulli, tranne dove è stato esplicitamente specificato che sono ammessi. 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:
- int superfice(Passaggio p)
- dato un passaggio, calcolare la superfice totale delle
celle a cui si accede da quel passaggio, direttamente o
attraverso altri passaggi
- Cella libera(Map occupate, Passaggio p)
- trovare una cella con almeno un posto libero; la mappa
indica il numero di carcerati attualmente in una cella; il
passaggio è l'ingresso del carcere e permette quindi
di accedere a tutti gli oggetti Cella; ritornare
null se non
ci sono celle libere