Docente: Prof. Giuseppe Antonio Di Lucca Studenti
**Studenti:** ***863000636 Vincenzo Mancinelli*** ***863000660 Floriano Prete***
-
Indicazioni dei casi d'uso ** Raffinamento dei casi d'uso ** Use case Diagram
-
Software Design ** Design class Diagram ** Design Pattern utilizzati ** Sequence Diagram
-
Software Implementation ** Component Diagram ** DataBase Relazionale- Schema Logico
-
Human Computer Interation ** Welcome ** HomePage Proprietario ** Gestione Cliente ** Gestione Dipendente ** Gestione Prodotti ** HomePage Dipendente ** HomePage Cliente ** Carrello
- Grasp-Controller: è uno dei Key Five Grasp pattern. Il controller assegna la gestione di un evento di sistema ad una classe rappresentate, la quale si occuperà di invocare l’opportuno metodo della business logic. Il controller consente di disaccoppiare gli oggetti dell’interfaccia con gli oggetti specifici del dominio applicativo. E’ stato utilizzato molto nella applicazione, sia per la gestione della comunicazione con l’interfaccia grafica, sia nella gestione delle operazioni specifiche per ogni use case.
- Grasp- Pure Fabrication: è uno dei Grasp pattern avanzati. Delega una serie di responsabilità altamente coese tra loro ad una classe che non rappresenta nessun oggetto del dominio applicativo, ma deputata solo alla gestione di tali responsabilità , in modo tale da garantire un alto grado di coesione e riuso. E’ stato utilizzato nella generazione di GestoreDB, la classe che si occupa di memorizzare i dati persistenti sul DB e di accedervi all’atto dell’inizializzazione del sistema.
- Creazionali- Singleton: il pattern Singleton è utilizzato quando si vuole che esista una sola istanza di una certa classe, garantendo così un unico punto di accesso globale alle risorse e le informazioni gestite dalla classe stessa. E’ stato implementato con il metodo statico getInstance() e con il costruttore privato. Nella nostra applicazione è stato utilizzato per il GestoreDB
Il component digram appena mostrato evidenzia l’organizzazione delle componenti del progetto.
Il pattern architetturale utilizzato è stato il Model-View-Controller. Nello specifico , la componente View si occupa non solo della visualizzazione dello stato dell’applicazione, ma anche della interazione dell’utente. Sulla base di questa interazione, la View si occuperà di propagare gli input forniti al Controller. Riceve inoltre notifiche di aggiornamento dello stato da parte del Model, che si concretizzeranno poi in un aggiornamento dei dati visualizzati. Il Controller rappresenta la componente di coordinamento del pattern. Si occupa infatti di analizzare l’input proveniente dalla View e intervenire conseguentemente sulla componente Model. Inoltre, in seguito alla modifica di stato e alle interazioni con l’utente, seleziona la View adeguata da visualizzare. La componente Model si occupa di incapsulare lo stato dell’applicazione e, come detto, di notificare alla View le modifiche di stato coordinate dal controller. Il pattern, quindi, è molto utile quando si ha necessità di separare gli strati logici di Presentazione ed Elaborazione, rendendoli così indipendenti gli uni dagli altri. Così facendo, sarà possibile mostrare i dati in modalità diverse e di rendere indipendente la modifica degli stessi dalla loro visualizzazione.
Nel nostro caso, abbiamo la View ed il Controller fuse in un unico component. Le classi che modellano gli elementi del dominio quali Utente, Proprietario, Cliente, Dipendente, Prodotto, Libri, ArticoliC, Richieste, Pagamento, CartaFedeltà, SingIn e Carrello definiscono la componente di Model di gestione dello stato dell’applicazione. Le restanti classi, quali Gestione utenti, GestoreDB, ed tutti i controller della View, causa l'utilizzo di JavaFX che necessita di un controller per ogni View, rappresentano i Controller ed i View della nostra applicazione. Particolarmente importante è la classe GestoreDB, la quale si occupa della comunicazione della base di dati e, conseguentemente, dell’inizializzazione dello stato della nostra applicazione.
Il diagramma mostra inoltre l’utilizzo di Java DataBase Connectivity, un insieme di interfacce che costituiscono una API per l’intenzione con un DB relazionale. Il DBMS utilizzato è MySQL, il quale a sua volta mette a disposizione un connettore compatibile con JDBC. Nel diagramma e mostrato anche l'utilizzo delle librerie grafiche JavaFx utilizzate per la parte grafica del nostro progetto.
La classe GestoreDB è la classe deputata alla comunicazione con il DB. All’avvio del sistema una istanza di GestoreDB viene generata e associata agli elementi del dominio che richiedono i suoi servizi. All’avvio del sistema, il GestoreDB caricherà dal DB stesso le informazioni riguardanti gli oggetti da instanziare, garantendo che le operazioni avvengano tutte su oggetti caricati in memoria.
-Utenti: (Email, Nome, Cognome, Password) -Proprietario: (Email, Nome, Cognome, Password, Prodotti) -Clienti: (Email, Nome, Cognome, Password, idCarrello, idRichiesta,idCartaFedeltà ) -Dipendenti: (Email, Nome, Cognome, Password, Richieste) -Prodotti: (IdProdotto, Prezzo, Quantità, Email) -Libri: (IdProdotto, Prezzo, Quantità, Email, Titolo, Autore, Case Editrice, ISBN ) -Articoli: (IdProdotto, Prezzo, Quantità, Email, Tipo) -Accesso: (Email) -Carrelli: (IdCart, Prodotti, Prezzo, Quantità, Email) -Carte: (IdCarte, Datas, Punti, Email) -Richieste: (IdAcquisto, Data, Prezzo, MetodoPagamento, EmailDipendente, EmailCliente)
Utenti
Proprietario
Clienti
Dipendenti
Prodotti
Libri
Articoli
Accesso
Carrelli
Carte
Richiesta
Questa è l’interfaccia di avvio del sistema. Da qui, l'utente potrà effettuare l'accesso, premendo il pulsante accedi ed in base alla propria registrazione mostrera la homepage di riferimento.
Questa è l'interfaccia che si ottine dopo l'accesso del proprietario e si possono vedere le liste di clientit, dipendenti e dei prodotti premendo i rispettivi pulsanti. Premendo sui pulsanti Gestione Clienti, Gestione Dipendenti e Gestione Prodotti si andra nelle rispettive schermate di gestione.
Questa interfaccia rappresenta la gestione, da parte del proprietario, del cliente. In questa schemata e possibile aggiungere un nuovo utente tramite L'apposito pulsante, si possono visualizzare la lista di utenti già registrati, la lista di carte fedeltà già usate e la lista dei clienti registrati. Tramite il tasto Aggiungi Carta Fedeltà è possibile dare una carta fedelta ad un utente e tramite il tasto modifica si può aggiornare la data di scadenza della carta ed i propri punti. Infine con il tasto Aggiungi Cliente si va ad aggiungere un codice identificativo del carrello all'utente e viene classificato come cliente.
L'interfaccia gestione dipendente rappresenta la possibilità di aggiungere nuovi dipendenti tramite il pulsante Aggiungi Dipendente e tramite il tasto Elimina dipendente l'eliminazione del dipendente.
In gestione prodotti abbiamo l'interfaccia che gestisce l'inserimento di nuovi prodotti tramite il pulsante Aggiungi Prodotto e tramita Modifica Prodotto è possibile modificare il prezzo e la quantità del prodotto e d automaticamente le aggiorna il prezzo e la quantità dei libri e degli articoli di cancelleria. Tramite Aggiungi Libro possiamo aggiungere tutti i dati del libro, così come Aggiungi Articolo aggiungiamo i dati degli articoli. Infine con il pulsante Visualizza Lista prodotti è possibile visualizzare la lista di tutti i prodotti aggiunti.
Nella Homepage del dipendente abbiamo due pulsanti, il primo pulsatnte Visualizza Richiesta permette di visualizzare tutte le richieste di acquisto da evadere e tramite il pulsante Elimina Richiesta è possibile eliminare la richiesta scrivendo nell'apposita casella l'id della richiesta da eliminare
L'interfaccia Homepage Clienti rappresenta la schermata iniziale che si presenta al cliente dopo il login, abbiamo due pulsanti per la visualizzazione dei prodotti, Visualizza libri per i libri e Visualizza articoli per la visualizzazione degli articoli di cancelleria. Il pulsante Inserisci nel carrello per l'inserimento del prodotto scelto, inserendo Id del prodotto e la quantità nelle apposite caselle, nel carrello. L'ultimo tasto che troviamo è Vai al carrello che permetti di andare nell'interfaccia del carrello
Questa intefaccia rappresenta il carrello di prodotti che ha il cliente, tramite il pulsante Visualizza il tuo carrello il cliente potrà vedere i proditti aggiunti in precedenza nel carrello. Tramite il tasto elimina possiamo rimuovere un prodotto dal carrello inserendo i dati del prodotto negli appositi campi. E' possibile scegliere il metodo di pagamento nell'apposito menu ed infine dopo aver scelto un nome per la propria richiesta è possibile inviare l'ordine al dipendente tramite il pulsante Crea richiesta aqcuisto