Python - 9

윤기나는코딩·2023년 3월 13일
0

Python

목록 보기
10/16

자원의 재활용 : 클래스는 다른 클래스를 불러다 사용 가능

  • 클래스의 포함관계(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()
profile
꾸준히 정리해서 공부한것을 올려보자!

0개의 댓글