언어 자료구조 알고리즘/프로그래밍 실습

[python] 상속 실습 - 음악가, 피아니스트

언제나휴일 2020. 10. 30. 09:47
반응형

클래스 다이어그램

다음과 같은 시나리오에 맞게 구현하시오.

 

Musician.py

#Musician.py
#음악가: 이름(생성 시 필수), 스킬(생성 시 필수), 매력(생성 시 전달 안 함:0)
#소개하다 기능: 자신의 이름, 스킬, 매력 출력
#연습하다: 스킬이 0.1 증가
#연주하다:매력이 스킬*0.1 증가

Pianist.py

#Pianist.py
#피아니스트: 음악가에서 파생
#레벨을 생성 시 전달받는다.
#독주회를 하다 - 레벨이 (스킬+매력)*0.1 증가

main.py

import 구문을 적절하게 추가하시오.


mus = Pianist("송정수",1,1)#피아니스트(이름,스킬,레벨)
mus.Introduce()
for i in range(0,10):
    for j in range(0,100):
        mus.Ex()#연습하다
    mus.Introduce()#소개하다
    mus.Play()#연주하다
    mus.Introduce()#소개하다
mus.SoloPlay()#독주회를 하다
mus.Introduce()#소개하다



 구현 예

Musician.py

#Musician.py
#음악가: 이름(생성 시 필수), 스킬(생성 시 필수), 매력(생성 시 전달 안 함:0)
#소개하다 기능: 자신의 이름, 스킬, 매력 출력
#연습하다: 스킬이 0.1 증가
#연주하다:매력이 스킬*0.1 증가
class Musician:
    def __init__(self,name,skill):
        self.name = name
        self.skill = skill
        self.charm = 0
    def Introduce(self):
        print("이름:{0} 스킬:{1} 매력:{2}".format(self.name,self.skill,self.charm))
    def Ex(self):
        self.skill += 0.1
    def Play(self):
        self.charm += (self.skill*0.1)

Pianist.py

#Pianist.py
#피아니스트: 음악가에서 파생
#레벨을 생성 시 전달받는다.
#독주회를 하다 - 레벨이 (스킬+매력)*0.1 증가
from Musician import Musician

class Pianist(Musician):
    def __init__(self,name,skill,level):
        Musician.__init__(self,name,skill)
        self.level = level
    def SoloPlay(self):
        self.level += ((self.skill+self.charm)*0.1)

Main.py

from Pianist import Pianist

mus = Pianist("송정수",1,1)#피아니스트(이름,스킬,레벨)
mus.Introduce()
for i in range(0,10):
    for j in range(0,100):
        mus.Ex()#연습하다
    mus.Introduce()#소개하다
    mus.Play()#연주하다
    mus.Introduce()#소개하다
mus.SoloPlay()#독주회를 하다
mus.Introduce()#소개하다
print("level:",mus.level)

반응형