Paola Magillo, Univestita' di Genova, Corso di Programmazione II per SMID, a.a. 2009-2010.

Lezione 14:

CASO DI STUDIO: GESTIONE DI UN DATA BASE DI ABBONATI - PARTE 3

Vediamo l'interfaccia utente grafica dell'esempio che verra' poi usato nell'esame. Abbiamo visto quella per l'utente abbonato (lezione 13), vediamo ora quella per l'utente gestore.

Dal punto di vista dell'utente

L'interfaccia grafica per l'utente gestore e' composta da una finestra che chiede di scegliere l'operazione (ricerca di abbonati nel data base o inserimento di un nuovo abbonato), una finestra per specificare il criterio di ricerca ed eseguire la ricerca, una finestra per mostrare il risultato della ricerca, ed una finestra per inserire un nuovo abbonato.

Tutte le finestre dell'interfaccia sono finestre di dialogo. Infatti nessuna di queste ha la prevalenza sulle altre quanto a durata dell'interazione con l'utente.

Finestra iniziale di scelta

finestra di scelta

Inizialmente compare la finestra di scelta che mostra un titolo e tre bottoni.
Questa finestra pur essendo una finestra di dialogo non dipende da altre finestre.

I tre bottoni corrispondono alle operazioni possibili:

  1. chiudi -- esce dal programma
  2. ricerca -- permette di ricercare abbonati nel data base
  3. nuovo abbonato -- permette di inserire nel data base un nuovo abbonato

Se l'utente sceglie "ricerca" allora il programma mostra la finestra di ricerca, che permettera' all'utente di specificare il criterio di ricerca ed eseguire la ricerca.

Se l'utente sceglie "nuovo abbonato" allora il programma mostra la finestra del nuovo abbonato, che permettera' all'utente di immettere i dati per creare un nuovo abbonato e salvarlo nel data base.

Finestra del criterio di ricerca

finestra del criterio di ricerca

La finestra del criterio di ricerca dipende dalla finestra di scelta ed e' modale (cioe' impedisce l'interazione con la finestra chiamante). Mostra tutti i campi corrispondenti ai dati di un abbonato, tutti editabili. I tre bottoni radio per la categoria di abbonamento possono essere selezionati indipendentemente (l'utente puo' ricercare piu' categorie di abbonamento).

Vi sono tre bottoni corrispondenti alle operazioni possibili:

  1. chiudi -- nasconde questa finestra e riabilita l'interazione con la finestra di scelta
  2. cerca -- esegue la ricerca con il criterio correntemente impostato
  3. azzera -- ripulisce tutti i campo di testo e de-seleziona tutti e tre i bottoni radio

Se l'utente preme "cerca" viene eseguita la ricerca con il criterio correntemente specificato (e' corretto anche un criterio in cui nessun requisito e' stato specificato: tutti i campi vuoti e nessuno dei tre bottoni radio selezionato).
Se non vi sono risultati, viene mostrata una finestra con messaggio di notifica.
Se vi sono risultati, sono mostrati in una finestra del risultato.

Finestra del risultato

finestra del risultato

La finestra del risultato dipende dalla finestra del criterio di ricerca ed e' modale (cioe' impedisce l'interazione con la finestra chiamante).
Se vi sono N risultati, li mostra uno alla volta, e permette di scorrere avanti e indietro la lista dei risultati.
Per il risultato corrente, mostra tutti i dati dell'abbonato, e li lascia modificare tutti tranne cognome, nome, anno di nascita.

Vi sono cinque bottoni corrispondenti alle operazioni possibili:

  1. chiudi -- nasconde questa finestra e riabilita l'interazione con la finestra di ricerca
  2. salva -- se sono avvenute modifiche salva l'abbonato nel data base, altrimenti avverte con un messaggio che non c'e' nulla da salvare
  3. ricarica -- ricarica l'abbonato dal data base perdendo eventuali modifiche intercorse
  4. indietro e avanti -- permettono di scorrere la lista dei risultati, sono disabilitati rispettivamente quando la finestra mostra il primo e l'ultimo dei risultati (entrambi se il risultato e' uno solo).

Finestra del nuovo abbonato

finestra di nuovo abbonato

La finestra del nuovo abbonato dipende dalla finestra di scelta iniziale, ed e' modale. mostra tutti i dati dell'abbonato da creare, e li lascia modificare tutti.

