Fondamenti di Informatica LB - anno 2002/2003

Esercitazione 04: "Biglietteria Elettronica"


Data: 21 Maggio 2003

Questo documento fa parte del materiale impacchettato nel file es04.jar che si trova sul sito di Fondamenti di Informatica LB


Descrizione dell'esercitazione

Il teatro Verdi di Cesena commissiona alla software house ACME la realizzazione di un prototipo di biglietteria elettronica, per permettere la prenotazione e acquisto di biglietti per determinati spettacoli sia da postazioni dedicate, sia da Internet.
Il teatro conta di 33 posti numerati (da 1 a 33).
I servizi messi a disposizione da una biglietteria elettronica sono di due categorie, per utenti e per gestori.
In generale il gestore vuole avere la possibilità di inserire gli spettacoli disponibili; ad un utente invece devono essere forniti servizi per prenotare posti relativi ad uno spettacolo e, dopo aver prenotato, procedere all'acquisto dei biglietti.
Quindi per il gestore devono esser foniti come servizi:

Per gli utenti devono esser foniti come servizi:

La nostra biglietteria elettronica dovrà fornire entrambe le categorie di servizi, la prima categoria utilizzata dai gestori per inserire nuovi spettacoli, la seconda utilizzata dagli utenti per prenotare e acquistare i biglietti.

Alcuni progettisti nottambuli della ACME software house hanno già progettato e sviluppato le interfacce che rappresentano le due categorie di servizi:

Quindi obiettivo dell'esercitazione è sviluppare l'astrazione di biglietteria elettronica avendo a disposizione le due interfacce viste, fornendo quindi funzionalità sia per la prenotazione e acquisto biglietti (lato utente), sia per l'inserimento di spettacoli (lato gestore). Al solito si richiede anche di fornire un componente software che ne testi il comportamento.

Per i test da fare, considerare come esempio i test descritti nel componente software fornito nel materiale, TestTheatre (sorgente src/es04/TestTheatre.java e compilato build/es04/TestTheatre.class). Tale componente software esegue un insieme di test a partire da una implementazione della biglietteria rubata ad un'altra software house, di cui possediamo solo il compilato. La classe in questione si chiama TheatreService, sappiamo che implementa entrambe le interfacce TicketService e SpectacleTheatre, e ne possediamo solo il file class (file es04/build/TheatreService), utilizzato dal componente software fornito.

Note importanti

Facoltativo (A)

Si vogliono estendere i servizi forniti agli utenti includendo anche la possibilità di cancellare una prenotazione effettuata in precedenza. Dunque oltre al servizio per prenotare posti di uno spettacolo e per acquistare successivamente i biglietti, si vuole aggiungere un servizio cancella prenotazione. Come per il servizio di acquisto biglietti, tale servizio avrà bisogno come parametro di ingresso di una prenotazione e restituirà un successo o un fallimento a seconda che sia o meno possibile disdire la prenotazione (non è possibile disdire una prenotazione se la prenotazione è già stata utilizzata per acquistare i biglietti).

Obiettivo del punto facoltativo è quindi riusare / estendere quanto sviluppato al punto precedente (...inclusa una delle interfacce fornite...) al fine di realizzare una biglietteria che offra anche questo servizio. Fornire anche un componente software di testing per la nuova biglietteria.

Facoltativo (B) - in alternativa

Si vuole che la biglietteria mantenga traccia su un file di testo service.txt di tutte le operazioni di prenotazione e acquisto effettuate dagli utenti. Ciò significa che ogni volta viene effettuata una prenotazione, sul file di testo deve esser aggiunta come informazione

Sono stati prenotati XX posti per lo spettacolo YYYYY. Prenotazione: ZZZZ

Mentre ogni volta che viene effettuato un acquisto, devono essere aggiunta una informazione tipo

Sono stati acquistati i biglietti relativi alla prenotazione ZZZZ