Skip to content

Commit 2e4df17

Browse files
authored
Text file combining the whole code
1 parent 1c21cbf commit 2e4df17

File tree

1 file changed

+217
-0
lines changed

1 file changed

+217
-0
lines changed

FullCode_ShortcakeCafe.txt

+217
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,217 @@
1+
package Final;
2+
import java.util.Scanner;
3+
abstract public class Cake{
4+
public final void templateMethod(int quantity){
5+
makeCake(quantity);
6+
//makeCrust;
7+
//addLayers(layers);
8+
bake();
9+
refrigerate();
10+
}
11+
12+
public void makeCake(int quantity){}
13+
// {
14+
// System.out.println("Quantity: "+quantity+" cake(s)");
15+
// }
16+
17+
public void bake() {} //Hook Template (specific minutes of time to bake cake)
18+
19+
public void refrigerate() {} //Hook Template
20+
21+
abstract String cakeName();
22+
23+
abstract int cakePrice();
24+
}
25+
class CakeFactory
26+
{
27+
Cake cake;
28+
Cake createCake(String type){
29+
switch (type){
30+
case "eggless":
31+
cake= new EgglessCake();
32+
return cake;
33+
case "chocolate":
34+
cake= new FlavourChocolate(cake);
35+
return cake;
36+
case "mango":
37+
cake= new FlavourMango(cake);
38+
return cake;
39+
case "strawberry":
40+
cake= new FlavourStrawberry(cake);
41+
return cake;
42+
case "nuts":
43+
cake= new ToppingNuts(cake);
44+
return cake;
45+
case "oreo":
46+
cake= new ToppingOreo(cake);
47+
return cake;
48+
default:
49+
cake= new EggCake();
50+
return cake;
51+
}
52+
}
53+
}
54+
abstract class Decorator extends Cake{
55+
Cake cake;
56+
}
57+
class ToppingNuts extends Decorator{
58+
ToppingNuts(Cake cake){
59+
this.cake=cake;
60+
}
61+
String cakeName(){
62+
return cake.cakeName()+" with topping Nuts";
63+
}
64+
int cakePrice(){
65+
return cake.cakePrice()+25;
66+
}
67+
}
68+
class ToppingOreo extends Decorator{
69+
ToppingOreo(Cake cake){
70+
this.cake=cake;
71+
}
72+
String cakeName(){
73+
return cake.cakeName()+" with topping Oreo";
74+
}
75+
int cakePrice(){
76+
return cake.cakePrice()+55;
77+
}
78+
}
79+
class EggCake extends Cake{
80+
int cakePrice(){
81+
return 70;
82+
}
83+
String cakeName(){
84+
return "Regular ShortCake (with egg)";
85+
}
86+
}
87+
class EgglessCake extends Cake{
88+
int cakePrice(){
89+
return 50;
90+
}
91+
String cakeName(){
92+
return "Eggless ShortCake";
93+
}
94+
}
95+
class FlavourChocolate extends Cake{
96+
Cake cake;
97+
FlavourChocolate(Cake cake){
98+
this.cake=cake;
99+
}
100+
String cakeName(){
101+
return cake.cakeName()+" Chocolate Flavour";
102+
}
103+
int cakePrice(){
104+
return cake.cakePrice()+200;
105+
}
106+
}
107+
class FlavourMango extends Cake{
108+
Cake cake;
109+
FlavourMango(Cake cake){
110+
this.cake=cake;
111+
}
112+
String cakeName(){
113+
return cake.cakeName()+" Mango Flavour";
114+
}
115+
int cakePrice(){
116+
return cake.cakePrice()+150;
117+
}
118+
}
119+
class FlavourStrawberry extends Cake{
120+
Cake cake;
121+
FlavourStrawberry(Cake cake){
122+
this.cake=cake;
123+
}
124+
String cakeName(){
125+
return cake.cakeName()+" Strawberry Flavour";
126+
}
127+
int cakePrice(){
128+
return cake.cakePrice()+100;
129+
}
130+
}
131+
class ShortcakeCafe extends CakeFactory{
132+
133+
public static void main(String[] args) {
134+
System.out.println("-----------Welcome to SHORT-CAKE CAFE-----------");
135+
CakeFactory cf=new CakeFactory();
136+
Cake c;
137+
StringBuilder cake_name= new StringBuilder();
138+
Scanner s=new Scanner(System.in);
139+
System.out.print("Enter the number of cakes: ");
140+
int number_of_cakes=s.nextInt();
141+
int price=0;
142+
for(int i=0;i<number_of_cakes;i++){
143+
System.out.println("Do you want an");
144+
System.out.println("1)Eggless cake, or");
145+
System.out.println("2)Egg cake");
146+
System.out.println("Enter your choice: ");
147+
int base_choice=s.nextInt();
148+
final String base;
149+
if(base_choice==1){
150+
base="eggless";
151+
c=cf.createCake(base);
152+
c.templateMethod(number_of_cakes);
153+
price+=c.cakePrice();
154+
// cake_name.append(c.cakeName());
155+
}
156+
else if(base_choice==2){
157+
base="";
158+
c=cf.createCake(base);
159+
c.templateMethod(number_of_cakes);
160+
price+=c.cakePrice();
161+
// cake_name.append(c.cakeName());
162+
}
163+
System.out.println("Which flavour of cake would you like to have?");
164+
System.out.println("1)Chocolate cake, or");
165+
System.out.println("2)Mango cake, or");
166+
System.out.println("3)Strawberry cake");
167+
int flavour_num=s.nextInt();
168+
final String flavour;
169+
if(flavour_num==1){
170+
flavour="chocolate";
171+
c=cf.createCake(flavour);
172+
c.templateMethod(number_of_cakes);
173+
price+=c.cakePrice();
174+
// cake_name.append(c.cakeName());
175+
}
176+
else if(flavour_num==2){
177+
flavour="mango";
178+
c=cf.createCake(flavour);
179+
c.templateMethod(number_of_cakes);
180+
price+=c.cakePrice();
181+
// cake_name.append(c.cakeName());
182+
}
183+
else if(flavour_num==3){
184+
flavour="strawberry";
185+
c=cf.createCake(flavour);
186+
c.templateMethod(number_of_cakes);
187+
price+=c.cakePrice();
188+
// cake_name.append(c.cakeName());
189+
}
190+
System.out.println("Which topping would you like to have on your cake?");
191+
System.out.println("1)Nuts, or");
192+
System.out.println("2)Oreo, or");
193+
int topping_num=s.nextInt();
194+
final String topping;
195+
if(topping_num==1){
196+
topping="nuts";
197+
c=cf.createCake(topping);
198+
c.templateMethod(number_of_cakes);
199+
price+=c.cakePrice();
200+
cake_name.append(c.cakeName());
201+
}
202+
else if(topping_num==2){
203+
topping="oreo";
204+
c=cf.createCake(topping);
205+
c.templateMethod(number_of_cakes);
206+
price+=c.cakePrice();
207+
cake_name.append(c.cakeName());
208+
}
209+
cake_name.append(" and a ");
210+
}
211+
System.out.println("Your order details: ");
212+
System.out.println("Number of cake(s): "+number_of_cakes);
213+
System.out.println("Cake: "+cake_name);
214+
System.out.println("Total Amount: Rs "+price);
215+
System.out.print("Bon Appétit (:");
216+
}
217+
}

0 commit comments

Comments
 (0)