Esercizio di esame
Si vogliono gestire le informazioni relative a moli ai quali possono essere attraccate
delle barche. Ogni barca è rappresentata dal suo nome (una stringa). Un
Molo ha un codice (una stringa) ed un numero fissato di posti barca,
numerati sequenzialmente a partire da 0. Ogni posto barca può essere libero
oppure occupato da una barca. Gli oggetti Molo supportano le seguenti
funzionalità:
- crea: che dato un codice c (una stringa) ed un intero
n crea un oggetto Molo con codice c
contenente n posti barca inizialmente liberi;
- numPostiBarca: che restituisce il numero di posti barca del
molo;
- libero: che dato il numero n di un posto barca
restituisce true se il posto n è libero, false
altrimenti;
- assegnaPostoBarca: che dato il numero n di un posto
barca ed il nome b di una barca (una stringa), occupa il posto
n con la barca b, se il posto è libero, lancia
un'eccezione altrimenti;
- liberaPostoBarca: che dato il numero n di un posto
barca rende il posto n libero;
- dammiBarca: che dato il numero n di un posto barca,
restituisce il nome della barca che occupa il posto n, se questo
è occupato, lancia un'eccezione altrimenti;
- dammiUnPostoLibero: che restituisce il numero di un qualsiasi
posto barca libero; se non ci sono posti barca liberi allora
restituisce -1;
- compattaBarche: che modifica l'assegnazione dei posti barca alle
barche che occupano il molo in modo che tutti i posti fino ad un certo
numero siano occupati e tutti i rimanenti siano liberi.
Domanda 1. Scrivere una classe Java Molo
per
rappresentare oggetti Molo.
Domanda 2. Realizzare un metodo statico
situazionePostiBarca
cliente della classe Molo
che,
dato un molo m restituisca un array a di booleani di
dimensione pari al numero di posti barca presenti in m e tale che il
valore in posizione i dell'array sia pari a true
se il
posto barca numero i di m è occupato da una barca,
false
altrimenti.
Domanda 3. Descrivere la rappresentazione collegata di alberi
binari. Scrivere in Java un metodo statico per la visita in preordine di un
albero binario rappresentato in modo collegato, che ad ogni passo stampa l'informazione
associata ad un nodo (si assuma che tale informazione sia semplicemente una
stringa). Illustrare il risultato dell'esecuzione del metodo su di un albero
di esempio di almeno 10 nodi.