Python2017. 9. 7. 20:51

  객체지향프로그래밍(Object-oriented Programming)은 말 그대로 객체를 만들어 프로그래밍을 하는 방식을 뜻한다. 여기서 말하는 객체는 무엇일까? 객체 지향 프로그래밍을 처음 접했을 때, 그 개념을 올바로 세우는 것이 중요하다. 하여 객체지향 프로그래밍에서 자주 등장하는 클래스, 인스턴스, 오브젝트에 대해서 알아보겠다.

  클래스(class)라는 단어는 얼핏 들으면 생소하고 이해하기 힘들다. 학교에서 반을 클래스라고 부르기도 하고, 사회의 계층을 클래스라고 부르기도 한다. 객체지향 프로그래밍에서 클래스는 하나의 정의된 변수와 프로시져의 집합체라고보면 된다. 여기서 변수는 프로그래밍을 할때 값을 담는 통이고, 프로시져는 연산 또는 정의된 일을 수행하는 도구라고 생각하면 된다.  자동차라는 클래스가 있다고 가정해보자. 자동차를 이루려면 핸들, 바퀴, 기어와 같은 물리적 장치가 필요하고 또한 전진, 후진과 같은 동작이 필요하다. 좀 비약이 있긴 하지만, 이때 물리적인 장치들을 변수, 동작들을 프로시져라고 생각하면 된다.

  인스턴스(instance)는 클래스의 추상적인이 개념이 실체가 된 상태를 뜻한다. 예를 들어 마티즈, 아반떼, 소나타와 같은 자동차는 추상적인 개념인 자동차의 실체들이다. 이와 같이 추상적인 개념이 클래스 그리고 그 클래스의 실제를 인스턴스라고 보면 된다.

  마지막으로 오브젝트(object)는 클래스로부터 이용하여 생성된 모든 것이라고 보면 된다. 여기서 의문점이 생길 수 있다. 그렇다면 인스턴스와 오브젝트의 차이점은 무엇인가?

  인스턴스는 관계적인 개념이다. 즉 어떠한 오브젝트(A)가 그것의 개념인 클래스(B)와 같이 설명될 때, 'A는 B의 인스턴스다'라고 설명될 수 있다. 하지만 기본적으로 클래스로부터 만들어진 대상을 일컫을 때는 일반적으로 오브젝트라고 부른다.

  실제 파이선 프로그래밍으로 예를 들어보자.


# 'human'이라는 클래스

class human:

  #변수들

head=1

eye=2

arm=2

body=1

neck=1

fingers=10

  #프로시져: 사람은 말을 한다...

def talk(self):

return 'blah blah blah~'

#사고 났을 시. 부상으로 인한 손실

def ax(self):

self.eye -= 1

self.arm -= 1

    self.fingers -= 3


위의 클래스를 import 한 후 인스턴스를 만들어보자. j라는 오브젝트를 만들어서 변수와 프로시져를 호출해본다.


>>> import test

>>> j=test.human()

>>> j.talk()

'blah blah blah~'

>>> j.fingers

10

>>> j.ax()

** 사고나서 손가락 3개를 잃었다.

>>> j.fingers

7

반응형

'Python' 카테고리의 다른 글

튜플과 리스트의 차이  (0) 2017.08.28
Lamba  (0) 2017.08.24
반환문  (0) 2017.08.21
지역변수와 전역변수  (0) 2017.08.21
변수의 사용  (0) 2017.08.21
Posted by newind2000