이번 블로그에서는 상속을 통해 코드문을 반복해서 작성하지 않아도 되는 재사용성의 유용함과 객체지향 프로그램밍의 기본 개념을 이해할 수 있도록, 파이썬의 상속을 활용하여 간단한 라멘 주문 시스템을 만들어보겠다.
객체지향 프로그래밍은 컴퓨터 프로그램을 만들 때 사용되는 방법 중 하나인데, 이 방법은 우리가 실제 세상을 바라보는 방식과 비슷하게 프로그램을 만들게 해준다. 예를 들어, 라면가게에서 라면을 시켜먹는다고 할 때, 라면은 매운라면, 달걀을 얹은 라면, 꼬들꼬들한 라면 등 여러가지 종류가 있지만 이 모두 "라면" 이라는 큰 그룹에 속해있다.
그리고 각 라면은 각기 다양한 특징을 가지고 있는데, 이러한 특성과 기능을 가진 하나의 라면을 '객체'라고 한다. 이렇게 프로그램을 만들면, 여러 종류의 라면처럼 다양한 객체들을 만들고, 필요한 기능을 더하거나 바꿀 수 있어서 프로그램을 더 쉽게 만들고, 관리할 수 있게 도와준다.
기본 클래스 생성
먼저, 기본 라면 클래스인 Ramen을 정의한다. 이 클래스는 라멘의 이름, 가격, 옵션을 속성으로 가지고 있으며, 손님이 메뉴을 주문하는 order 메서드와 주문을 받고 가격은 안내하는 ordered 라멘 육수의 정도를 물어보는 level_ask 메서드를 통해 주문 내용을 출력한다.
class Ramen:
def __init__(self, name, price, option):
self.name = name
self.price = price
self.option = option
def order(self):
print(f"I'd like to oder a {self.name} ramen please with {self.option} option.")
def ordered(self):
print(f"you have ordered a {self.name} with {self.option} option. The price is 7 dollars")
def level_ask(self):
print(f"what level of ramen would you like?")
- __init__ 메서드: 객체가 생성될 때 호출되며, 라면의 이름(name), 가격(price), 옵션(option)을 초기화한다.
spicyramen 클래스 생성
Ramen 클래스를 상속받는 spicyramen 클래스를 정의한다. 라면 이름, 가격, 옵션, 육수 레벨 크기 정보를 가지고 있다.
class spicyramen(Ramen):
def __init__(self,name,price,option):
super().__init__(name,price,option)
self.very_spicy = False
def spicy_level(self):
print("I'll choose spicy level 3")
- super().__init__ 메서드: 부모 클래스인 Ramen의 __init__ 메서드를 호출하여 name, price, option을 초기화한다.
shoyuramen클래스 생성
마찬가지로 Ramen 클래스를 상속받는 shoyuramen 클래스를 정의한다.
class shoyuramen(Ramen):
def __init__(self,name,price,option):
super().__init__(name,price,option)
self.very_salty = True
def shoyu_level(self):
print("I'll choose salty level 5")
객체 생성 및 메서드 호출
객체지향프로그래밍에서는 객체가 없으면 출력이 되지 않는다.
객체를 생성해서 이제 손님이 주문을 하고, 점원이 주문을 받을 수 있도록 코드를 작성한다.
# 객체 생성
Jason = spicyramen(name="spicy", price=7, option = "onion")
Hana = shoyuramen(name ="shoyu", price =8, option = "egg")
# 메서드 호출
Jason.order()
Hana.order()
Jason.ordered()
Hana.ordered()
Jason.level_ask()
Hana.level_ask()
Jason.spicy_level()
Hana.shoyu_level()
<실행결과>
'파이썬' 카테고리의 다른 글
파이썬 객체 프로그래밍 (0) | 2024.06.18 |
---|---|
파이썬으로 브라우저 조작하기 (Playwright) (0) | 2024.06.18 |
파이썬 Methods (1) | 2024.06.08 |
파이썬의 str 메서드 (__str__) (0) | 2024.06.08 |
파이썬 클래스 이해하기 (2) | 2024.06.08 |