기존에 만들었던 키오스크가 우려했던대로 전혀 객체지향적이지 않았다는(클래스가 무엇인지, 객체가 무엇인지 등) 답변을 받았다 내가 생각해도 그러했기에 기본기를 다질 겸 다시한번 개인 프로젝트를 해봤다.
튜터님들이 우연히라도 보고 더 나아졌다는 답변을 받길 바라며....
package TIL.ReKiosk;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
class Menu {
// 생성자
private String name;
private double price;
private String explanation;
// 생성자 객체를 초기화 시켜주는 매서드
public Menu(String name, String explanation) {
this.name = name;
this.price = 0.0;
this.explanation = explanation;
}
public void setPrice(double price) {
this.price = price;
}
public String getName() {return name;}
public double getPrice() {return price;}
public String getExplanation() {return explanation;}
}
public class Main {
public static void main(String[] args) throws InterruptedException {
List<Menu> inPutMenu = new ArrayList<>();
int WaitingNumber = 0;
while (true) {
System.out.println("\"SHAKESHACK BURGER 에 오신걸 환영합니다.\"\n" +
"아래 메뉴판을 보시고 메뉴를 골라 입력해주세요.\n" +
"\n" +
"[ SHAKESHACK MENU ]\n" +
"1. Burgers | 앵거스 비프 통살을 다져만든 버거\n" +
"2. Forzen Custard | 매장에서 신선하게 만드는 아이스크림\n" +
"3. Drinks | 매장에서 직접 만드는 음료\n" +
"4. Beer | 뉴욕 브루클린 브루어리에서 양조한 맥주\n" +
"\n" +
"[ ORDER MENU ]\n" +
"5. Order | 장바구니를 확인 후 주문합니다.\n" +
"6. Cancel | 진행중인 주문을 취소합니다.");
Scanner sc = new Scanner(System.in);
int choice = sc.nextInt();
if (choice == 1) {
// 버거 객체 생성
List<Menu> burgerList = new ArrayList<>();
String[] burgerNames = {"ShackBurger", "SmokeBurger", "Shroom Burger"};
String[] burgerDescriptions = {"뭐시깽이 버거", "저시깽이 버거", "요시깽이 버거"};
double[] burgerPrices = {6.9, 8.9, 9.4};
// 배열을 리스트 안에 넣기
for (int i = 0; i < burgerNames.length; i++) {
Menu burger = new Menu(burgerNames[i], burgerDescriptions[i]);
burger.setPrice(burgerPrices[i]);
burgerList.add(burger);
}
// 버거 리스트 출력
System.out.println("[ Burgers MENU ]");
for (int i = 0; i < burgerList.size(); i++) {
Menu burger = burgerList.get(i);
System.out.println((i + 1) + ". " + burger.getName() + " | W " + burger.getPrice() + " | " + burger.getExplanation());
}
int payView = sc.nextInt();
if (payView >= 1 && payView <= burgerList.size()) {
inPutMenu.add(burgerList.get(payView - 1));
System.out.println(burgerList.get(payView - 1).getName() + "가 장바구니에 추가되었습니다.");
}
} else if (choice == 2) {
// 아이스크림 객체 생성
List<Menu> icecreamList = new ArrayList<>();
String[] icecreamNames = {"Shack Of The Week", "Red Bean Shake", "Floats"};
String[] icecreamDescriptions = {"뭐시깽이 아이스크림", "저시깽이 아이스크림", "요시깽이 아이스크림"};
double[] icecreamPrices = {6.5, 6.5, 5.9};
// 배열을 리스트 안에 넣기
for (int i = 0; i < icecreamNames.length; i++) {
Menu iceCream = new Menu(icecreamNames[i], icecreamDescriptions[i]);
iceCream.setPrice(icecreamPrices[i]);
icecreamList.add(iceCream);
}
System.out.println("[ IceCream MENU ]");
for (int i = 0; i < icecreamList.size(); i++) {
Menu iceCream = icecreamList.get(i);
System.out.println((i + 1) + ". " + iceCream.getName() + " | W " + iceCream.getPrice() + " | " + iceCream.getExplanation());
}
int payView = sc.nextInt();
if (payView >= 1 && payView <= icecreamList.size()) {
inPutMenu.add(icecreamList.get(payView - 1));
System.out.println(icecreamList.get(payView - 1).getName() + "가 장바구니에 추가되었습니다.");
}
} else if (choice == 3) {
// 음료 객체 생성
List<Menu> drinkList = new ArrayList<>();
String[] drinkNames = {"Shack-made Lemonade", "Fresh Brewed Iced Tea", "Fountain Soda"};
String[] drinkDescriptions = {"뭐시깽이 음료", "저시깽이 음료", "요시깽이 음료"};
double[] drinkPrices = {3.9, 3.4, 2.7};
// 배열을 리스트 안에 넣기
for (int i = 0; i < drinkNames.length; i++) {
Menu drink = new Menu(drinkNames[i], drinkDescriptions[i]);
drink.setPrice(drinkPrices[i]);
drinkList.add(drink);
}
System.out.println("[ Drink MENU ]");
for (int i = 0; i < drinkList.size(); i++) {
Menu drink = drinkList.get(i);
System.out.println((i + 1) + ". " + drink.getName() + " | W " + drink.getPrice() + " | " + drink.getExplanation());
}
int payView = sc.nextInt();
if (payView >= 1 && payView <= drinkList.size()) {
inPutMenu.add(drinkList.get(payView - 1));
System.out.println(drinkList.get(payView - 1).getName() + "가 장바구니에 추가되었습니다.");
}
} else if (choice == 4) {
// 맥주 객체 생성
List<Menu> beerList = new ArrayList<>();
String[] beerNames = {"ShackMeister Ale", "Magpie Brewing Co."};
String[] beerDescriptions = {"뭐시깽이 맥주", "저시깽이 맥주"};
double[] beerPrices = {3.9, 3.4};
// 배열을 리스트 안에 넣기
for (int i = 0; i < beerNames.length; i++) {
Menu beer = new Menu(beerNames[i], beerDescriptions[i]);
beer.setPrice(beerPrices[i]);
beerList.add(beer);
}
System.out.println("[ Beer MENU ]");
for (int i = 0; i < beerList.size(); i++) {
Menu beer = beerList.get(i);
System.out.println((i + 1) + ". " + beer.getName() + " | W " + beer.getPrice() + " | " + beer.getExplanation());
}
int payView = sc.nextInt();
if (payView >= 1 && payView <= beerList.size()) {
inPutMenu.add(beerList.get(payView - 1));
System.out.println(beerList.get(payView - 1).getName() + "가 장바구니에 추가되었습니다.");
}
} else if (choice == 5) {
System.out.println("장바구니에 담긴 메뉴 목록:");
double totalAmount = 0.0;
for (int i = 0; i < inPutMenu.size(); i++) {
Menu menu = inPutMenu.get(i);
totalAmount += menu.getPrice();
System.out.println((i + 1) + ". " + menu.getName() + " | W " + menu.getPrice() + " | " + menu.getExplanation());
}
System.out.println("[ Total ]");
System.out.println("W " + totalAmount);
System.out.println("1. 주문 2. 메뉴판");
int yesOrNo = sc.nextInt();
if (yesOrNo == 1) {
System.out.println("주문이 완료되었습니다.");
WaitingNumber++;
System.out.println("대기번호는 [ " + WaitingNumber + " ] 번 입니다.");
System.out.println("3초 후 메뉴판으로 돌아갑니다.");
Thread.sleep(3000);
} else if (yesOrNo == 2) {
System.out.println("진행 중인 주문을 취소합니다.");
}
} else if (choice == 6) {
System.out.println("진행하던 주문을 취소하시겠습니까?");
System.out.println("1. 확인 2. 취소");
int empty = sc.nextInt();
if (empty == 1) {
inPutMenu = new ArrayList<>();
System.out.println("진행하던 주문이 취소되었습니다.");
} else if (empty == 2) {
System.out.println("주문을 지속합니다.");
}
}
}
}
}
다형성이란? (0) | 2023.11.08 |
---|---|
필드, 메소드, 매개변수 (0) | 2023.11.07 |
2023-10-23 간단한 게시판 만들기 (1) | 2023.10.23 |
2023-10-20 TIJava 인터페이스 (0) | 2023.10.20 |
2023-10-19 TIL (1) | 2023.10.20 |