Progettino

L'obiettivo del progettino è implementare un piccolo sistema per gestire le prenotazioni di sale da concerto.

Una sala da concerto è composta di un insieme di settori. Un settore è una classe astratta che contiene un nome. Le sotto-classi di settore sono

Un settore libero ha una data capacità e un prezzo. Per esempio
  Sector p = new FreeSector("P", 10, 100);
crea un settore libero di cento posti al prezzo singolo di 10 euro.

Un settore con posti a sedere ha un prezzo e una geometria definita da tre interi. Per esempio con

  Sector a = new SeatedSector("A", 15, 10, 20, 27, 2);
si crea un settore con posti assegnati che ha 10 file. La prima fila ha 20 posti, la seconda 22, la terza 24, la quarta 26, la quinta 27, la sesta 27, ... l'ultima 27. Si può anche creare direttamente un settore rettangolare con
  Sector b = new SeatedSector("B", 10, 20, 20);

Un settore composito si crea dando la lista dei suoi sotto-settori. Per esempio

  Sector c = new SeatedSector("C", 15, 10, 20, 27, 2);
  Sector t = new ComposedSector("T", new Sector[] {a, b, c});
crea un settore T composito con tre sotto-settori A B e C.

Infine una sala viene creata dando la lista dei suoi settori. Per esempio

  Hall h = new Hall(new Sector[] {p, t});
Un biglietto ha un prezzo, un indirizzo di settore e un indirizzo di posto.

Un indirizzo di settore SectorLocation è una classe astratta. Può essere un nome di settore SectorName o un sotto-settore SubSector.

Un indirizzo di posto SeatLocation è una classe astratta. Può essere libera Open per un settore senza posto assegnato o essere assegnato Seat. Per esempio:

Ticket t1 = new Ticket(10, new SectorName("P"), new Open());
crea un biglietto di 10 euro nel settore P senza assegnamento.
Ticket t2 = new Ticket(20, new SubSector("T", new SectorName("B")), new Seat(1, 10));
Definire nella classe Hall e nella classe Sector (i metodi della classe Hall devono utilizzare quelli della classe Sector).

Per un settore con posto assegnato, la strategia d'assegnazione è di partire sempre dalla prima fila fino all'ultima e di proporre unicamente posti accanto nella stessa fila (se il numero dei posti supera la capacità di una singola fila si possono proporre solamente posti su file consecutive) ma in modo tale da non lasciare mai un posto unico libero all'inizio o alla fine di una fila. La strategia deve anche accomodare il fatto che i biglietti possono essere restituiti.

Fornire un insieme di esempi che permettono di testare il progettino.

Netbeans

Se si utilizza netbeans per sviluppare il progetto:

Per avere le parentesi {} sotto netbeans con la tastiera italiana, fare unzip di patch-kb.zip sotto ~/.netbeans/X.X/system (Linux) o C:\Documents and Settings\NOME\.netbeans\X.X\system (Window) dove X.X è il numero della versione di netbeans istallata e NOME il nome utente. Questo dovrebbe creare una sotto directory Editors sotto system. Adesso rieseguendo netbeans, i tasti F11 e F12 dovrebbero permettere di avere le parentesi.

Per verificare la conformità del progetto, si può usare nbcheckstyle. Vedere la sessione Installation per l'istallazione.


Laurent Théry
Last modified: Thu Feb 19 13:00:25 MET 2004