반응형

'Object Oriented Programming'은 '객체 지향 프로그래밍'으로 번역이 된다.

그런데 여기서 Object 즉 객체는 무엇일까?

 

지금까지 나는 단순히 하나의 독립된 대상으로 생각하고 있었다.

틀린 말은 아니지만 정확한 말도 아니다.

개체로 생각했다고 볼 수 있다.

 

사전적 뜻은 이렇다.

객체(客:손 객, 體:몸 체) : 주체로부터 독립되어 있는 인간의 인식과 실천의 대상

개체(個:낱 개, 體:몸 체) : 단일하고 고유한 독자적 존재

 

객체는 주체와의 관계를 생각해야한다.

주체가 바라보는 대상이 객체이다.

객체 입장에서 바라보면 자신은 주체이다.

주체가 없으면 객체도 존재하지 않는다.

 

프로그래밍의 세계에서 풀어보자.

프로그램은 목표를 위해 행동하는 주체이다.

이 주체가 행동하는데 필요한 많은 요소들을 의미가 있는 단위로 나눈게 객체이다.

'객체 지향 프로그래밍'은 주체(프로그램)을 객체(클래스)로 나누어 프로그램을 짜는 것을 말한다.

 

이제 개체를 알아보자.

개체는 독립적으로 구분될 수 있는 하나를 말한다.

즉 프로그램도 개체이고 그안의 변수, 함수들도 개체이다.

하지만 프로그래밍 세계에서는 보통 클래스에서 실체화된 인스턴스를 말한다.

 

그동안 이 두 개념을 구분하지 못했다.

책을 봐도 혼용하여 쓰는 경우가 흔하고 어떤 이는 "객체 지향"을 "개체 지향"으로 바꿔야한다는 사람도 있다.

일면 맞는 말이기도 하다.

기능별로 작은 책임만 있는 개체들의 조합으로 전체 프로그램을 만들어내니 말이다.

 

개체는 이해가기 쉽다.

그런데 객체는 이해하기 어렵다.

왜 어려운지를 생각해보니 객체를 이해하려면 주체라는 대상이 반드시 필요한데 그걸 간과했다.

 

주체와 객체.

객체와 주체.

한쪽이 없으면 다른 한쪽을 이해할 수 없는 개념이다.

반응형

+ Recent posts