Skip to content

mancio8/BookShop

Repository files navigation

Elaborato di Progettazione del Software

Documento di Software Design





Logo


Docente: Prof. Giuseppe Antonio Di Lucca Studenti



**Studenti:** ***863000636 Vincenzo Mancinelli*** ***863000660 Floriano Prete***





Indicazioni casi d'uso

Raffinamento dei casi d'uso

Login Proprietario

Login_proprietario

Login Cliente

Login_clienti

Login Dipendente

Login_dipendente

Aggiungi nuovo prodotto

Add_prodotto

Acquista Libro

Buy_book

Elimina Richiesta

delete_r

Aggiorna prezzo prodotto

Update_p

Visualizza Prodotti nel carrello

View_Cart

Aggiungi libro al carrello

Add_libro

Use case Diagram

Use Cases Diagram










Software Design

Design class Diagram

Class diagram


Design class

Model-View-Control

MVC

MVC



Design Pattern utilizzati

  • 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






Sequence Diagram

Sequence Login Proprietario

Sequence Login Proprietario




Sequence Login Cliente

Sequence Login




Sequence Login Dipendente

Sequence Login Dipendente




Sequence aggiungi nuovo prodotto

Sequence aggiungi nuovo prodotto




Sequence Acquista Libro




Sequence Acquista Libro




Sequence Elimina Richiesta




Sequence Elimina Richiesta



















Sequence aggiorna prezzo prodotto





Sequence Update Price

















Sequence visualizza prodotto nel carrello




Sequence Carrello



















Sequence aggiungi libro al carrello




Sequence aggiungi libro al carrello













Software Implementation

Component Diagram



Component Diagram

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.

Boundary Use Case

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.

DataBase Relazionale- Schema Logico

-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

DAO Utenti

Proprietario

DAO Proprietario











Clienti


DAO Clienti

Dipendenti


DAO Dipendenti

Prodotti


DAO Prodotti

















Libri


DAO Libri

Articoli


DAO Articoli

Accesso


DAO Accesso









Carrelli


DAO Carrelli

Carte


DAO Carte

Richiesta


DAO Richieste








Human Computer Interation


Welcome



Welcome



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.














HomePage Proprietario


HomePage Proprietario


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.


















Gestione Cliente


Gestione Clienti


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.


















Gestione Dipendente


Gestione Dipendenti


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.


















Gestione Prodotti


Gestione Prodotti


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.


















HomePage Dipendenti


HomePage Dipendenti


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


















HomePage Clienti


HomePage Clienti


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


















Carrello


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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages