자원의 재활용 : 클래스는 다른 클래스를 불러다 사용 가능
- 클래스의 포함관계(has a)
class Pohamhandle: #핸들이 필요한 어떤 클래스에서든 호출될 수 있다.
quantity= 0 # 회전량
def LeftTurn(self, quantity):
self.quantity = quantity
return '좌회전'
def RightTurn(self, quantity):
self.quantity = quantity
return '우회전'
# ...
# 여러 자동차를 위한 여러 부품 별도의 클래스로 제작 : 생략
# 완성차 클래스
class PohamCar:
turnShowMessage = '정지'
def __init__(self, ownerName):
self.ownerName = ownerName
self.handle = Pohamhandle() # 클래스의 포함
def TurnHandle(self, q):
if q > 0 :
self.turnShowMessage = self.handle.RightTurn(q)
elif q < 0 :
self.turnShowMessage = self.handle.LeftTurn(q)
elif q == 0 :
self.turnShowMessage = '직진'
self.handle.quantity= 0
if __name__ == '__main__':
tom = PohamCar('톰')
tom.TurnHandle(10)
print(tom.ownerName + '의 회전량은 '+ tom.turnShowMessage + str(tom.handle.quantity))
tom = PohamCar('톰')
tom.TurnHandle(0)
print(tom.ownerName + '의 회전량은 '+ tom.turnShowMessage + str(tom.handle.quantity))
print()
oscar = PohamCar('오스카')
oscar.TurnHandle(-5)
print(oscar.ownerName + '의 회전량은 '+ oscar.turnShowMessage + str(oscar.handle.quantity))
# 내장고에 음식 담기 - 클래스의 포함관계로 구현
class Fridge:
isOpened = False
foods = []
def open(self):
self.isOpened =True
print('냉장고 문 열기')
def put(self, thing):
if self.isOpened:
self.foods.append(thing) # 포함관계
print('냉장고 안에 음식을 저장함.')
self.food_list()
else:
print('냉장고 문이 닫쳐 있어 음식을 저장할 수 없다.')
def close(self):
self.isOpened = False
print("냉장고 문 닫기")
def food_list(self):
for f in self.foods:
print('-', f.name, f.expiry_date)
print()
class FoodData:
def __init__(self, name, expiry_date):
self.name = name
self.expiry_date = expiry_date
if __name__ == '__main__':
f = Fridge()
apple = FoodData('사과', '2022-10-25')
f.put(apple)
f.open()
f.put(apple)
f.close()
print()
minfe=FoodData('민철','2088-11-11')
f.open()
f.put(minfe)
f.close()
클래스의 포함관계 : 로또번호 출력기
import random
class LottoBall:
def __init__(self, num):
self.num = num
class Lottomachine:
def __init__(self):
self.ballList =[]
for i in range(1, 46):
self.ballList.append(LottoBall(i)) #포함 관계
def selectBalls(self):
# 볼 섞기 전 출력하기
for a in range(45):
print(self.ballList[a].num, end=' ')
random.shuffle(self.ballList) # 랜덤하게 공을 섞기
print()
for a in range(45):
print(self.ballList[a].num, end=' ')
return self.ballList[0:6]
print()
class LottoUi:
def __init__(self):
self.machine = Lottomachine() # 포함
def playLotto(self):
input('로또를 시작 하려면 엔터키를 누르세요!')
selectedBalls = self.machine.selectBalls()
print('당첨번호')
for ball in selectedBalls:
print('%d '%ball.num, end=' ')
if __name__ == '__main__':
#lo = LottoUi()
#lo.playLotto()
LottoUi().playLotto()