Notice
Recent Posts
Recent Comments
Link
«   2026/09   »
일 월 화 수 목 금 토
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
Tags more
Archives
Today
Total
관리 메뉴

seaking110 님의 블로그

키오스크 과제 3일차 본문

Today I Learned

키오스크 과제 3일차

seaking110 2025. 1. 15. 20:55

Lv 4. 객체 지향 설계를 적용해 음식 메뉴와 주문 내역을 클래스 기반으로 관리하기

  • Menu 클래스 생성
    • Menu 클래스에서 카테고리를 관리
    • List <MenuItem> 을 Kiosk 클래스가 아닌 Menu 클래스에서 관리

Menu 클래스

public class Menu {
    // 필드
    List<MenuItem> menuItems = new ArrayList<>();
    String category;

    // 생성자
    public Menu(String category) {
        this.category = category;
    }


    // 메서드
    // 요구사항. 카테고리 이름을 반환하는 메서드 구현
    public String getCategory() {
        return category;
    }
    public void printMenuItems() {
        int count = 1;
        for (MenuItem item : menuItems) {
            System.out.printf("%d. %-20s | W %.1f | %s\n", count, item.name, item.price, item.text);
            count++;
        }
    }
}

 

Main 클래스

        List <Menu> menu = new ArrayList<>();
        Menu burgerMenu = new Menu("Burgers");
        menu.add(burgerMenu);
        burgerMenu.menuItems.add(new MenuItem("Thigh Burger",4.9, "바삭한 치킨 패티와 양상추가 조화를 이루는 맘스터치 시그니처 버거."));
        burgerMenu.menuItems.add(new MenuItem("Fire Thigh Burger",5.1, "불맛이 살아있는 버거, 싸이버거의 매운맛 버전."));
        burgerMenu.menuItems.add(new MenuItem("White Garlic Burger",5.5, "화이트 갈릭소스에 더블햄과 통가슴살 패티까지 담은 버거."));
        burgerMenu.menuItems.add(new MenuItem("Deep Cheese Burger",5.4, "부드러운 치즈와 통가슴살 패티 버거."));
        Menu drinkMenu = new Menu("Drinks");
        menu.add(drinkMenu);
        drinkMenu.menuItems.add(new MenuItem("Coke",1.8, "시원한 콜라."));
        drinkMenu.menuItems.add(new MenuItem("Zero Coke",2.0, "시원한 제로 콜라."));
        drinkMenu.menuItems.add(new MenuItem("Sprite", 1.8, "시원한 스프라이트"));
        drinkMenu.menuItems.add(new MenuItem("Fanta Orange",1.8, "시원한 오렌지 맛 환타."));
        Menu dessertMenu = new Menu("Desserts");
        Kiosk kiosk = new Kiosk(menu);

 

  • 이를 이용해서 여러 카테고리의 메뉴들을 관리하고 상위 카테고리의 메뉴를 출력
  • 4까지 진행하니 이제 슬슬 키오스크 같아짐

 


 

Lv 5. 캡슐화 적용하기

  • 현재까지는 다른 클래스의 필드를 직접 접근하여 값을 수정
  • 이제부터는 객체 지향의 특징인 캡슐화를 이용하여 보안상 더욱 뛰어난 프로그램을 만들자!
  •  모든 클래스의 필드를 private로 변경!
    private final List<MenuItem> menuItems = new ArrayList<>();
    private final String category;

 

  • 이제 직접 접근할 수 없기 때문에 메서드를 통해 접근하도록 메서드를 만들어줘야한다.
    // 메서드
    // 메뉴 추가 메서드
    public void addMenuItem(MenuItem item){
        menuItems.add(item);
    }
	// 메뉴 리스트를 받아오는 메서드
    public List<MenuItem> getMenuItems() {
        return menuItems;
    }
	// 한개의 메뉴를 받아오는 메서드
    public MenuItem getMenuItem(int index) {
        return menuItems.get(index);
    }
	// 카테고리를 받아오는 메서드
    public String getCategory() {
        return category;
    }

 

  • 캡슐화를 진행하며 더욱 코드의 가독성이 뛰어나졌고 실수로 데이터가 수정되는 보안적인 기능을 강화

 


 

오늘의 문제

https://seaking110.tistory.com/52

'Today I Learned' 카테고리의 다른 글

Enum과 Stream  (0) 2025.01.17
분할 정복을 이용한 거듭제곱  (0) 2025.01.16
키오스크 과제 2일차  (1) 2025.01.14
객체간의 결합도와 다형성  (0) 2025.01.14
키오스크 과제 1일차  (0) 2025.01.13