사용자 입력을 처리하고, 조건문과 반복문을 통해 흐름을 제어
객체 지향 설계를 적용해 메뉴를 클래스로 관리하기
데이터를 구조적으로 관리하기 위해 MenuItem
클래스를 생성하고, List를 활용해 메뉴 항목을 저장 및 관리
MenuItem 클래스의 속성과 생성자 메서드 구현
List<MenuItem>
을 사용해 여러 메뉴 항목을 동적으로 추가
CLI 키오스크 프로젝트의 구성입니다.
📂 src
└─ 📂 common
│ ├── Menu.java (메뉴 Enum 관리 클래스)
│ ├── MenuItem.java (메뉴 정보 관리 클래스)
│ └── test.txt (음식 메뉴 목록 관리)
└── 📂 lv2.kiosk
└── Main.java (메인 로직 구현)
패키지 구조: lv2.kiosk와 common 패키지로 나뉘어 있으며, common 패키지에는 공통 클래스(Menu, MenuItem)와 햄버거 메뉴가 저장된 텍스트 파일이 있습니다.
파일 입력: 메뉴 데이터는 공용패키지의 test.txt 파일에서 읽어옵니다.
기능: 메뉴 보기, 장바구니, 결제하기, 종료하기의 4가지 메인 메뉴가 있습니다. ( -lv2 기준 메뉴보기만 구현)
프로그램은 BufferedReader를 사용해 사용자 입력을 받고, enum과 List를 활용해 메뉴를 관리합니다.
1️⃣ Main 클래스
List<MenuItem>
를 반환2️⃣ Menu(ENUM)클래스
Menu는 키오스크 메뉴를 정의한 열거형으로, 각 메뉴(키오스크) 설명과 코드(정수)를 매핑합니다.
IllegalArgumentException
) 발생3️⃣ common.MenuItem 클래스
package common;
public class MenuItem {
private final String name;
private double price;
private String menuInfo;
public MenuItem(String name, String price, String menuInfo) {
...
this.name = name;
this.price = menuPrice;
this.menuInfo = menuInfo;
}
public String getName() { ...}
public double getPrice() { ...}
public String getMenuInfo() { ...}
}
while(MainFlag){
메뉴 보기
printMenu();
switch(){
case VIEW_MENU -> 음식 메뉴 보기
while(){
switch(Menu)
{
메뉴 리스트 선택 및 출력
}
}
case CART -> 장바구니
case CHECKOUT -> 주문(결제)
case EXIT -> 종료
메인 루프에서 사용자 입력을 받아 선택한 메뉴에 따라 동작을 처리
Menu(ENUM)
을 사용해 입력값을 매핑하고, switch 문으로 분기 처리
기존 lv1에서는 String 변수들을 사용해서 음식의 정보를 관리했지만, lv2에서는 MenuItem
클래스를 사용하여 관리합니다.
추가로 Main클래스가 있는 lv.kiosk 패키지에서 관리했던 test.txt파일을 공용 패키지인 common 패키지에 넣어 다른 lv.kiosk에서도 사용할 수 있도록 수정했습니다.
예외 처리를 추가했습니다.