-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAddOns.java
More file actions
170 lines (142 loc) · 4.47 KB
/
AddOns.java
File metadata and controls
170 lines (142 loc) · 4.47 KB
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
class Milk extends AddOnDecorator {
static double price = 1.0;
boolean foamed;
/*
Ruft Konstruktor von AddOnDecorator auf --> drink_ = drink
Prueft ob Milch aufgeschaeumt sein soll --> aendert Beschreibung von CaffeineInfusedBeverage
*/
public Milk(boolean foamed, CaffeineInfusedBeverage drink) {
super(drink);
this.foamed = foamed;
if(this.foamed) description_ = drink.getDescription() + " with foamed milk";
else description_ = drink.getDescription() + " with milk";
}
/*
Es wird lediglich ein Konstruktor uebergeben; in diesem Fall ist Milch nicht aufgeschaeumt
*/
public Milk(CaffeineInfusedBeverage drink) {
this(false, drink);
}
/*
Addiert Kosten von AddOn zum bisherigen Preis vom Getraenk
*/
@Override
public double cost() {
return drink_.cost() + price;
}
/*
Gibt Beschreibung des Getraenks zurueck
*/
@Override
public String getDescription() {
return description_;
}
}
class SoyMilk extends AddOnDecorator {
static double price = 1.5;
boolean foamed = false;
public SoyMilk(boolean foamed, CaffeineInfusedBeverage drink) {
super(drink);
this.foamed = foamed;
if(this.foamed) description_ = drink.getDescription() + " with foamed soymilk";
else description_ = drink.getDescription() + " with soymilk";
}
public SoyMilk(CaffeineInfusedBeverage drink) {
this(false, drink);
}
public double cost() {
return drink_.cost() + price;
}
public String getDescription() {
return description_;
}
}
class OatMilk extends AddOnDecorator {
static double price = 1.25;
boolean foamed = false;
public OatMilk(boolean foamed, CaffeineInfusedBeverage drink) {
super(drink);
this.foamed = foamed;
if(this.foamed) description_ = drink.getDescription() + " with foamed oatmilk";
else description_ = drink.getDescription() + " with oatmilk";
}
public OatMilk(CaffeineInfusedBeverage drink) {
this(false, drink);
}
public double cost() {
return drink_.cost() + price;
}
public String getDescription() {
return description_;
}
}
class LactoseFreeMilk extends AddOnDecorator {
static double price = 1.75;
boolean foamed = false;
public LactoseFreeMilk(boolean foamed, CaffeineInfusedBeverage drink) {
super(drink);
this.foamed = foamed;
if(this.foamed) description_ = drink.getDescription() + " with foamed lactose-free milk";
else description_ = drink.getDescription() + " with lactose-free milk";
}
public LactoseFreeMilk(CaffeineInfusedBeverage drink) {
this(false, drink);
}
public double cost() {
return drink_.cost() + price;
}
public String getDescription() {
return description_;
}
}
class LowFatMilk extends AddOnDecorator {
static double price = 1.0;
boolean foamed = false;
public LowFatMilk(boolean foamed, CaffeineInfusedBeverage drink) {
super(drink);
this.foamed = foamed;
if(this.foamed) description_ = drink.getDescription() + " with foamed low-fat milk";
else description_ = drink.getDescription() + " with low-fat milk";
}
public LowFatMilk(CaffeineInfusedBeverage drink) {
this(false, drink);
}
public double cost() {
return drink_.cost() + price;
}
public String getDescription() {
return description_;
}
}
class HazelnutMilk extends AddOnDecorator {
static double price = 2.0;
boolean foamed = false;
public HazelnutMilk(boolean foamed, CaffeineInfusedBeverage drink) {
super(drink);
this.foamed = foamed;
if(this.foamed) description_ = drink.getDescription() + " with foamed hazelnutmilk";
else description_ = drink.getDescription() + " with hazelnutmilk";
}
public HazelnutMilk(CaffeineInfusedBeverage drink) {
this(false, drink);
}
public double cost() {
return drink_.cost() + price;
}
public String getDescription() {
return description_;
}
}
class Sugar extends AddOnDecorator {
static double price = 1.2;
public Sugar(CaffeineInfusedBeverage drink) {
super(drink);
description_ = drink.getDescription() + " with sugar";
}
public double cost() {
return drink_.cost() + price;
}
public String getDescription() {
return description_;
}
}