문제 2. 음식 주문 시스템 만들기
이 시스템은 메뉴를 관리하고, 주문을 받아 처리하는 기능을 가집니다. 여기서는 메뉴 클래스(Menu), 주문 클래스(Order), 그리고 주문 관리 클래스(OrderManager)를 구현합니다.
- Menu 클래스: 음식 이름과 가격을 관리합니다.
- Order 클래스: 특정 메뉴 항목에 대한 주문을 담습니다. 주문 번호와 주문한 메뉴 항목의 리스트를 포함합니다.
- OrderManager 클래스: 모든 주문을 관리합니다. 새 주문을 추가하고, 모든 주문을 보여주는 기능을 가집니다.
위의 3가지를 기능을 아래 템플릿에 맞춰서 클래스로 구현해보세요.
클래스 구현이 완료되면, 아래 실행 예시가 올바르게 실행되어야 합니다!
1. Menu 클래스 만들기
class Menu:
def __init__(self, name, price) :
self.name = name
self.price = price
def __str__(self):
return f"{self.name}: ${self.price}"
pizza = Menu("Pizza", 10)
pasta = Menu("Pasta", 8)
salad = Menu("Salad", 5)
2. Order 클래스 만들기
class Order :
ID = 0 #클래스 변수
def __init__(self):
Order.ID += 1 #1, 2, 3
self.ID = Order.ID
self.orderlist = [ ]
def add_item(self, name):
self.orderlist.append(name)
Order 클래스에는 order1, order2, order3 ... 이런 식으로 속성을 갖고, 횟수에 따라 Order가 누적된다.
ID=0 이 부분은 def 바깥(인스턴스 메서드 바깥에서 정의)에 위치하는데, 이걸 클래스 변수라고 부르고 클래스의 모든 인스턴스가 공유하는 변수이다. 처음으로 add_item을 하면 ID가 1로 증가하고, self.ID 에 1을 담아주고, orderlist를 만든다. add_item을 한 번 더 하면 ID가 2가 되고 order2의 orderlist가 다시 만들어진다. 이 orderlist에는 add_item에서 받는 이름이 들어간다.
3. OrderManager 클래스 만들기
class OrderManager :
def __init__(self) :
self.orders = []
#self.orders는 OrderManager의 인스턴스 변수. 이 변수에 빈 리스트를 할당해줌.
#주문을 관리할 리스트. 여기에 order1, order2가 저장되게 할거야
#order1, order2는 Order 클래스의 인스턴스들. 이걸 가져와야해. 어떻게? 바로 아래!)
def add_new_order(self):
order = Order()
# Order 인스턴스를 가져온다. 새로운 Order 인스턴스 생성!!!
#Order 클래스의 객체를 가져와서 order에 저장함.
self.orders.append(order)
#빈리스트에 order에 저장된 값을 붙인다.
#여기 Order 클래스 인스턴스가 들어가서, 그 속성인 ID와 orderlist에 접근할 수 있다.
return order
def show_all_orders(self):
for order in self.orders:
#주문들(order1, order2...)이 들어있는 리스트에서 주문을 하나씩 빼온다
print("Order ID:", order.ID)
#위에서 Order 클래스 인스턴스가 들어가서, 그 속성인 ID와 orderlist에 접근할 수 있다.
print("Items Ordered:")
for item in order.orderlist:
print(item)
print(" ")
객체 지향 프로그래밍이라는 것... 아직도 난해하다
OrderManager 클래스는 Order 클래스의 인스턴스들을 생성하고 관리합니다. OrderManager 클래스가 Order 클래스의 메서드나 속성을 사용할 수 있는 이유는, OrderManager 클래스가 Order 클래스의 인스턴스를 생성하고, 이 인스턴스들의 속성과 메서드에 접근하기 때문입니다. 이는 객체 지향 프로그래밍의 기본 개념인 "객체의 조합"을 통해 이루어집니다.
'공부방 > Upstage AI Lab 4기' 카테고리의 다른 글
파이썬 클래스 연습문제 2 - 이제 조금은 알 것 같기도 하다 (0) | 2024.08.02 |
---|---|
파이썬 클래스에서 2차 멘붕, 다시 개념 잡기... (0) | 2024.08.02 |
7/31 학습일지 | 파이썬 클래스 문제 풀다가 머리 터지는 중 (0) | 2024.08.01 |
7/30 학습일지 | 파이썬 함수 쓸 때 꼭 살펴볼 것 (0) | 2024.07.31 |
파이썬 출력문 역슬래시 사용법 (0) | 2024.07.30 |