Estratto del documento

Fast Food Manager

Progetto per Ingegneria del Software (9 CFU)

cdl Informatica (L-31), a.a. 2014-2015 Mario Cianciolo

12/06/2015 M01/000499

Indice generale

Introduzione............................................................................................................................................3

Definizioni..............................................................................................................................................4

Requisiti funzionali................................................................................................................................4

Progettazione..........................................................................................................................................5

Diagrammi delle classi...........................................................................................................................6

Diagramma 1.....................................................................................................................................6

Diagramma 2.....................................................................................................................................7

Diagramma 3.....................................................................................................................................8

Diagrammi di collaborazione.................................................................................................................9

Diagramma 1.....................................................................................................................................9

Diagramma 2...................................................................................................................................10

Diagramma 3....................................................................................................................................11

Diagramma 4....................................................................................................................................11

Design pattern utilizzati........................................................................................................................12

Singleton..........................................................................................................................................12

Factory method................................................................................................................................12

Object pool.......................................................................................................................................12

Frammenti di codice.............................................................................................................................13

Ingrediente e relative classi factory.................................................................................................13

Pietanza e relative classi factory......................................................................................................14

Ordine..............................................................................................................................................14

Coda.................................................................................................................................................15

Object pool per Ordine....................................................................................................................15

Cassiere: inserimento nuovo ordine.................................................................................................16

Cuoco: preparazione ordini..............................................................................................................17

Dirigente: calcolo degli stipendi e gestione del frigorifero.............................................................18

Conclusione..........................................................................................................................................19

Mario Cianciolo (M01/000499) 2

Introduzione

Il software si occuperà di gestire un piccolo fast food, in cui lavorano un dirigente, uno o più cassieri, uno o

più cuochi e uno o più addetti a pulizie e manutenzione. I clienti ordinano e dopo il pagamento viene loro

assegnato un numero sequenziale, dopodiché attendono la preparazione. Su un display al centro della sala

viene visualizzato il numero dell'ultima ordinazione pronta in modo che il cliente possa avvicinarsi per

ritirarla. Il cuoco preleva gli ingredienti da un frigorifero, il cui contenuto è monitorato.

Introduco alcune approssimazioni, per semplificare l'intero progetto: non essendo un software gestionale, esso

non tiene traccia delle spese dell'attività, dunque non si preoccupa di far quadrare i bilanci; né si occupa della

gestione del personale. Inoltre si assuma che tutti gli ingredienti siano presenti - e necessari - in unità

monoporzione: ad esempio, per preparare una data pietanza servono gli ingredienti α e β, ovvero una unità

dell'ingrediente α e una dell'ingrediente β. Il frigorifero contiene esclusivamente prodotti così confezionati.

Per la generazione dei diagrammi UML delle classi e di collaborazione ho utilizzato il programma Umbrello

UML Modeller di KDE. Le immagini sono state esportate in SVG per non perdere definizione.

Mario Cianciolo (M01/000499) 3

Definizioni

Di seguito alcune definizioni che saranno utilizzate nel resto del documento.

INGREDIENTE: singolo elemento monoporzione usato come base per le preparazioni

• FRIGORIFERO: contenitore per gli ingredienti

• PIETANZA: composizione di uno o più ingredienti

• ORDINE: gruppo di pietanze da preparare e servire insieme

• CODA: sequenza in cui gli ordini vengono inseriti, e successivamente vengono estratti dal cuoco per

• essere preparati. L'estrazione avviene nell'ordine di ingresso nella coda (FIFO)

UID: intero sequenziale univoco associato ad ogni ordine non appena viene pagato, e quindi immesso

• nella coda

CASSIERE: dipendente che immette l'ordine nel sistema e, dopo il pagamento, comunica al cliente il

• corrispondente UID

DIRIGENTE: dipendente che rilascia gli stipendi agli altri dipendenti.

Requisiti funzionali

Il sistema dovrà permettere ai cassieri di inserire ordini nella coda. Ogni ordine comprenderà una o più

pietanze, ognuna con il proprio prezzo. Il cassiere potrà calcolare il totale dell'ordine, che appena pagato sarà

inserito in coda con un UID. La coda manterrà l'UID dell'ultimo ordine servito.

Il frigorifero ha una capienza massima, e registrerà ogni volta che un ingrediente viene prelevato o introdotto.

Ogni pietanza è composta da diversi ingredienti, ed è disponibile solo se sono presenti tutti gli ingredienti

necessari. La coda è attiva solo se almeno una pietanza è disponibile, altrimenti il locale dovrà chiudere. Il

cuoco estrae gli ordini dalla coda, li prepara e infine imposta l'UID dell'ordine all'ultimo servito.

Ogni dipendente timbra per registrare le proprie ore di lavoro, così il dirigente può calcolare lo stipendio in

base alla paga oraria di ciascuno. Il dirigente può ottenere resoconti sugli ingredienti utilizzati, in modo da

poterli acquistare per tenere il frigorifero pieno.

Legenda: classe attributo operazione

⚫ ⚫ ⚫

Mario Cianciolo (M01/000499) 4

Progettazione

La classe Dipendente ha gli attributi pagaOraria e oreLavoro. Dipendente possiede i metodi timbraInizio() e

timbraFine(): il primo avvia un timer, l'altro lo termina e aggiorna oreLavoro. Possiede infine i metodi

calcolaStipendio() e resetOreLavoro(), le cui funzioni appaiono chiare dal nome.

Dipendente è una classe abstract: emergono le classi derivate Dirigente, Cassiere, Cuoco e Inserviente. Alcune

di esse interagiscono con altre classi. Ogni classe derivata specifica la propria pagaOraria nel costruttore.

Dirigente utilizza i metodi di tutti gli altri Dipendente per calcolare il loro stipendio. Inoltre utilizza i metodi

sul consumo di ingredienti di Frigorifero per poterli reintegrare dopo la giornata lavorativa.

Cassiere utilizza Coda per introdurre ordini nella coda, Ordine e PoolOrdine per creare l'ordine e calcolarne il

totale, Pietanza e CreatorPietanza per popolarlo, tutto tramite il metodo immettiIngrediente().

Cuoco utilizza Coda per

Anteprima
Vedrai una selezione di 5 pagine su 19
Fast Food Manager (esame completo) Pag. 1 Fast Food Manager (esame completo) Pag. 2
Anteprima di 5 pagg. su 19.
Scarica il documento per vederlo tutto.
Fast Food Manager (esame completo) Pag. 6
Anteprima di 5 pagg. su 19.
Scarica il documento per vederlo tutto.
Fast Food Manager (esame completo) Pag. 11
Anteprima di 5 pagg. su 19.
Scarica il documento per vederlo tutto.
Fast Food Manager (esame completo) Pag. 16
1 su 19
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher udda di informazioni apprese con la frequenza delle lezioni di Ingegneria del Software e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Catania o del prof Tramontana Emiliano.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community