Università degli Studi di Milano – Bicocca Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Laboratorio di Progettazione Agenzia di viaggi on line A cura di: Arosio Gaia Cattaneo Francesco Prandi Alessandro 044402 041106 043110 [email protected] [email protected] [email protected] Fase 1 - Analisi Analisi dei requisiti (1 di 2) L’agenzia di viaggi ha un sito web, col quale gli utenti interagiscono Il sito è organizzato in pagine Ogni pagina contiene informazioni generiche riguardanti promozioni per i viaggi e la possibilità di effettuare ricerche avanzate (dove, quando, a quale costo...) Gli utenti si possono registrare per accedere a determinati servizi offerti dall’agenzia Se l’utente è registrato e loggato può prenotare un viaggio Una volta prenotato il viaggio è necessario effettuare il pagamento – Con bonifico – Con carta di credito Sul sito è presente un gestore di informazioni (recommender system) che esamina il comportamento degli utenti, memorizzando: – Ricerche effettuate – Prenotazioni effettuate Analisi dei requisiti (2 di 2) In base agli interessi espressi dall’utente, il gestore può: – Inviare e-mail ad ogni singolo utente presentando offerte elaborate sulla base del suo comportamento durante la navigazione nel sito – Personalizzare l’homepage per ogni singolo utente presentando offerte che più si addicono ai gusti espressi dall’utente Gli addetti dell’agenzia possono visualizzare le informazioni raccolte dal gestore informazioni Una volta ricevuti gli estremi del pagamento per un viaggio, l’agenzia provvede ad inviare i biglietti e tutte le informazioni necessarie all’utente via posta Use Case Diagrams ud Utenti •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••• Registrazione •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••• Inv ia mail •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••• Utente Non Registrato •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••• Nav iga nel sito •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••• Ricerca av anzata extension points: ricerca «extend» •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••• Bonifico •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••• Prenota Pagamento «include» •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••• Utente Registrato «include» Carta di credito •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••• •••••••••••••••••••••••••• •••• Autenticazione •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••• •••••••••••••••••••••••••• •••••••••••••••••••••••• ud Agenzia •••••••••••••••••••••••••• •••••••••••••••••••••••• Visualizza •••••••••••••••••••••••••• •••••••••••••••••••••••• informazioni raccolte •••••••••••••••••••••••••• •••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••• Pagamento Agenzia Utente registrato •••••••••••••••••••••••••• •••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••• Inv io biglietti •••••••••••••••••••••••••• •••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••• ud Gestore info •••••••••••••••••••••••••• •••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••• Nav iga nel sito •••••••••••••••••••••••••• •••••••••••••••••••• «include» Raccogli informazioni •••••••••••••••••••••••••• •••••••••••••••••••• «include» Prenota •••••••••••••••••••••••••• •••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••• Inv ia mail Gestore informazioni •••••••••••••••••••••••••• •••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••• Homepage personalizzata •••••••••••••••••••••••••• •••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••• ud Generale •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••• Registrazione •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••• Inv ia mail •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••• Utente Non Registrato Ricerca •••••••••••••••••••••••••• •••••••••••••••••••••••••• av anzata •••••••••••• Nav iga nel sito «extend» •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••• extension points: ricerca «include» Raccolta Informazioni •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••• «include» Inv ia mail •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••• Prenota Gestore Informazioni •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••• Utente Registrato Homepage «include» «include» personaliz •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••• Bonifico •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••• Autenticazione Pagamento Carta di •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••• credito •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••• Inv io biglietti •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••• Agenzia •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••• Visualizza info raccolte •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••• Scenario Login utente Sommario: il sistema autentica l’utente Attore: utente registrato Precondizioni: in sistema attende che l’utente inserisca login e password Svolgimento: 1. l’utente inserisce la propria username e la password e procede con l’autenticazione 2. il sistema controlla che username e password corrispondano 3. se i parametri sono corretti l’utente viene loggato e vengono messe a sua disposizione le funzionalità proprie degli utenti registrati Svolgimento alternativo: 3a. se i parametri non sono corretti il sistema comunica la mancata autenticazione e rimanda alla pagina di login Postcondizioni: l’utente è stato autenticato Scenario Prenotazione viaggio (1 di 2) Sommario: l’utente ricerca un viaggio e ne effettua la prenotazione Attore: utente registrato Precondizioni: l’utente richiede di visualizzare i dettagli di un viaggio per poterlo prenotare Svolgimento: 1. l’utente inserisce i criteri di ricerca del viaggio e procede con la ricerca 2. il sistema verifica se sono presenti uno o più viaggi con i criteri di specificati 3. il sistema mostra i viaggi che soddisfano le richieste dell’utente 4. l’utente decide di prenotare uno dei viaggi mostratigli e, dopo aver inserito i dati necessari, prosegue con la prenotazione 5. il sistema verifica se l’utente è loggato 6. il sistema verifica se il viaggio ha ancora posti disponibili 7. viene comunicata l’avvenuta prenotazione Scenario Prenotazione viaggio (2 di 2) Svolgimento alternativo: 3a. non sono presenti viaggi che soddisfano le richieste: il sistema chiede all’utente di modificare i criteri 5a. l’utente non è loggato: il sistema segnala all’utente che è necessaria l’autenticazione 6a. non ci sono posti disponibili: viene segnalata all’utente l’assenza di posti Postcondizioni: il viaggio è stato prenotato dall’utente Class Diagram cd Class Diagram •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• partenza Utente ricerca * 0..* Luogo Viaggio arrivo - idUtente: String - nome: String - costo: float •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• + + prenota() : void paga() : void partenza Data •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• arrivo 0..* - giorno: String data: Date •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• 0..* UtenteRegistrato - cognome: String nome: String codFiscale: String indirizzo: String userName: String password: String eMail: String 1 1 •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• * •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• Prenotazione 1..* - 1..* dataPagamento: Date Trasporto Alloggio •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• organizza + login() : void •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• raccoglieInfo 1 •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• Agenzia GestoreInfo •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• State Diagrams sm Utente •••••••••••••••••••••••••• ••••••••••••••••••••• leggi /valuta •••••••••••••••••••••••••• [valutazione negativa]••••••••••••••••••••• Osserv azione Ricerca in corso visualizza risultati •••••••••••••••••••••••••• ••••••••••••••••••••• esci [valutazione positiva] •••••••••••••••••••••••••• ••••••••••••••••••••• Prenotazione •••••••••••••••••••••••••• ••••••••••••••••••••• [annullamento] •••••••••••••••••••••••••• ••••••••••••••••••••• [pagamento] •••••••••••••••••••••••••• ••••••••••••••••••••• Pagamento •••••••••••••••••••••••••• ••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••••••••••• sm Viaggio •••••••••••••••••••••••••• ••••••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••••••••••• Pagato Libero Prenotato •••••••••••••••••••••••••• ••••••••••••••••••••••••• [disp==true] /prenota [pagamento] •••••••••••••••••••••••••• ••••••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••••••••••• [annulla prenotazione] •••••••••••••••••••••••••• ••••••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••••••••••• Activity Diagrams Utente Agenzia GestoreInfo •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• ••••••••••••••••••••••••••!gestoreAttivo •••••••••••••••••••••••••• ••• Nav iga nel sito gestoreAttivo •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• Raccogli info nav igazione •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• !esci !prenota esci •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• prenota loggato •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• ! loggato •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• Login •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• Inserimento dati •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• [bonifico] [else] !gestoreAttivo •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• Verifica pagamento gestoreAttivo Paga con Paga con •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• bonifico carta Raccogli info prenotazione •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• Inv io biglietti •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• ••• Fase 2 - Design Class Diagrams •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••• Alloggio Luogo - nazione: String città: String + setLuogo(String, String) : void - tipoAlloggio: String nomeStruttura: String indirizzo: String stelle: int descrizione: String sitoweb: String numPostiAlloggio: int •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••• + getLuogo() : Luogo •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••• Viaggio Data - idViaggio: double •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••• + setAlloggio(String, String, String, int, String, String, int) : void - luogoPartenza: Luogo - giorno: int - anno: int mese: int day: String ore: int minuti: int + + + + + setData(int, int, int, String, int, int) : void getDataEU(int, int, int) : String getDataUS(int, int, int) : String getOra(int, int) : String getSystemDate() : String - luogoArrivo: Luogo dataPartenza: Data dataArrivo: Data costo: float alloggio: Alloggio[ ] trasporto: Trasporto[ ] disponibilità: int + getAlloggio() : Alloggio •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••• Trasporto - codice: String •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••• - tipoTrasporto: String - compagnia: String numPostiTrasporto: int + + setTrasporto(String, String, String, int) : void getTrasporto() : Trasporto •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••• GestioneViaggio •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••• + visualizzaViaggio(double) : Viaggio + + + + + + + + + ricercaViaggioPerDataPartenza(Data) : idViaggio[ ] ricercaViaggioPerDataArrivo(Data) : idViaggio[ ] ricercaViaggioPerLuogoPartenza(Luogo) : idViaggio[ ] ricercaViaggioPerLuogoArrivo(Luogo) : idViaggio[ ] ricercaViaggio(Data, Data, Luogo, Luogo, Trasporto[ ], Alloggio[ ]) : idViaggio[ ] aggiungiViaggio(Luogo, Luogo, Data, Data, float, Alloggio[ ], Trasporto[ ], int) : idViaggio checkDisponibilità(double) : boolean eliminaViaggio(double) : boolean aggiornaDisponibilità(double) : int •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••• DBViaggi •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••• cd Utente •••••••••••••••••••••••••• UtenteRegistrato •••••••••••••••••••••••••• - idUtente: double cognome: String nome: String codFiscale: String indirizzo: String username: String pwd: String email: String loggato: boolean numCartaCredito: int numContoCorrente: String •••••••••••••••••••••••••• •••••••••••••••••••••••••• Utente - idUtente: double •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• GestioneUtenteRegistrato •••••••••••••••••••••••••• •••••••••••••••••••••••••• + visualizzaUtente(double) : Utente + + + + + + + ricercaUtentePerCognome(String) : idUtente[ ] ricercaUtentePerCodfiscale(String) : idUtente ricercaUtentePerUsername(String) : idUtente aggiungiUtente(String, String, String, String, String, String, String, boolean, int, String) : idUtente eliminaUtente(double) : boolean login(String, String) : void checkLogin(String, String) : boolean •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• DBUtenti •••••••••••••••••••••••••• •••••••••••••••••••••••••• cd Prenotazione •••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• GestioneUtenteRegistrato + visualizzaUtente(double) : Utente + + + + + + ricercaUtentePerCodfiscale(String) : idUtente ricercaUtentePerUsername(String) : idUtente aggiungiUtente(String, String, String, String, String, String, String, boolean, int, String) : idUtente eliminaUtente(double) : boolean login(String, String) : void checkLogin(String, String) : boolean •••••••••••••••••••••••• +•••••••••••••••••••••••••• •••••••• ricercaUtentePerCognome(String) : idUtente[ ] Prenotazione - idPrenotazione: double •••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• - dataPrenotazione: Data - dataScadenza: Data pagata: boolean idUtente: double idViaggio: double numPersone: int descrizione: String + + + + + + + + + prenota(double, double, int, String) : idPrenotazione cancellaPrenotazione(double) : boolean cercaUtente(double) : idPrenotazione[ ] cercaUtente(String) : idPrenotazione[ ] cercaViaggio(double) : idPrenotazione[ ] cercaViaggio(Luogo) : idPrenotazione[ ] cercaViaggio(Data) : idPrenotazione[ ] salda(double, int) : void salda(double, String) : void •••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• •••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• GestioneViaggio visualizzaViaggio(double) : Viaggio •••••••••••••••••••••••• ++•••••••••••••••••••••••••• •••••••• ricercaViaggioPerDataPartenza(Data) : idViaggio[ ] + + + + + + + + ricercaViaggioPerDataArrivo(Data) : idViaggio[ ] ricercaViaggioPerLuogoPartenza(Luogo) : idViaggio[ ] ricercaViaggioPerLuogoArrivo(Luogo) : idViaggio[ ] ricercaViaggio(Data, Data, Luogo, Luogo, Trasporto[ ], Alloggio[ ]) : idViaggio[ ] aggiungiViaggio(Luogo, Luogo, Data, Data, float, Alloggio[ ], Trasporto[ ], int) : idViaggio checkDisponibilità(double) : boolean eliminaViaggio(double) : boolean aggiornaDisponibilità(double) : int •••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• •••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• •••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• •••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• •••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• DBPrenotazioni •••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• •••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• •••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• Sequence Diagrams •••••••••••••••••••••••••• ••••••••••••••••••••••••• sd Inserimento Viaggio Browser GestioneViaggio DBMS •••••••••••••••••••••••••• ••••••••••••••••••••••••• Agenzia •••••••••••••••••••••••••• ••••••••••••••••••••••••• Inserimento Viaggio •••••••••••••••••••••••••• ••••••••••••••••••••••••• FormInserimentoViaggio •••••••••••••••••••••••••• ••••••••••••••••••••••••• Invio Dati •••••••••••••••••••••••••• aggiungiViaggio( ) ••••••••••••••••••••••••• insert •••••••••••••••••••••••••• ••••••••••••••••••••••••• boolean •••••••••••••••••••••••••• ••••••••••••••••••••••••• boolean •••••••••••••••••••••••••• ••••••••••••••••••••••••• Esito Inserimento •••••••••••••••••••••••••• ••••••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••••••••••• •••••••••••••••••••••••••• ••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••• sd Ricerca Viaggio Browser GestioneViaggio DBMS •••••••••••••••••••••••••• •••••••••••••••••••••••• Utente •••••••••••••••••••••••••• •••••••••••••••••••••••• Cerca Viaggio •••••••••••••••••••••••••• •••••••••••••••••••••••• FormRicercaViaggio •••••••••••••••••••••••••• •••••••••••••••••••••••• Invio Dati Ricerca ricercaViaggio( ) •••••••••••••••••••••••••• •••••••••••••••••••••••• select •••••••••••••••••••••••••• •••••••••••••••••••••••• risultato select •••••••••••••••••••••••••• •••••••••••••••••••••••• risultato select •••••••••••••••••••••••••• •••••••••••••••••••••••• Visualizza Risultati •••••••••••••••••••••••••• •••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• sd Prenotazione Viaggio Browser GestioneUtenteRegistrato Prenotazione GestioneViaggio DBMS •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• UtenteRegistrato •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• Prenota Viaggio checkLogin( ) •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• boolean •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• opt login [loggato = false] •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• Form Login •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• Invio Dati Login login(user, pwd) select •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• boolean boolean •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• •••••••••••••••••••••••••• Form Prenotazione •••••••••••••••••••••••••• •••••••• Invio Dati Prenotazione •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• prenota( ) checkDisponibilità( ) select •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• boolean boolean •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• opt update •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• [disponibilità==true] aggiornaDisponibilità( ) •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• update •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• boolean Esito Prenotazione •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• •••••••••••••••••••••••••• •••••••••••••••••••••••••• •••••••• •••••••••••••••••••••••••• ••••••••••••••••••••••••• sd Pagamento Viaggio Browser GestioneUtenteRegistrato Prenotazione DBMS •••••••••••••••••••••••••• ••••••••••••••••••••••••• UtenteRegistrato •••••••••••••••••••••••••• ••••••••••••••••••••••••• Paga Viaggio checkLogin( ) •••••••••••••••••••••••••• ••••••••••••••••••••••••• boolean •••••••••••••••••••••••••• ••••••••••••••••••••••••• opt login [loggato==false] •••••••••••••••••••••••••• ••••••••••••••••••••••••• Form Login Invio Dati Login •••••••••••••••••••••••••• ••••••••••••••••••••••••• login(username,pwd) select •••••••••••••••••••••••••• ••••••••••••••••••••••••• boolean boolean •••••••••••••••••••••••••• ••••••••••••••••••••••••• Form Pagamento •••••••••••••••••••••••••• ••••••••••••••••••••••••• Invio Dati Pagamento salda(idPrenotazione,numCartaCredito) •••••••••••••••••••••••••• ••••••••••••••••••••••••• salda(idPrenotazione,numContoCorrente) •••••••••••••••••••••••••• ••••••••••••••••••••••••• update boolean •••••••••••••••••••••••••• ••••••••••••••••••••••••• boolean •••••••••••••••••••••••••• ••••••••••••••••••••••••• Esito Pagamento •••••••••••••••••••••••••• ••••••••••••••••••••••••• Grazie per l’attenzione ☺