오늘은 대대적인 키오스크 리팩토링을 진행하였다.
자 이제 리팩토링 시작할 차례
우선 밑에 적혀진 엄청나게 긴 것들을... Display 클래스가 역할을 충실하게 할 수 있게 다 옮겨줄 것이다.
import java.util.*;
public class Main {
public static void main(String[] args) throws InterruptedException {
Order order = new Order();
Display display = new Display();
// 메인 화면을 불러오는 메소드
boolean runner = false;
while (!runner) {
display.getMain();
Scanner mainScanner = new Scanner(System.in);
int number = mainScanner.nextInt();
if (number == 1) {
Product[] burgerSetMenu = new Product[]{
new Product("콰트로 치즈 와퍼 세트", "네가지 고품격 치즈와 100% 순쇠고기 패티로 탄생한 버거킹의 스테디 셀러", 11300.0),
new Product("더블 비프 불고기 버거 세트", "달콤한 불고기 소스에 더블 패티로 더욱 깊어진 감칠맛", 7900.0),
new Product("트러플 머쉬룸 와퍼 세트", "트러플소스 2배로 더욱 깊어진 풍미, 네 가지 머쉬룸이 선사하는 깊고 풍부한 맛의 향연", 11900.0)
};
System.out.println();
System.out.println("버커킹 에 오신걸 환영합니다.");
System.out.println("아래 상품메뉴판을 보시고 상품을 골라 입력해주세요");
System.out.println();
// System.out.println("[ " + mainMenu[0].name + " MENU ]");
for (int i = 0; i < burgerSetMenu.length; i++) {
System.out.println(i + 1 + ". " + burgerSetMenu[i].name + "\t | " + burgerSetMenu[i].price + "\t | " + burgerSetMenu[i].explain);
}
System.out.println();
System.out.println("[ ORDER MENU ]");
System.out.println("4. 장바구니 확인");
System.out.println("5. 주문 취소");
System.out.println();
int setOrder = mainScanner.nextInt();
if (setOrder == 1) {
order.addBasket(burgerSetMenu[0]);
} else if (setOrder == 2) {
order.addBasket(burgerSetMenu[1]);
} else if (setOrder == 3) {
order.addBasket(burgerSetMenu[2]);
} else if (setOrder == 4) {
order.getBasket();
} else if (setOrder == 5) {
order.cancleBasket();
}
} else if (number == 2) {
Product[] burgerMenu = new Product[]{
new Product("콰트로 치즈 와퍼", "네가지 고품격 치즈와 100% 순쇠고기 패티로 탄생한 버거킹의 스테디 셀러", 8800.0),
new Product("더블 비프 불고기 버거", "달콤한 불고기 소스에 더블 패티로 더욱 깊어진 감칠맛", 5900.0),
new Product("트러플 머쉬룸 와퍼", "트러플소스 2배로 더욱 깊어진 풍미, 네 가지 머쉬룸이 선사하는 깊고 풍부한 맛의 향연", 9400.0)
};
System.out.println();
System.out.println("버커킹 에 오신걸 환영합니다.");
System.out.println("아래 상품메뉴판을 보시고 상품을 골라 입력해주세요");
System.out.println();
// System.out.println("[ " + mainmenu[1].name + " MENU ]");
for (int i = 0; i < burgerMenu.length; i++) {
System.out.println(i + 1 + ". " + burgerMenu[i].name + "\t | " + burgerMenu[i].price + "\t | " + burgerMenu[i].explain );
}
System.out.println();
System.out.println("[ ORDER MENU ]");
System.out.println("4. 장바구니 확인");
System.out.println("5. 주문 취소");
System.out.println();
int setOrder = mainScanner.nextInt();
if (setOrder == 1) {
order.addBasket(burgerMenu[0]);
} else if (setOrder == 2) {
order.addBasket(burgerMenu[1]);
} else if (setOrder == 3) {
order.addBasket(burgerMenu[2]);
} else if (setOrder == 4) {
order.getBasket();
} else if (setOrder == 5) {
order.cancleBasket();
}
} else if (number == 3) {
Product[] sideMenu = new Product[]{
new Product("트러플 치즈 프라이", "트러플소스와 바삭한 프렌치프라이에 고소한 치즈까지", 3900.0),
new Product("너겟킹 4조각", "바삭하고 촉촉한 부드러운 너겟킹", 3100.0),
new Product("크리미모짜볼 10조각", "겉은 바삭~ 속은 부드러운 크림치즈가 쏘옥, 크리미모짜볼", 5600.0)
};
System.out.println();
System.out.println("버커킹 에 오신걸 환영합니다.");
System.out.println("아래 상품메뉴판을 보시고 상품을 골라 입력해주세요");
System.out.println();
// System.out.println("[ " + mainmenu[2].name + " MENU ]");
for (int i = 0; i < sideMenu.length; i++) {
System.out.println(i + 1 + ". " + sideMenu[i].name + "\t | " + sideMenu[i].price + "\t | " + sideMenu[i].explain);
}
System.out.println();
System.out.println("[ ORDER MENU ]");
System.out.println("4. 장바구니 확인");
System.out.println("5. 주문 취소");
System.out.println();
int setOrder = mainScanner.nextInt();
if (setOrder == 1) {
order.addBasket(sideMenu[0]);
} else if (setOrder == 2) {
order.addBasket(sideMenu[1]);
} else if (setOrder == 3) {
order.addBasket(sideMenu[2]);
} else if (setOrder == 4) {
order.getBasket();
} else if (setOrder == 5) {
order.cancleBasket();
}
} else if (number == 4) {
order.getBasket();
} else if (number == 5) {
order.cancleBasket();
} else if (number == 0) {
order.adminPassword();
}
}
}
}
import java.util.Scanner;
public class Display {
// 생성자
public Display () {}
// 메소드
void getMain() throws InterruptedException {
System.out.println();
System.out.println("버커킹 에 오신걸 환영합니다.");
System.out.println("아래 메뉴판을 보시고 메뉴를 골라 입력해주세요");
System.out.println();
System.out.println("[ BURGERKING MENU ]");
for (int i = 0; i < mainMenu.length; i++) {
System.out.println(i+1 + ". " + mainMenu[i].name + " | " + mainMenu[i].explain);
}
System.out.println();
System.out.println("[ ORDER MENU ]");
System.out.println("4. 장바구니 확인");
System.out.println("5. 주문 취소");
System.out.println();
Scanner mainScanner = new Scanner(System.in);
int number = mainScanner.nextInt();
if (number == 1) {
getBurgerSetMenu();
} else if (number == 2) {
getBurgerMenu();
} else if (number == 3) {
getSideMenu();
} else if (number == 4) {
order.getBasket();
} else if (number == 5) {
order.cancleBasket();
} else if (number == 0) {
order.adminPassword();
} else {
System.out.println("잘못된 값을 입력했습니다. 메인으로 돌아갑니다.");
}
}
void getBurgerSetMenu() throws InterruptedException {
Scanner mainScanner = new Scanner(System.in);
System.out.println();
System.out.println("버커킹 에 오신걸 환영합니다.");
System.out.println("아래 상품메뉴판을 보시고 상품을 골라 입력해주세요");
System.out.println();
System.out.println("[ " + mainMenu[0].name + " MENU ]");
for (int i = 0; i < burgerSetMenu.length; i++) {
System.out.println(i + 1 + ". " + burgerSetMenu[i].name + "\t | " + burgerSetMenu[i].price + "\t | " + burgerSetMenu[i].explain);
}
System.out.println();
System.out.println("[ ORDER MENU ]");
System.out.println("4. 장바구니 확인");
System.out.println("5. 주문 취소");
System.out.println();
int setOrder = mainScanner.nextInt();
if (setOrder == 1) {
order.addBasket(burgerSetMenu[0]);
} else if (setOrder == 2) {
order.addBasket(burgerSetMenu[1]);
} else if (setOrder == 3) {
order.addBasket(burgerSetMenu[2]);
} else if (setOrder == 4) {
order.getBasket();
} else if (setOrder == 5) {
order.cancleBasket();
} else {
System.out.println("잘못된 값을 입력했습니다. 메인으로 돌아갑니다.");
}
}
void getBurgerMenu() throws InterruptedException {
Scanner mainScanner = new Scanner(System.in);
System.out.println();
System.out.println("버커킹 에 오신걸 환영합니다.");
System.out.println("아래 상품메뉴판을 보시고 상품을 골라 입력해주세요");
System.out.println();
System.out.println("[ " + mainMenu[1].name + " MENU ]");
for (int i = 0; i < burgerMenu.length; i++) {
System.out.println(i + 1 + ". " + burgerMenu[i].name + "\t | " + burgerMenu[i].price + "\t | " + burgerMenu[i].explain );
}
System.out.println();
System.out.println("[ ORDER MENU ]");
System.out.println((burgerMenu.length+1)+". 장바구니 확인");
System.out.println((burgerMenu.length+2)+". 주문 취소");
System.out.println();
int setOrder = mainScanner.nextInt();
if (setOrder == 1) {
order.addBasket(burgerMenu[0]);
} else if (setOrder == 2) {
order.addBasket(burgerMenu[1]);
} else if (setOrder == 3) {
order.addBasket(burgerMenu[2]);
} else if (setOrder == 4) {
order.getBasket();
} else if (setOrder == 5) {
order.cancleBasket();
} else {
System.out.println("잘못된 값을 입력했습니다. 메인으로 돌아갑니다.");
}
}
void getSideMenu() throws InterruptedException {
Scanner mainScanner = new Scanner(System.in);
System.out.println();
System.out.println("버커킹 에 오신걸 환영합니다.");
System.out.println("아래 상품메뉴판을 보시고 상품을 골라 입력해주세요");
System.out.println();
System.out.println("[ " + mainMenu[2].name + " MENU ]");
for (int i = 0; i < sideMenu.length; i++) {
System.out.println(i + 1 + ". " + sideMenu[i].name + "\t | " + sideMenu[i].price + "\t | " + sideMenu[i].explain);
}
System.out.println();
System.out.println("[ ORDER MENU ]");
System.out.println((sideMenu.length+1)+". 장바구니 확인");
System.out.println((sideMenu.length+2)+". 주문 취소");
System.out.println();
int setOrder = mainScanner.nextInt();
if (setOrder == 1) {
order.addBasket(sideMenu[0]);
} else if (setOrder == 2) {
order.addBasket(sideMenu[1]);
} else if (setOrder == 3) {
order.addBasket(sideMenu[2]);
} else if (setOrder == 4) {
order.getBasket();
} else if (setOrder == 5) {
order.cancleBasket();
} else {
System.out.println("잘못된 값을 입력했습니다. 메인으로 돌아갑니다.");
}
}
// 하위 객체
Menu[] mainMenu = new Menu[]{
new Menu("햄버거 세트\t","햄버거 세트입니다."),
new Menu("햄버거 단품\t", "햄버거 단품입니다."),
new Menu("사이드\t", "사이드 메뉴입니다.")
};
Product[] burgerSetMenu = new Product[]{
new Product("콰트로 치즈 와퍼 세트", "네가지 고품격 치즈와 100% 순쇠고기 패티로 탄생한 버거킹의 스테디 셀러", 11300.0),
new Product("더블 비프 불고기 버거 세트", "달콤한 불고기 소스에 더블 패티로 더욱 깊어진 감칠맛", 7900.0),
new Product("트러플 머쉬룸 와퍼 세트", "트러플소스 2배로 더욱 깊어진 풍미, 네 가지 머쉬룸이 선사하는 깊고 풍부한 맛의 향연", 11900.0)
};
Product[] burgerMenu = new Product[]{
new Product("콰트로 치즈 와퍼", "네가지 고품격 치즈와 100% 순쇠고기 패티로 탄생한 버거킹의 스테디 셀러", 8800.0),
new Product("더블 비프 불고기 버거", "달콤한 불고기 소스에 더블 패티로 더욱 깊어진 감칠맛", 5900.0),
new Product("트러플 머쉬룸 와퍼", "트러플소스 2배로 더욱 깊어진 풍미, 네 가지 머쉬룸이 선사하는 깊고 풍부한 맛의 향연", 9400.0)
};
Product[] sideMenu = new Product[]{
new Product("트러플 치즈 프라이", "트러플소스와 바삭한 프렌치프라이에 고소한 치즈까지", 3900.0),
new Product("너겟킹 4조각", "바삭하고 촉촉한 부드러운 너겟킹", 3100.0),
new Product("크리미모짜볼 10조각", "겉은 바삭~ 속은 부드러운 크림치즈가 쏘옥, 크리미모짜볼", 5600.0)
};
Order order = new Order();
}
하위객체 필드에 각 메뉴를 하나하나 클래스에 맞게 배열에 넣어주었다.
import java.util.*;
public class Main {
public static void main(String[] args) throws InterruptedException {
Display display = new Display();
// 메인 화면을 불러오는 메소드
boolean runner = false;
while (!runner) {
display.getMain();
}
}
}
매우 깔끔 ㅋㅋ
이거 하면서 어려웠던게 있는데
자꾸 display랑 order랑 충돌되면서 오류가 뜨는 거다.. 뭔지 몰랐는데 분명 둘 사이에 뭔가가 문제 있다 생각해서 보니까
Order 클래스에 returnMain이라는 메서드를 만드려고 display 클래스를 인스턴스화 시켰었는데 이게 문제 였던 것이다.
Display display = new Display();
Display 클래스에는 Order를 인스턴스화 시켜놨었다
Order order = new Order();
Order 클래스 내의 display 인스턴스를 지우니 간편하게 해결이 됐었다.
import java.util.Scanner;
public class Display {
// 필드
int password = 1004;
// 생성자
public Display () {}
// 메소드
void getMain() throws InterruptedException {
System.out.println();
System.out.println("버커킹 에 오신걸 환영합니다.");
System.out.println("아래 메뉴판을 보시고 메뉴를 골라 입력해주세요");
System.out.println();
System.out.println("[ BURGERKING MENU ]");
for (int i = 0; i < mainMenu.length; i++) {
System.out.println(i+1 + ". " + mainMenu[i].name + " | " + mainMenu[i].explain);
}
System.out.println();
System.out.println("[ ORDER MENU ]");
System.out.println((mainMenu.length + 1) + ". 장바구니 확인");
System.out.println((mainMenu.length + 2) + ". 주문 취소");
System.out.println();
Scanner mainScanner = new Scanner(System.in);
int number = mainScanner.nextInt();
if (number == 1) {
getBurgerSetMenu();
} else if (number == 2) {
getBurgerMenu();
} else if (number == 3) {
getSideMenu();
} else if (number == (mainMenu.length + 1)) {
order.getBasket();
} else if (number == (mainMenu.length + 2)) {
order.cancleBasket();
} else if (number == 0) {
adminPassword();
} else {
System.out.println("잘못된 값을 입력했습니다. 메인으로 돌아갑니다.");
}
}
void getBurgerSetMenu() throws InterruptedException {
Scanner mainScanner = new Scanner(System.in);
System.out.println();
System.out.println("버커킹 에 오신걸 환영합니다.");
System.out.println("아래 상품메뉴판을 보시고 상품을 골라 입력해주세요");
System.out.println();
System.out.println("[ " + mainMenu[0].name + " MENU ]");
for (int i = 0; i < burgerSetMenu.length; i++) {
System.out.println(i + 1 + ". " + burgerSetMenu[i].name + "\t | " + burgerSetMenu[i].price + "\t | " + burgerSetMenu[i].explain);
}
System.out.println();
System.out.println("[ ORDER MENU ]");
System.out.println(burgerSetMenu.length + 1 +". 장바구니 확인");
System.out.println(burgerSetMenu.length + 2 +". 주문 취소");
System.out.println();
int setOrder = mainScanner.nextInt();
if (setOrder == 1) {
order.addBasket(burgerSetMenu[0]);
} else if (setOrder == 2) {
order.addBasket(burgerSetMenu[1]);
} else if (setOrder == 3) {
order.addBasket(burgerSetMenu[2]);
} else if (setOrder == (burgerSetMenu.length + 1)) {
order.getBasket();
} else if (setOrder == (burgerSetMenu.length + 2)) {
order.cancleBasket();
} else {
System.out.println("잘못된 값을 입력했습니다. 메인으로 돌아갑니다.");
}
}
void getBurgerMenu() throws InterruptedException {
Scanner mainScanner = new Scanner(System.in);
System.out.println();
System.out.println("버커킹 에 오신걸 환영합니다.");
System.out.println("아래 상품메뉴판을 보시고 상품을 골라 입력해주세요");
System.out.println();
System.out.println("[ " + mainMenu[1].name + " MENU ]");
for (int i = 0; i < burgerMenu.length; i++) {
System.out.println(i + 1 + ". " + burgerMenu[i].name + "\t | " + burgerMenu[i].price + "\t | " + burgerMenu[i].explain );
}
System.out.println();
System.out.println("[ ORDER MENU ]");
System.out.println((burgerMenu.length + 1) + ". 장바구니 확인");
System.out.println((burgerMenu.length + 2) + ". 주문 취소");
System.out.println();
int setOrder = mainScanner.nextInt();
if (setOrder == 1) {
order.addBasket(burgerMenu[0]);
} else if (setOrder == 2) {
order.addBasket(burgerMenu[1]);
} else if (setOrder == 3) {
order.addBasket(burgerMenu[2]);
} else if (setOrder == (burgerMenu.length + 1)) {
order.getBasket();
} else if (setOrder == (burgerMenu.length + 2)) {
order.cancleBasket();
} else {
System.out.println("잘못된 값을 입력했습니다. 메인으로 돌아갑니다.");
}
}
void getSideMenu() throws InterruptedException {
Scanner mainScanner = new Scanner(System.in);
System.out.println();
System.out.println("버커킹 에 오신걸 환영합니다.");
System.out.println("아래 상품메뉴판을 보시고 상품을 골라 입력해주세요");
System.out.println();
System.out.println("[ " + mainMenu[2].name + " MENU ]");
for (int i = 0; i < sideMenu.length; i++) {
System.out.println(i + 1 + ". " + sideMenu[i].name + "\t | " + sideMenu[i].price + "\t | " + sideMenu[i].explain);
}
System.out.println();
System.out.println("[ ORDER MENU ]");
System.out.println((sideMenu.length + 1) + ". 장바구니 확인");
System.out.println((sideMenu.length + 2) + ". 주문 취소");
System.out.println();
int setOrder = mainScanner.nextInt();
if (setOrder == 1) {
order.addBasket(sideMenu[0]);
} else if (setOrder == 2) {
order.addBasket(sideMenu[1]);
} else if (setOrder == 3) {
order.addBasket(sideMenu[2]);
} else if (setOrder == (sideMenu.length + 1)) {
order.getBasket();
} else if (setOrder == (sideMenu.length + 2)) {
order.cancleBasket();
} else {
System.out.println("잘못된 값을 입력했습니다. 메인으로 돌아갑니다.");
}
}
void adminPassword () {
Scanner mainScanner = new Scanner(System.in);
System.out.println();
System.out.println("[ ONLY ADMIN ]");
System.out.println();
System.out.println("1. 비밀번호 입력 2.돌아가기");
System.out.println();
int mainSelect = mainScanner.nextInt();
if (mainSelect == 1) {
System.out.println();
System.out.println("[ 비밀번호를 입력하세요 ]");
System.out.println();
int passwordInput = mainScanner.nextInt();
if (passwordInput == password) {
getAdminMenu();
} else {
System.out.println();
System.out.println("비밀번호를 틀렸습니다.");
adminPassword();
}
} else if (mainSelect == 2) {
System.out.println();
System.out.println("메인화면으로 돌아갑니다.");
} else {
System.out.println("잘못된 값을 입력했습니다.");
adminPassword();
}
}
void getAdminMenu () {
Scanner mainScanner = new Scanner(System.in);
System.out.println();
System.out.println("[ ADMIN MENU ]");
System.out.println();
System.out.println("1. 총 판매 금액 현황 2. 총 판매 상품 현황 3. 비밀번호 변경 4. 돌아가기");
System.out.println();
int mainSelect = mainScanner.nextInt();
if (mainSelect == 1) {
getSalesTotalPrice();
} else if (mainSelect == 2) {
getSalesTotalProduct();
} else if (mainSelect == 3) {
setAdminPassword();
} else if(mainSelect == 4) {
System.out.println();
System.out.println("메인화면으로 돌아갑니다.");
} else {
System.out.println();
System.out.println("잘못된 값을 입력했습니다.");
getAdminMenu();
}
}
void getSalesTotalPrice () {
Scanner mainScanner = new Scanner(System.in);
System.out.println();
System.out.println("[ 총 판매 금액 현황 ]");
System.out.println();
System.out.println("현재까지 총 판매된 금액은 [ " + order.salesTotalPrice + " ] 입니다.");
System.out.println();
System.out.println("1. ADMIN MENU로 돌아가기 2. 메인으로 돌아가기");
System.out.println();
int mainSelect = mainScanner.nextInt();
if (mainSelect == 1) {
getAdminMenu();
} else if (mainSelect == 2) {
System.out.println();
System.out.println("메인화면으로 돌아갑니다.");
} else {
System.out.println("잘못된 값을 입력했습니다.");
getSalesTotalPrice();
}
}
void getSalesTotalProduct() {
Scanner mainScanner = new Scanner(System.in);
System.out.println();
System.out.println("[ 총 판매상품 목록 현황 ]");
System.out.println();
System.out.println("현재까지 총 판매된 상품 목록은 아래와 같습니다.");
System.out.println();
for (int i = 0; i < order.salesTotalProduct.size(); i++){
System.out.println("- " + order.salesTotalProduct.get(i).name + "\t | " + order.salesTotalProduct.get(i).price);
}
System.out.println();
System.out.println("1. ADMIN MENU로 돌아가기 2. 메인으로 돌아가기");
System.out.println();
int mainSelect = mainScanner.nextInt();
if (mainSelect == 1) {
getAdminMenu();
} else if (mainSelect == 2) {
System.out.println();
System.out.println("메인화면으로 돌아갑니다.");
} else {
System.out.println("잘못된 값을 입력했습니다.");
getSalesTotalPrice();
}
}
void setAdminPassword() {
Scanner mainScanner = new Scanner(System.in);
System.out.println();
System.out.println("[ ADMIN 비밀번호 변경 ]");
System.out.println();
System.out.println("1. 비밀번호 변경하기 2. ADMIN MENU로 돌아가기");
System.out.println();
int mainSelect = mainScanner.nextInt();
if (mainSelect == 1) {
System.out.println();
System.out.println("[ ADMIN 비밀번호 변경 ]");
System.out.println();
System.out.print("현재 비밀번호 입력: ");
int inputPassword = mainScanner.nextInt();
if (inputPassword == password) {
System.out.println();
System.out.println("[ ADMIN 비밀번호 변경 ]");
System.out.println();
System.out.print("변경할 비밀번호 입력: ");
int setPassword = mainScanner.nextInt();
password = setPassword;
getAdminMenu();
} else {
System.out.println();
System.out.println("비밀번호를 틀렸습니다.");
setAdminPassword();
}
} else if (mainSelect == 2) {
getAdminMenu();
} else {
System.out.println("잘못된 값을 입력했습니다.");
setAdminPassword();
}
}
// 하위 객체
Menu[] mainMenu = new Menu[]{
new Menu("햄버거 세트","햄버거 세트입니다."),
new Menu("햄버거 단품", "햄버거 단품입니다."),
new Menu("사이드", "사이드 메뉴입니다.")
};
Product[] burgerSetMenu = new Product[]{
new Product("콰트로 치즈 와퍼 세트", "네가지 고품격 치즈와 100% 순쇠고기 패티로 탄생한 버거킹의 스테디 셀러", 11300.0),
new Product("비프 불고기 버거 세트", "불고기 소스와 불맛 가득 100% 순쇠고기 패티의 감칠맛나는 조화", 7900.0),
new Product("트러플 머쉬룸 와퍼 세트", "트러플소스 2배로 더욱 깊어진 풍미, 네 가지 머쉬룸이 선사하는 깊고 풍부한 맛의 향연", 11900.0)
};
Product[] burgerMenu = new Product[]{
new Product("콰트로 치즈 와퍼", "네가지 고품격 치즈와 100% 순쇠고기 패티로 탄생한 버거킹의 스테디 셀러", 8800.0),
new Product("비프 불고기 버거", "불고기 소스와 불맛 가득 100% 순쇠고기 패티의 감칠맛나는 조화", 5900.0),
new Product("트러플 머쉬룸 와퍼", "트러플소스 2배로 더욱 깊어진 풍미, 네 가지 머쉬룸이 선사하는 깊고 풍부한 맛의 향연", 9400.0)
};
Product[] sideMenu = new Product[]{
new Product("치즈 프라이", "바삭한 프렌치프라이에 고소한 치즈가 듬뿍 치즈프라이", 3900.0),
new Product("너겟킹 4조각", "바삭하고 촉촉한 부드러운 너겟킹 (4EA)", 3100.0),
new Product("크리미모짜볼", "겉은 바삭~ 속은 부드러운 크림치즈가 쏘옥, 크리미모짜볼 (10EA)", 5600.0)
};
Order order = new Order();
}
Admin 모드가 Order 클래스에 있었는데 이걸 Display에 옮기고 비밀번호 변경 기능을 만들어주기 위해
password를 필드에다가 옮겨주었다.
getSalesTotalProduct 이라는 메소드를 만들어주었는데
OrderClass에
ArrayList<Product> salesTotalProduct = new ArrayList<>();
이런 리스트를 만들고
기존에 salesTotalPrice에 계속 값을 담는 역할도 해주었던 setOrderNumber 메소드 안의 for문에 salesTotalProduct.add(basket.get(i));
이걸로 basket리스트에 들어가있는 값을 넣어주었다
void setOrderNumber () throws InterruptedException {
System.out.println();
// 여기에 주문 번호를 넣어주는 메소드가 들어갈 것
// orderNumber++..?
for (int i = 0; i < basket.size(); i++) {
double price = this.basket.get(i).price;
salesTotalPrice += price;
salesTotalProduct.add(basket.get(i));
}
System.out.println("주문이 완료되었습니다!");
System.out.println();
orderNumber++;
System.out.println("대기번호는 [ " + orderNumber +" ] 번 입니다.");
basket.clear();
basketTotalPrice = 0;
System.out.println("(3초후 메뉴판으로 돌아갑니다.)");
// 주문 번호 주고 3초 뒤 메인으로 다시 돌아가야 함
// Timer 유틸 쓸거임!! 공부하고 적용 / 어떻게 쓰지..?
Thread.sleep(3000);
}
이 기능을 만드면서 어떤 식으로 해야지 넣을 수 있을까 고민을 많이했는데
String name = this.basket.get(i).name;
String explain = this.basket.get(i).explain;
salesTotalProduct.add(name,explain,price)
막 이런 식으로 적었었다. 당연히 안됐음
매개변수가 문젠가..? 뭐가 문젠가..? 하면서 계속 고치다보니 알고보니 되게 바보같은 짓을 하고 있었던 것
땅파면서 배우는 거지
어쨌든 결국엔 완성
깃허브에 기능 추가될때, 리팩토링 할 때마다 push 및 커밋을 해서 변경사항 보면 얼마나 고민을 많이했나.. 볼 수 있다.
사실 class를 몇개 더 만들고 역할을 더욱 분배하고 싶은 그런 마음이 드는데 아직 능력부족
자바의 정석 더 보고 다음 프로젝트를 기약해야겠다.
'TIL' 카테고리의 다른 글
TIL 2023-10-25 static이란?? static 정리! (0) | 2023.10.25 |
---|---|
TIL 2023-10-24 Github Pull Request 가이드, 팀 협업!! (0) | 2023.10.24 |
TIL 2023-10-20 깊은 고뇌, 추상 클래스와 인터페이스 차이 (0) | 2023.10.20 |
TIL 2023-10-19 키오스크 프로젝트 장바구니 주문 구현 메소드 (0) | 2023.10.19 |
TIL 2023-10-18 프로그래머스 조건 문자열, 키오스크 개인 프로젝트 설계 및 구현 시작 (0) | 2023.10.18 |