5주차 Python의 응용 2
클래스
클래스 / 변수 / 메소드
OOP의 4대 원칙
- 추상화 : 공통적인 속성 기술
- 캡슐화 : 정보 영역의 한정
- 상속성 : 상위 또는 부모 클래스의 데이터 구조와 메소드를 그대로 이어받을 수 있는 개념
- 다형성 : 함수이름이나 연산자가 여러 목적으로 사용될 수 있는 것
실습 1. 추상화 예제
class computer:
def __init__(self, name, cpu, hdd, ram):
self.name = name
self.cpu = cpu
self.hdd = hdd
self.ram = ram
def turnOn(self):
print(self.name + "컴퓨터를 켰습니다.")
def turnOff(self):
print(self.name + "컴퓨터를 껐습니다.")
computer1 = computer('computer1', '3.0Hz', '500Gb', '2Gb')
computer2 = computer('computer2', '3.0Hz', '500Gb', '2Gb')
computer1.turnOn()
computer2.turnOn()
computer2.turnOff()
실습 2. 캡슐화 예제
class computer:
def __init__(self, name, cpu, hdd, ram):
self.name = name
self.cpu = cpu
self.hdd = hdd
self.ram = ram
def turnOn(self):
print(self.name + "컴퓨터를 켰습니다.")
def turnOff(self):
print(self.name + "컴퓨터를 껐습니다.")
def setCPU(self, cpu):
self.cpu = cpu
def getCPU(self):
print("%s의 CPU는 %s 입니다." % (self.name, self.cpu))
computer1 = computer('computer1', '3.0Hz', '500Gb', '2Gb')
computer1.getCPU()
#클래스 변수에 직접 수정
computer1.setCPU('3.0Hz')
computer1.getCPU()
#캡슐화
computer1.setCPU('3.0Hz')
computer1.getCPU()
실습 3. 상속성
class computer:
def __init__(self, name, cpu = 'dummy', hdd = 'dummy' , ram = 'dummy'):
self.name = name
self.cpu = cpu
self.hdd = hdd
self.ram = ram
def turnOn(self):
print(self.name + "컴퓨터를 켰습니다.")
def turnOff(self):
print(self.name + "컴퓨터를 껐습니다.")
class newComputer(computer):
def __init__(self, name, cooler):
computer.__init__(self, name)
self.cooler = cooler
def overClocking(self):
print(self.name + "이 오버클럭되어 성능향상되었습니다.")
computer1 = newComputer('computer1', 'cooler')
computer1.turnOn()
computer1.overClocking()
computer1.turnOff()
실습 4. 다형성
class computer:
def __init__(self, name):
self.name = name
def turnOn(self):
print(self.name + "컴퓨터를 켰습니다.")
class newComputer(computer):
def __init__(self, name, cooler = 'dummy'):
computer.__init__(self, name)
self.cooler = cooler
def turnOn(self):
print("새로운 컴퓨터를 켰습니다.")
class notebook(computer):
def __init__(self, name, battery = 'used'):
computer.__init__(self,name)
self.battery = battery
def turnOn(self):
print(self.name + "노트북을 켰습니다.")
computer1 = computer('computer')
computer2 = newComputer('newComputer')
computer3 = notebook('notebook')
computer1.turnOn()
computer2.turnOn()
computer3.turnOn()
추가실습1
class HousePark:
lastname = "박"
def __init__(self, name):
self.fullname = self.lastname + name
def travel(self, where):
print("%s, %s 여행을 가다." % (self.fullname, where))
def love(self, other):
print("%s, %s 사랑에 빠졌네" % (self.fullname, other.fullname))
def fight(self, other):
print("%s, %s 싸우네" % (self.fullname, other.fullname))
def __add__(self, other):
print("%s, %s 결혼했네" % (self.fullname, other.fullname))
def __sub__(self, other):
print("%s, %s 이혼했네." % (self.fullname, other.fullname))
class HouseKim(HousePark):
lastname = "김"
def travel(self,where,day):
print("%s, %s 여행 %d일 가네." % (self.fullname, where, day))
pey = HousePark("응용")
juliet = HouseKim("줄리엣")
pey.travel("부산")
juliet.travel("부산",3)
pey.love(juliet)
pey + juliet
pey.fight(juliet)
pey - juliet
추가실습 2
class Calculator:
def __init__(self, first, second):
self.first = first
self.second = second
def sum(self):
result = self.first + self.second
return result
def mul(self):
result = self.first + self.second
return result
def sub(self):
result = self.first - self.second
return result
def div(self):
result = self.first / self.second
return result
a = Calculator(4,2)
b = Calculator(3,7)
print(a.sum())
print(a.mul())
print(b.sub())
print(b.div())
참고자료
창의적 공학 설계 입문 - 5주차 pdf 자료