Taking baby-developer steps

[객체지향의 사실과 오해] 2. 이상한 나라의 객체 - 4 기계로서의 객체 본문

CS 지식/객체지향

[객체지향의 사실과 오해] 2. 이상한 나라의 객체 - 4 기계로서의 객체

Surin Lee 2023. 11. 6. 11:17

기계로서의 객체

 객체 지향의 세계를 창조하는 개발자들은 "객체의 상태를 조회"하고 "객체의 상태를 변경"하는 것이 주 업무이다.

객체의 상태를 조회하는 작업 : 쿼리(query)

객체의 상태를 변경하는 작업 : 명령(command) 

 라고 일반적으로 부르며, 객체가 외부에 제공하는 행동의 대부분은 쿼리와 명령으로 구성된다.

 

 객체는 일반적으로 기계와 같다. 우리가 기계를 분해해 보기 전까지는 그 내부를 들여다 볼수 없다. 그저 행동 버튼을 통해 결과를 얻는다. 행동 버튼에는 명령과 쿼리가 있다. 명령 버튼을 누른 직후에 그 행동이 기계의 상태를 어떻게 변경시킨지는 알 수 없다. 원하는 상태의 조회 버튼을 눌러야 명령에 의해 변화된 상태를 확인 할 수 있다. 버튼을 눌러 상태를 변경 혹은 조회하는 것을 요청하는 것은 객체의 행동을 유발하기 위해 메시지를 전송하는 것이다. 객체는 스스로 판단하고 결정하는 자율적인 특성을 가지기에, 버튼을 누르는 것은 기계의 사용자이지만 어떤 방식으로 동작할지는 기계 스스로 결정한다.

 

명령과 쿼리는 객체가 외부에 제공하는 행동이다. 이 외의 다른 방법을 통해서는 해당 기계(객체)를 사용할 수 없다. 객체에 접급할 수 있는 유일한 방법은 객체가 제공하는 행동뿐이다. 인터페이스를 통해서만 객체에 접근할 수 있다. -> 캡슐화

 이번 주제인 기계의 은유는 캡슐화를 직관적이고 시각적으로 묘사한다.

 

또 식별자 역시 효과적으로 이해할 수 있다.동일한 명령 버튼과 조회 버튼을 제공하는 두개의 객체 기계가 있다고 하자. 각 기계가 동일한 숫자인 130을 표시 하고 있다면, 두 기계는 외부에 제공하는 행동의 종류 및 현재 상태까지 동일하다. 그러나 두 기계는 완전히 별개의 객체로 인식된다. 상태와 무관하게 구분 가능한 식별자를 지니기 때문이다.

 

 

Comments