Corso di Interfacce Utente - A.A. 2007-2008

PROGETTO DI LABORATORIO

Vedere la pagina principale del progetto per gli altri documenti.

Classi per l'applicazione "Mappe stradali interattive"

L'applicazione e' implementata dalle seguenti classi Java:

  1. Punto:
    Implementa un punto nel piano con le due coordinate x,y ed alcune operazioni geometriche di utilita'.
  2. Snodo:
    Sotto-classe di Punto, implementa uno snodo della mappa.
    In questa implementazione e' identico al punto (la sotto-classe non aggiunge nulla) ma in generale potrebbero essere aggiunte delle informazioni.
  3. SegmentoVia:
    Implementa un segmento di via con i due snodi estremi, lo spessore, il nome della via e i due intervalli di numeri civici pari e dispari. Ha anche funzioni di utilita' anche geometriche.
  4. Infrastruttura:
    Implementa un'infrastruttura con tipo (in un insieme predefinito di tipi), nome, e indirizzo costituito da segmento di via con numero civico. Contiene anche funzioni di classe per manipolare le rappresentazioni dei tipi sotto forma di stringhe.
  5. EntitaConNome:
    Interfaccia implementata sia da SegmentoVia che da Infrastruttura. Entrambe infatti hanno un nome.
  6. Mappa:
    Implementa la mappa, internamente ha un vettore di snodi, uno di segmenti di vie e uno di infrastrutture. Ha anche funzioni di lettura da file e scrittura su file.
  7. MyReader:
    Implementa alcune funzioni di utilita' per lettura e scrittura. Attenzione: e' leggermente diversa dalla classe omonima che avete ricevuto tra il materiale dei laboratori guidati.
    E' usata nella classe Mappa per leggere, nel progetto non dovreste aver bisogno di usarla direttamente.

Per dettagli vedere la documentazione e i sorgenti Java:

  1. Punto e Punto.java
  2. Snodo e Snodo.java
  3. SegmentoVia e SegmentoVia.java
  4. Infrastruttura e Infrastruttura.java
  5. EntitaConNome e EntitaConNome.java
  6. Mappa e Mappa.java
  7. MyReader e MyReader.java

Nota:
Queste classi sono da usare "a scatola chiusa" senza modificarle.

Sintassi dei file e alcuni esempi di mappe

La sintassi di un file che contiene una mappa a' la seguente.
In stampatello le parole chiave e in corsivo i valori, preceduti da indicazione del loro tipo (dove "stringa" e' una sequenza di caratteri non contenente spazi, mentre "stringa_con_spazi" ne puo' contenere):

Intestazione NumPunti: int_numero_punti
NumSegmenti: int_numero_segmenti
NumInfra: int_numero_infrastrutture
Elenco dei punti
(queste informazioni per ogni punto)
Punto:double_x double_y
Elenco dei segmenti di vie
(queste informazioni per ogni segmento)
Via: [stringa_con_spazi_nome] int_indice_1 int_indice_2 double_spessore int_min_pari int_max_pari int_min_dispari int_max_dispari
Elenco delle infrastrutture
(queste informazioni per ogni infrastruttura)
Infra: [stringa_con_spazi_nome] [stringa_con_spazi_tipo] [stringa_con_spazi_nome_via] int_numero_civico

Nota bene:
La classe Mappa contiene gia' le funzioni di lettura, per cui a voi non e' necessario comprendere la sintassi dei file mappa, a meno che non ne vogliate scrivere alcuni voi.

Esempio con una sola via costituita da due segmenti, e due infrastrutture:

NumPunti: 3
NumSegmenti: 2
NumInfra: 2
Punto: 67.6 16.2
Punto: 29.4 30.0
Punto: 18.4 49.5
Via: [Giuseppe Mazzini]  0 1  0.9   2 6   1 5
Via: [Giuseppe Mazzini]  1 2  1.0   8 16   7 11
Infra: [Archelogico] [Museo] [Giuseppe Mazzini] 4
Infra: [Posta centrale] [Ufficio postale] [Giuseppe Mazzini] 7

Altri esempi (artificiali come il precedente):