✅ 객체 지향 설계를 적용해 햄버거 메뉴를 클래스로 관리
MenuItem클래스 생성하기
- 설명 : 개별 음식 항목을 관리하는 클래스입니다. 현재는 햄버거만 관리합니다.
- 클래스는
이름,가격,설명필드를 갖습니다.
main함수에서MenuItem클래스를 활용하여 햄버거 메뉴를 출력합니다.
MenuItem객체 생성을 통해이름,가격,설명을 세팅합니다.
- 키워드:
newList를 선언하여 여러MenuItem을 추가합니다.
List<MenuItem> menuItems = new ArrayList<>();- 반복문을 활용해
menuItems를 탐색하면서 하나씩 접근합니다.
package Lv2;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Lv2Main {
public static void main(String[] args) {
List<Lv2MenuItem> menuItems = new ArrayList<>();
// menuItem 이라는 리스트에 햄버거 정보를 추가
menuItems.add(new Lv2MenuItem("ShackBurger", 6.9, "토마토, 양상추, 쉑소스가 토핑된 치즈버거"));
menuItems.add(new Lv2MenuItem("SmokeShack", 8.9, "베이컨, 체리 페퍼에 쉑소스가 토핑된 치즈버거"));
menuItems.add(new Lv2MenuItem("Cheeseburger", 6.9, "포테이토 번과 비프패티, 치즈가 토핑된 치즈버거"));
menuItems.add(new Lv2MenuItem("Hamburger", 5.4, "비프패티를 기반으로 야채가 들어간 기본버거"));
Scanner scanner = new Scanner(System.in);
System.out.print("햄버거 메뉴를 보시려면 'hamburger'를 입력해주세요. : ");
String shakeshackMenu = scanner.nextLine();
// 리스트에 들어가 있는 값을 for문을 통해 출력
System.out.println("[ SHAKESHACK MENU ]");
for (int i = 0; i < menuItems.size(); i++) {
System.out.print(i + 1 + ". ");
System.out.println(menuItems.get(i));
}
System.out.println("0. 종료");
int num; // 메뉴를 선택하기 위한 숫자 변수 생성
do { // 0을 입력하기 전까지 원하는 메뉴 선택
System.out.println("\n");
System.out.print("원하는 메뉴를 선택해주세요. (0을 입력하시면 종료됩니다.): ");
num = scanner.nextInt();
if (num == 1) {
System.out.println(menuItems.get(0));
} else if (num == 2) {
System.out.println(menuItems.get(1));
} else if (num == 3) {
System.out.println(menuItems.get(2));
} else if (num == 4) {
System.out.println(menuItems.get(3));
}
} while (num != 0);
System.out.println("프로그램을 종료합니다."); // 0을 입력해 do-while 문을 빠져나왔을 때 실행
}
}
package Lv2;
public class Lv2MenuItem {
// 1. 속성
String name;
double price;
String foodDetails;
// 2. 생성자
public Lv2MenuItem(String name, double price, String foodDetails) {
this.name = name;
this.price = price;
this.foodDetails = foodDetails;
}
// 3. 기능
// 주소값을 출력하는 것이 아닌 리스트안에 들어있는 값을 출력하기 위해 toString 메서드 작성
public String toString() {
return name + " | " + "W" + price + " | " + foodDetails;
}
}
List에 담긴 값 출력 시 주소값이 나오는 상황
List에 담긴 값이Heap영역에 저장되기 때문에 자바에서 객체를 출력할 때 기본적으로toString()메서드가 호출되는데 만약toString()을 오버라이드하지 않으면 객체의 주소값이 출력된다.
Lv2Menuitem클래스에 toString() 메서드를 만들어 주소값을 출력하는 것이 아닌List안에 들어있는 살제 값을 출력하도록 구현했다.
toString()메서드를 오버라이드하는 것이 객체를 출력할 때 매우 중요한 부분이라는 것을 배우게 되었다. 이를 통해 더 직관적이고 이해하기 쉬운 방식으로 출력을 만들 수 있다는 점에서 객체 지향 프로그래밍의 중요성을 더욱 느꼈다.