-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRequisiti.html
102 lines (87 loc) · 4.53 KB
/
Requisiti.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Requisiti</title>
</head>
<body lang=IT >
<h1>Restaurants</h1>
<p>
Si sviluppi un programma che permetta di gestire una catena di ristoranti.
<p>
Tutte le classi si trovano nel package
<b>restaurantChain</b>. La classe <b>MainClass</b> nel package main presenta esempi di uso dei metodi principali.
<p>La <a href="http://softeng.polito.it/courses/docs/api/index.html"
target="_blank">documentazione JDK</a> è disponibile su un server local.</p>
<h2>R1: Restaurant chain</h2>
<p>
La classe <b>Chain</b> rappresenta una catena di ristoranti e fornisce i seguenti metodi:
<p>
- Il metodo <b>addRestaurant()</b> permette di aggiungere un ristorante alla catena,
e riceve due argomenti: il nome del ristorante e il numero di tavoli presenti nel ristorante;
se il nome è già presente nella catena, solleva l’eccezione <i>InvalidName</i>.
<p>
- Il metodo <b>getRestaurant()</b> riceve il nome di un ristorante e restituisce
l’oggetto di tipo <b>Restaurant</b> corrispondente; se il nome non è tra quelli presenti nella catena,
solleva l’eccezione <i>InvalidName</i>.
<h2>R2: Restaurants</h2>
<p>
La classe Restaurant rappresenta un ristorante e fornisce i seguenti metodi:
<p>
- Il metodo <b>getName()</b> restituisce il nome del ristorante.
<p>
- Il metodo <b>addMenu()</b> permette di aggiungere un menù alla carta del ristorante,
e riceve due argomenti: il nome del menù ed il suo prezzo; se il nome è già presente nella carta,
solleva l'eccezione <i>InvalidName</i>.
<p>
- Il metodo <b>reserve()</b> permette ad un gruppo di commensali di riservare dei tavoli,
e riceve due argomenti: il nome di un referente del gruppo, ed il numero di commensali;
se il nome è già stato usato da un altro gruppo, solleva l’eccezione <i>InvalidName</i>.
<p>
I commensali vengono disposti su tavoli da quattro posti ciascuno, che vengono riservati al gruppo.
Se i tavoli disponibili non sono sufficienti, l’operazione viene rifiutata.
Il metodo restituisce il numero di tavoli riservati al gruppo (zero se non ci sono tavoli a sufficienza).
<p>
- Il metodo <b>getRefused()</b> restituisce il numero totale di persone che non sono state accolte
nel ristorante per mancanza di tavoli.
<p>
- Il metodo <b>getUnusedTables()</b> restituisce il numero dei tavoli del ristorante che
non sono stati utilizzati.
<h2>R3: Orders</h2>
<p>
- Il metodo <b>order()</b> permette ad un gruppo di commensali, seduti ai tavoli del ristorante,
di effettuare un’ordinazione.
Il metodo riceve il nome del referente del gruppo, ed una sequenza di nomi di menù;
se il nome del referente non è tra quelli che hanno riservato tavoli, solleva l’eccezione <i>InvalidName</i>.
L’ordinazione viene accettata soltanto se il numero dei menù ordinati (presenti nella sequenza)
è maggiore o uguale al numero dei commensali appartenenti al gruppo; il metodo restituisce il valore booleano
<i>false</i> se l’ordinazione non è accettata.
Se i nomi dei menù indicati nell’ordinazione non sono tutti presenti nella carta del ristorante,
il metodo solleva l’eccezione <i>InvalidName</i>.
<p>
- Il metodo <b>getUnordered()</b> restituisce l’elenco, in ordine alfabetico,
dei nomi di referenti di gruppo che hanno tavoli riservati ma non hanno ancora effettuato l’ordinazione.
<p>
- Il metodo <b>pay()</b> riceve il nome di un referente di gruppo e gli permette di saldare
il conto della sua ordinazione (cioè la somma dei prezzi dei menù ordinati);
se il nome del referente non è tra quelli che hanno riservato tavoli, solleva l’eccezione <i>InvalidName</i>.
Il metodo restituisce l’importo pagato (zero se il gruppo non ha ancora effettuato l’ordinazione).
<p>
- Il metodo <b>getUnpaid()</b> restituisce l’elenco, in ordine alfabetico,
dei nomi di referenti di gruppo che hanno effettuato l’ordinazione ma non hanno ancora pagato il conto.
<p>
- Il metodo <b>getIncome()</b> restituisce il totale delle somme incassate dal ristorante.
<h2>R4: Reports</h2>
<p>
I seguenti metodi della classe <b>Chain</b> permettono di confrontare l’andamento dei ristoranti
appartenenti alla catena:
<p>
- <b>sortByIncome()</b> restituisce l’elenco dei ristoranti ordinato per valori decrescenti delle somme incassate.
<p>
- <b>sortByRefused()</b>b restituisce l’elenco dei ristoranti ordinato per valori crescenti
del numero di persone non accolte per mancanza di tavoli.
<p>
- <b>sortByUnusedTables()</b> restituisce l’elenco dei ristoranti ordinato per valori crescenti
del numero di tavoli non utilizzati.
</body>
</html>