-
Notifications
You must be signed in to change notification settings - Fork 351
Expand file tree
/
Copy pathVendingMachine.java
More file actions
41 lines (34 loc) · 1000 Bytes
/
VendingMachine.java
File metadata and controls
41 lines (34 loc) · 1000 Bytes
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
package vendingmachine;
import java.util.Map;
import vendingmachine.coin.Coin;
import vendingmachine.coin.Coins;
import vendingmachine.menu.Menu;
import vendingmachine.menu.Menus;
public class VendingMachine {
private final Menus menus;
private final Credit credit;
private final Coins coins;
public VendingMachine(Menus menus, Credit credit, Coins coins) {
this.menus = menus;
this.credit = credit;
this.coins = coins;
}
public boolean isSellable(){
if(menus.isSoldOut()){
return false;
}
int minPrice = menus.getMinPrice();
return credit.canPurchase(minPrice);
}
public int getRemainMoney(){
return credit.getMoney();
}
public void purchase(String menuName){
Menu menu = menus.getMenu(menuName);
credit.purchase(menu);
menus.purchase(menu);
}
public Map<Coin, Integer> giveChange(){
return coins.giveChange(credit.getMoney());
}
}