ESERCIZIO 7
Implementare il programma di controllo di una macchina automatica per bevande.
La macchina può erogare le seguenti bevande:
|
Caffè |
Cappuccino |
Cioccolata |
Costo |
25 |
30 |
50 |
Consumo acqua |
3 |
3 |
3 |
Consumo latte |
0 |
1 |
1 |
Consumo caffè |
3 |
3 |
0 |
Consumo cioccolata |
0 |
0 |
4 |
L'erogazione avviene prelevando le quantità necessarie dai serbatoi, il cui
contenuto iniziale è:
|
Contenuto iniziale |
Serbatoio acqua |
100 |
Serbatoio latte |
50 |
Serbatoio caffè |
100 |
Serbatoio cioccolata |
30 |
La macchina funziona secondo il seguente ciclo:
- Stato "idle"
- viene visualizzato lo stato dei serbatoi
- è possibile spegnere la macchina o continuare con le operazioni
- Scelta bevanda
- all'utente vengono proposte solo le opzioni possibili in base alla
disponibilità dei serbatoi
- Introduzione monete
- Se le monete introdotte superano il costo della bevanda selezionata,
la macchina mantiene un credito residuo per il cliente successivo.
- E' possibile annullare l'operazione e ritornare alla scelta della
bevanda. Le monete inserite vengono restituite.
- Erogazione bevanda
- Ritorno in stato "idle"
SCOPO DELL'ESERCIZIO
- Esempio di macchina a stati
- State Diagram UML
SOLUZIONE
Diagramma Use Cases:

Diagramma degli stati:

Diagramma delle classi:

NB Per semplicità:
- Nella classe Bevanda si fa uso di attributi pubblici.
- Non esiste distinzione fra gli utenti.
- Non esiste controllo sulle monete.
Esercizio_7.cpp
Macchina.h
Macchina.cpp
StateMgr.h
StateMgr.cpp
Serbatoio.h
Serbatoio.cpp
Contamonete.h
Contamonete.cpp
Bevanda.h
Bevanda.cpp