창공설 (5주차 실습)

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 자료

0%