객체지향의 본질

이상현·2023년 10월 27일
0

서적

목록 보기
1/1
post-thumbnail

본 게시글은 객체지향의 사실과 오해 를 읽고 정리한 게시글 입니다.

객체

객체는 커피숍에서의 손님, 캐셔, 바리스타와 유사하다.

  • 손님캐셔에게 커피를 주문하고, 캐셔바리스타에게 커피를 제조하라고 전달한다.
  • 커피가 완성되면 바리스타캐셔에게 전달하고, 캐셔손님에게 커피를 전달한다.

여기서 손님 캐셔 바리스타 이 셋을 객체라고 볼 수 있다.

협력

여기서 객체들은 서로 요청응답을 주고받으며 서로 협력한다.

프로그래밍 할 때에도 마찬가지이다. 객체끼리 메세지를 주고받으며 협력하도록 해야한다.

혼자서 모든 역할을 수행하는 전지전능한 객체는 내부 복잡도가 너무 높다는 뜻이다.

역할과 책임

객체의 역할과 책임을 생각해보자.

  • 손님은 커피를 주문하고 전달받는 임무를 맡는다.
  • 캐셔는 주문을 받고, 주문을 전달하고, 커피를 받아 손님에게 전달해야 한다.
  • 바리스타는 주문받은 커피를 제조할 책임이 있다.

역할은 책임을 암시한다. 객체들이 협력하면 각 객체는 역할을 수행할 책임을 갖는다.

상태와 행동

객체를 흔히 상태와 행동을 지닌 실체라고 정의한다.

객체는 외부에서 본인이 무엇을 수행하는지 알리지만(커피를 만든다), 어떻게 수행하는지(커피 제조법)는 알리지 않는다. 상태를 드러낼 필요가 없다는 뜻이다.

객체의 상태는 자신의 행동이 결정하지, 외부에서 결정되지 않는다.

이 개념은 캡슐화 개념과 연관되어있다.

객체지향의 본질

그래서 객체지향이 뭔지 간략하게 정리하자면,

  • 시스템을 상호작용하는 자율적인 객체들의 공동체로 바라보고, 이를 이용해 시스템을 분할하는 방법
  • 자율적인 객체란, 상태와 행위를 함께 지니며 스스로 자기 자신을 책임지는 객체이다.
  • 객체는 시스템의 행위를 구현하기 위해 다른 객체와 협력하며 역할을 수행한다.
  • 객체는 협력을 위해 메세지를 전송하고, 수신한 객체는 메세지를 처리하는 메서드를 자율적으로 선택한다.

결론

객체지향 프로그래밍을 할땐, 클래스의 구조와 메서드가 아니라, 객체의 역할, 책임, 협력에 집중하면 된다.

0개의 댓글