Vi sono tre bottoni corrispondenti alle operazioni possibili:

  1. chiudi -- non cambia la password, nasconde questa finestra e riabilita l'interazione con la finestra iniziale
  2. salva -- se i dati obbligatori (tutti tranne indirizzo, telefono, email) sono stati specificati, e se non esiste gia' un abbonato con quel cognome, nome e anno di nascita, salva l'abbonato nel data base, altrimenti mostra un messaggio di errore
  3. azzera -- ripulisce tutti i campo di testo e de-seleziona i bottoni radio (che sono qui mutuamente esclusivi).

Riassumendo

Il diagramma seguente illustra il funzionamento dell'interfaccia.
I riquadri rettangolari sono finestre.
Le frecce sono azioni eseguite dall'utente nella finestra da cui la freccia parte.
I riquadri con angoli arrotondati sono operazioni fatte dal programma in risposta all'azione dell'utente.
Non sono indicate nel diagramma le finestre di errore...

Dal punto di vista del codice Java

Tutte le finestre sono realizzate con la classe Finestra, sotto-classe di JDialog, che abbiamo gia' visto nella lezione 13.

Vi sono poi classi che realizzano i pannelli che saranno collocati al centro delle finestre, e definiscono quali bottoni aggiuntivi vi saranno:

Le ultime tre sono sotto-classi della classe PannelloInfo vista nella lezione 13.

Classi Java per l'interfaccia grafica

Tutte le classi che costituiscono questo esempio sono predisposte per essere documentate con Javadoc (vedere lezione 11). Scaricare tutti i file java nella directory corrente e poi digitare "javadoc *.java", genera documentazione per tutte le classi, il file da cui partire (con l'indice) e' poi quello di nome "index.html".

Qui diamo solo un inquadramento generale delle classi, a che cosa servono, che collegamenti hanno fra loro. Per tutti gli altri dettagli si rimanda alla documentazione javadoc.

Le classi per il data base sono descritte nella lezione 12, qui documentiamo solo quelle per l'interfaccia grafica (che usano le precedenti).

Alcune classi (Finestra, PannelloInfo, Programma) sono comuni all'interfaccia per l'utente abbonato descritte nella lezione 13, qui documentiamo solo quelle "nuove".

Classe PannelloScelta

PannelloScelta.java

Realizza il pannello che sara' collocato al centro della finestra di iniziale di scelta.

Organizzato a border layout, contiene solo una etichetta in posizione centrale, con un messaggio di benvenuto.
Crea e memorizza i bottoni aggiuntivi "ricerca" e "nuovo abbonato" (senza metterli ancora da nessuna parte, sono da mettere poi nella finestra).

Classe PannelloCriterio

PannelloCriterio.java

Realizza il pannello che sara' collocato al centro della finestra del criterio di ricerca.

Sotto-classe di PannelloInfo, non cambia nulla rispetto alla super-classe, soltanto crea e memorizza i bottoni aggiuntivi "cerca" e "azzera" (da mettere poi nella finestra).

Classe PannelloRisultato

PannelloRisultato.java

Realizza il pannello che sara' collocato al centro della finestra del risultato della ricerca.

Sotto-classe di PannelloInfo, rende mutuamente esclusivi i tre bottoni radio e non editabili i campi di testo per cognome, nome e anno di nascita.
Crea e memorizza i bottoni aggiuntivi "salva", "ricarica", "indietro" e "avanti" (da mettere poi nella finestra).

Classe PannelloNuovo

PannelloNuovo.java

Sotto-classe di PannelloInfo, realizza il pannello che sara' collocato al centro della finestra per la creazione di un nuovo abbonato.

Lascia tutti i campi di testo editabili tranne ma rende mutuamente esclusivi i tre bottoni radio.
Crea inoltre e memorizza i bottoni "salva" e "azzera".

Classe ProgrammaGestore

ProgrammaGestore.java

Sotto-classe di Programma (classe descritta nella lezione 13), realizza tutta l'interfaccia grafica per l'utente gestore.

Costruisce le quattro finestre: ciascuna e' un'istanza di Finestra con al centro un pannello della classe opportuna, e con in basso aggiunti i bottoni memorizzati in tale pannello.

Stabilisce tutte le callback di tutti i bottoni presenti nelle quattro finestre: il bottone "chiudi" memorizzato nella finestra e i bottoni aggiuntivi memorizzati nei vari pannelli (ma aggiunti alla finestra).

Per far funzionare il tutto

Servono:

Tutti i link per scaricare anche in formato zip si trovano nelle pagine del laboratorio.

Per compilate e' sufficiente digitare: javac ProgrammaGestore.java

Per eseguire digitare: java ProgrammaGestore Pippo