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

드디어! 나왔다. '객체 지향 프로그래밍'


순차적프로그래밍은 시간의 흐름 순서대로 코드를 짰다면 객체 지향 프로그래밍은 객체를 중심으로 개발
객체를 정의하고 객체와 객체 사이의 관계를 정의하는 방식으로 프래그래밍 한다.

객체란, 세상을 프로그램으로 모델링할 때 모델링의 대상이 되는 사람이나 사물. 즉 샘플을 의미한다.
객체를 샘플링하여 객체란 타입을 정의하면 관련있는 정보를 묶어서 하나의 변수에 담아 간단하게 표현할 수 있다.

(일반 변수는 값을 하나 밖에 못 담지만 객체는 관련 정보 여러가지를 담을 수 있다는 것이 장점이다! 물론..그래서 헤깔리지..)

예를들어 ATM의 출금과정을 코딩한다고 해보자.


1. 카드를 넣는다.

2. 카드 비밀번호 입력

   2-1. 비밀번호가 맞다?

        3. 출금액 입력

        4. 카드와 연결된 계좌 정보를 추출

   2-2. 비밀번호가 틀리다?

        3. 저리가세요~

 

그럼 위의 간단한 알고리즘에서 우리가 객체라고 볼 수 있는 것이 뭐가 있을까?

<카드객체>
카드번호
비밀번호
카드명의자
카드사
연결계좌
<계좌객체>
계좌번호
비밀번호
명의자
은행명

오호. 이렇게 간략한 구상이 먼저 이루어지면 OPP도 문제없다!! (글쎄..)

자, 그럼 가장 먼저 클래스를 정의해보자.

class 클래스명:
	def __init__(self): #생성자. 객체 초기화. 객체의 멤버변수(클래스 소속의 변수) 정의.	
		멤버변수 정의
	def 기능(self):
		실행문

 

ATM 출금을 예로 들면 
출금 금액은 변수
카드정보 는 Class Card를 정의해서
카드번호, 카드명의자, 카드비밀번호 와 같은 값들을 담으려면 클래스 안에 변수들이 멤버변수가 된다.

class Card:   #Card 라는 이름의 타입을 정의함. 이 타입의 변수는 카드 1개의 정보를 담을 수 있다.

    #생성자
    def __init__(self):    #첫번째 파라미터는 현재 객체의 참조값을 받음.
        self.number = ''   #카드번호     #멤버변수표현은 앞에 self.변수이름
        self.owner = ''    #카드명의자
        self.pwd = ''      #카드비번
        self.comp = ''     #카드사
   

    #메소드. 멤버함수
    def printCard(self):   #self:현재 객체. 객체 생성전이기 때문에 객체 이름 모름.
        print('number:', self.number)
        print('owner:', self.owner)
        print('pwd:', self.pwd)
        print('comp:', self.comp)

def main():
    x = 10    #일반변수 정의 변수이름=값

    #객체(클래스로 만든변수)는 바로 값을 할당할 수 없고 먼저 생성해야함. 
    #생성하는 방법은 생성자 호출. 생성사 호출은 클래스 이름.
    
    c1 = Card()    #캡슐화
    c1.number='123-4567-8901'      #  .(멤버접근연산자)
    c1.owner = '홍길동'
    c1.pwd = '111'
    c1.comp = '신한'
    c1.printCard()


main()

 

 

위의 코드를 좀 더 심플하게 짜보면

 

class Card:   #Card 라는 이름의 타입을 정의함. 이 타입의 변수는 카드 1개의 정보를 담을 수 있다.

    #생성자
    def __init__(self, number, owner, pwd, comp):
        self.number = number   #카드번호     #멤버변수표현은 앞에 self.변수이름
        self.owner = owner    #카드명의자
        self.pwd = pwd     #카드비번
        self.comp = comp


    #메소드. 멤버함수
    def printCard(self):   #self:현재 객체. 객체 생성전이기 때문에 객체 이름 모름.
        print('number:', self.number)
        print('owner:', self.owner)
        print('pwd:', self.pwd)
        print('comp:', self.comp)

def main():
    c1 = Card('123-4567-8901','홍길동','111','신한')
    c1.printCard()

    c2 = Card('2564-462-645','김철수','123123','우리')
    c2.printCard()

main()

따라~

'파이썬이 제일 쉽다면서요' 카테고리의 다른 글

python # 연습문제. 성적처리프로그램  (0) 2021.06.10
python #연습문제  (0) 2021.06.09
python #예외처리  (0) 2021.06.09
python #연습문제. 주소록 만들기  (1) 2021.06.08
phthon #입출력  (0) 2021.06.08

+ Recent posts