객체 지향 프로그래밍(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 |