본문 바로가기
우당탕탕 학교생활/_방송통신대학교

방송통신대학교 프라임칼리지 파이썬(Python) 열한번째 시간 리뷰

by J-2n 2020. 8. 27.

강의 일지를 기록한지 벌써 열한번째의 시간이다.

이제는 얼마 남지 않아서 기분이 좀 좋다..헤..

프라임 칼리지 파이썬을 빨리 끝내고 과제폭탄에 대비를 해야겠다.


클래스 정의

구문형식

class 클래스 이름 :

초기자

메소드


초기자(initalizer)

- 객체가 생성될 때 객체의 상태(데이터필드)를 초기화

- 항상 _init_로 명명


객체 지향 프로그래밍(OOP)

객체와 객체 사이의 상호작용으로 프로그램을 구성하는 프로그래밍 기법


객체

실세계의 유무형의 사물에 대한 상태(데이터)와 행동(연산)을 표현한 단위

클래스에 의해 타입이 결정


생성자

구문형식

클래스 이름(인자)


클래스에 해당하는 객체를 메모리에 생성 -> 객체 데이터 필드 : 

객체를 초기화하기 위해 _init_메소드를 호출 -> _init_(self)


객체 접근

- 객체 멤버 접근 연산자(.)

구문형식

객체 참조변수.데이터 필드

객체 참조변수.메소드(인자)


- 객체 참조변수

구문형식

객체 참조변수 = 클래스 이름(인자)


self 매개변수

모든 정의된 메소드의 첫 번째 매개변수

객체 자신을 참조하는 매개변수


클래스의 도면

UML 클래스 다이어그램 통해 표기법을 표준화

- 데이터 필드

데이터 필드 이름 : 데이터 필드 타입

- 생성자

클래스 이름(매개변수 이름 : 매개변수 타입)

- 메소드

메소드 이름(매개변수 이름 : 매개변수 타입) : 반환 타입


Stock 클래스

클래스 이름


데이터 필드


생성자

메소드


TV 클래스 구현

소스코드1 - TV.py

class TV :

    def __init__(self):

        self.channel = 1 # 기본 채널은 1이다.

        self.volumeLevel = 1 #기본 음량 크기는 1이다.

        self.on = False #초기에 TV의 전원은 꺼져있다.


    def turnOn(self):

        self.on = True


    def turnOff(self):

        self.on = False


    def getChannel(self):

        return self.channel


    def setChannel(self, channel):

        if self.on and 1 <= self.channel <= 120 :

            self.channel = channel


    def getVolumeLevel(self):

        return self.volumeLevel


    def setVolume(self, volumeLevel):

        if self.on and 1 <=self.volumeLevel <= 7 :

            self.volumeLevel = volumeLevel


    def channelUp(self):

        if self.on and self.channel < 120:

            self.channel += 1


    def channelDown(self):

        if self.on and self.channel >1 :

            self.channel -= 1


    def volumeUp(self):

        if self.on and self.volumeLevel < 7 :

            self.volumeLevel += 1


    def volumeDown(self):

        if self.on and self.volumeLevel > 1 :

            self.volumeLevel -= 1


소스코드2 - main.py

from TV import TV


def main() :

    tv1 = TV()

    tv1.turnOn()

    tv1.setChannel(30)

    tv1.setVolume(3)


    tv2 = TV()

    tv2.turnOn()

    tv2.channelUp()

    tv2.channelUp()

    tv2.volumeUp()


    print("tv1의 채널은", tv1.getChannel(),"이고 음량 크기는", tv1.getVolumeLevel(), "입니다.")

    print("tv2의 채널은", tv2.getChannel(), "이고 음량 크기는", tv2.getVolumeLevel(), "입니다.")


main()


실행결과

tv1의 채널은 30 이고 음량 크기는 3 입니다.

tv2의 채널은 3 이고 음량 크기는 2 입니다.


정리하기 (출처 : 한국방송통신대학교 프라임칼리지)

1. 클래스는 객체에 대한 템플릿, 설계도, 계약 및 데이터 타입이다. 클래스는 객체의 속성을 정의하고 객체를 초기화하기 위한 초기자 및 객체를 조작하기 위한 메소드를 제공한다.

2. 초기자는 항상 _init_으로 명명된다. 클래스의 초기자를 포함한 모든 메소드의 첫 번째 매개변수는 메소드를 호출하는 객체를 참조한다. 관례적으로 이 매개변수는 self로 명명된다.

3. 객체는 클래스의 인스턴스이다. 객체를 생성하기 위해 생성자를 사용하고 점 연산자(.)를 사용하여 참조변수를 통해 객체의 멤버에 접근한다.

4. 인스턴스 변수 또는 메소드는 클래스의 인스턴스에 소유된다. 이들을 사용하는 것은 개개의 인스턴스와 연관되어 있다.


100%를 향해