Esame laboratorio di programmazione - Compito B

Parte I

Vanno realizzate dell classi che rappresentino dati relativi a gestori di telefonia mobile. Ogni gestore divide la sua rete in reti più piccole, che possono a loro volta essere ulteriormente suddivise in altre reti. Le reti che non sono suddivise in altre reti contengono delle celle. Si realizzino le seguenti classi:

Gestore
Un gestore è caratterizzato da una stringa (il suo nome), ed ha un elenco delle sue reti che gestisce.
Rete
Una rete è caratterizzata dal un suo codice identificativo (una stringa); una rete può essere di due tipi: ReteComposta, che contiene al suo interno altre reti; e ReteCelle, che contiene al suo interno delle celle
Cella
Una cella è caratterizzata dalle sue coordinate e dalla lista dei numeri dei cellulari che attualmente risultano trovarsi all'interno della cella
Numero
Per ogni numero di telefono vanno memorizzati il numero stesso (come intero) e una stringa che indica l'intestatario.

Queste classi vanno messe in un package mobi. Tutte le classi devono essere incapsulate e i loro oggetti non modificabili. Non sono ammessi valori nulli. Vanno realizzati i seguenti metodi in tutte le classi:

Parte II

In una classe al di fuori del package inserire i seguenti metodi:

boolean cellaMultiple(Gestore g, int numero)
ritorna true se il numero risulta presente in due o più celle; notare che viene dato un intero, e non un oggetto Numero
Point coordinata(Gestore g, int numero)
dato un numero, calcola le coordinate della cella in cui si trova; se il numero non si trova in nessuna cella oppure in più di una, restituire null