본문 바로가기
좋은 개발자가 되기위한 방법들/객체지향

객체지향의 중심인 클래스란?

by chief_sac 2021. 9. 15.
반응형

객체지향 프로그래밍 언어는 Java부터 C#, Python, Ruby, Smalltalk(최초) 등등 굉장히 많이 존재한다.

 

객체지향의 개념은 1960년대 부터 출발했다고 하는데 초기의 객체지향 프로그래밍에서 중요하게 생각한 부분은 새로운 개념의 데이터 추상화를 제공하는 클래스(Class)라는 블럭에 맞춰있었다.

 

앨런 케이 같은 객체지향 선구자들이 처음 의도한것과는 다르게 객체지향 = 클래스 라고 생각하였다. 객체가 중심이었는데도 말이다. 그로인해 다양한 언어가 등장하고 책들이 출간되면서 클래스의 중요성이 과하게 강조되었다고한다.

 

지금까지의 시간이 흘러가면서 많은 사람들은 객체지향하면 클래스를 떠올리게 될정도로 정보는 엇나갔고 어떤 객체 지향 프로그래밍 언어를 이야기할 때 사람들은 클래스를 정의하는 방법이 뭔지 클래스사이의 상속을 초점으로 맞추게되었다.

 

우리가 다이어그램을 이야기할때 가장 대표적으로 이야기하는 클래스 다이어그램처럼 말이다.

 

 


그럼 객체지향 프로그래밍 언어에서 가장 중요한 요소는 무엇일까

 

구성요소(construct)가 매우 중요한것은 맞지만 핵심은 그것이 아니라 객체 그 자체라고 이야기한다.


우리가 자바스크립트를 프로토타입 기반의 객체지향 언어라고 하는데 자바스크립트에서는 클래스가 존재하지 않고 그저 객체만 존재할 뿐이다 심지어 상속조차 클래스가아니라 객체간의 위임하는 형태로 구성되어있다.

 

이렇게 객체지향 본질의 초점을 잃고 클래스를 강조하게되면 객체의 캡슐화를 저해하고 클래스를 서로 강하게 결합시키게 된다.

 

어떻게 하면 올바르게 객체지향을 설계할 수 있을지는 간단하다 코드를 담는 클래스의 관점에서 데이터를 주고받는 객체의 관점으로 중심을 전환하는것이다.

왜냐하면 클래스는 그저 객체들의 협력관계를 코드로 옮기는 도구에 불과하기때문이다. 물론 클래스가 중요하지 않다고 말하는 것은 아니지만 객체지향의 중심은 이름과 같이 객체이다.

클래스들의 정적인 관계를 보는것이아닌 메세지를 주고받는 객체들의 동적인 관계를 주목하는 것이좋다.

 

 

객체지향의 본질에 관한 부분을 읽으면서 마음에 남는 부분을 생각나는데로 정리하였고 알고계셨던 분들이 있더라도 한번쯤 공유해보고싶어서 작성하게 되었습니다.

반응형