seaking110 님의 블로그
키오스크 과제 3일차 본문
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;
}
- 캡슐화를 진행하며 더욱 코드의 가독성이 뛰어나졌고 실수로 데이터가 수정되는 보안적인 기능을 강화
오늘의 문제
'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 |