읽은 책 정리/객체지향의 사실과 오해

01 협력하는 객체들의 공동체

포포015 2021. 9. 10. 14:00

* 객체지향에서의 가장 중요한 개념 3가지

  • 역할
  • 책임
  • 협력

 

하나의 문제를 해결하기 위해, 한사람의 요청이 또다른 사람에 대한 요청을 유발하는게 일반적

( 요청은 연쇄적으로 발생)  손님 -> 캐시어-> 바리스타

 

협력의 성공은 특정한 역할을 맡은 개인이, 얼마나 요청을 성실히 이행했는가에 달려있음.

 

역할과 책임에서 특정한 역할은 특정한 책임을 암시한다. 

 

@ 역할은 대체 가능성을 의미한다.

    (손님 입장에선 누가 주문을 받던말던 커피시킨게 잘나오기만하면됨)

@ 책임을 수행 하는 방법은 자율적 선택가능

    (동일한 요청을 받아도, 서로다른 방식으로 응답할수 있는 능력 // 다형성이 포함된다)

 

* 객체지향의 근본개념은 실세계에서 사람들이 타인과 관계를 맺으며 협력하는 과정과 유사하다.

 

사람들의 협력이 객체들의 협력과 다른점이라면, 사람들의 경우 공통의 목표를 달성하기 위해 협력하는데 비해

객체들의 경우에는 애플리케이션의 기능을 구현하기 위해 협력된다.

( 애플리케이션 기능은 더 작은 책임으로 분할되고, 책임은 적절한 역할을 수행할수 있는 객체에 의해 수행된다.)

 

책임은 객체지향 설계의 품질을 결정하는 가장 중요한 요소이다.

 

객체는 충분히 '협력적' 이어야한다. 외부의 도움이 필요없는 ,

모두 자기가 하려는 객체는 내부적인 복잡도에 의해 자멸하고만다.

- 어떤방식으로 응답할지 객체 스스로 판단하고 결정, 요청에 응할지 여부도 스스로 결정가능.

 

 

* 객체의 자율성은 내부와 외부를 명확하게 구분한다.

- 흔한 객체는 상태와 행동을 함께 지닌 실체라고한다. (멤버변수, 메서드)

어떤 요청에 대한 행동을 해야한다면, 행동하는데 필요한 상태로 함께 지니고 있어야한다는것을 의미한다.

(외부에서 직접 setter 같은거로 제어하는것보다, 요청이 들어오면 내부객체가 내부에서 동작하고 작업된결과만 return)

객체의 사적인 부분은 객체 스스로 관리하고 외부에서 일체 간섭 하지않도록 작성해야한다

객체의 외부에서는, 접근이 허락된 수단을 통해서만 접근하도록 (객체에서 외부에서 사용할수 있는 메서드를 생성)

이로써, 자율적인 객체로 구성된 공동체는 유지보수가 쉽고, 재사용이 용이하다.

 

  1. 객체지향이란 시스템을 상호작용하는 자율적인 객체들의 공동체로 바라보고,                                                객체를 이용해 시스템을 분할하는방법.
  2. 자율적인 객체란 상태와 행위를 함께 지니며 스스로 자기 자신을 책임지는 객체
  3. 객체는 시스템 행위를 구현하기 위해 다른객체와 협력한다.                                                                      객체는 협력내에서 정해진 역할을 수행하며, 역할은 책임의 집합이다.

 

 

 

정리

중요한것은 클래스의 구조와 메서드가 아니라, 객체의 역할,책임,협력에 집중하자.

어떤 객체들이 어떤 메시지를 받으며 협력하는가?

 

 

 

'읽은 책 정리 > 객체지향의 사실과 오해' 카테고리의 다른 글

06 객체 지도  (0) 2021.09.15
05 책임과 메시지  (1) 2021.09.15
04 역할, 책임, 협력  (0) 2021.09.15
03 타입과 추상화  (0) 2021.09.12
02 이상한 나라의 객체  (1) 2021.09.11