본 게시글은 객체지향의 사실과 오해 를 읽고 정리한 게시글 입니다.
객체는 커피숍에서의 손님, 캐셔, 바리스타와 유사하다.
손님
은 캐셔
에게 커피를 주문하고, 캐셔
는 바리스타
에게 커피를 제조하라고 전달한다.바리스타
는 캐셔
에게 전달하고, 캐셔
는 손님
에게 커피를 전달한다.여기서 손님
캐셔
바리스타
이 셋을 객체라고 볼 수 있다.
여기서 객체들은 서로 요청
과 응답
을 주고받으며 서로 협력한다.
프로그래밍 할 때에도 마찬가지이다. 객체끼리 메세지
를 주고받으며 협력하도록 해야한다.
혼자서 모든 역할을 수행하는 전지전능한 객체는 내부 복잡도가 너무 높다는 뜻이다.
객체의 역할과 책임을 생각해보자.
역할은 책임을 암시한다. 객체들이 협력하면 각 객체는 역할을 수행할 책임을 갖는다.
객체를 흔히 상태와 행동을 지닌 실체라고 정의한다.
객체는 외부에서 본인이 무엇을 수행하는지 알리지만(커피를 만든다), 어떻게 수행하는지(커피 제조법)는 알리지 않는다. 상태를 드러낼 필요가 없다는 뜻이다.
객체의 상태는 자신의 행동이 결정하지, 외부에서 결정되지 않는다.
이 개념은 캡슐화
개념과 연관되어있다.
그래서 객체지향이 뭔지 간략하게 정리하자면,
객체지향 프로그래밍을 할땐, 클래스의 구조와 메서드가 아니라, 객체의 역할, 책임, 협력에 집중하면 된다.