티스토리 뷰

1. 협력하는 객체들의 공동체

객체지향의 목표는 실세계를 모방하는 것이 아니다. 오히려 새로운 세계를 창조하는 것이다.

객체지향은 어떻게 표현해야하는가?

  • 객체를 스스로 생각하고 스스로 결정하는 현실세계의 생명체에 비유하는 것은
  • 상태와 행위를 '캡슐화'하는 소프트웨어 객체의 '자율성'을 설명한다.
  • 현실 세계의 사람들이 암묵적인 약속기반으로 협력하며 목표를 달성해 나가는 과정은
  • '메시지'를 주고 받으면서 공동의 목표를 달성하기 위한 '협력'하는 객체들의 관계를 설명한다.

요청과 응답으로 구성된 협력

  • 스스로 해결하지 못하는 문제와 마주치면 문제 해결에 필요한 지식을 알고 있거나 서비스를 제공해줄 수 있는 사람에게 도움을 요청한다.
  • 요청을 받은 사람은 주어진 책임을 다하면서 필요한 지식이나 서비스를 제공하는 것을 응답이라고 한다.
  • 요청응답을 통해 다른 사람과 협력할 수 있는 능력은 복잡하고 거대한 문제를 해결할 수 있는 공동체를 형성할 수 있게 만든다.

역할과 책임

  • 사람들은 다른 사람과 협력하는 과정 속에서 특정한 역할을 부여받는다.
  • 역할이라는 단어는 의미적으로 책임이라는 개념을 내포한다.
  • 결국, 특정한 역할은 특정한 책임을 암시한다.

객체의 역할 특징

  • 여러 객체가 동일한 역할을 수행할 수 있다.
  • 역할은 대체 가능성을 의미한다.
  • 각 객체는 책임을 수행하는 방법을 자율적으로 선택할 수 있다.
  • 하나의 객체가 동시에 여러 역할을 수행할 수 있다.

역할은 유연하고 재사용 가능한 협력관계를 구축하는데 중요한 설계 요소다. 대체 가능한 역할과 책임은 객체지향 패러다임의 중요한 기반을 제공하는 다형성과 깊이 연관 되어 있다.

객체의 덕목

  • 객체는 충분히 '협력적'이어야 한다.
    • 외부의 도움을 무시한 채 모든 것을 스스로 처리하려고 하는 전지전능한 객체(God Object)는 내부적인 복잡도에 의해 자멸하고 만다.
    • 객체는 다른 객체의 명령에 복종하는 것이 아니라 요청에 응답할 뿐이다.
    • 어떤 식으로 응답할지는 객체 스스로 판단하고 결정한다.
    • 심지어 요청에 응할지 여부도 객체 스스로 결정 할 수 있다.
  • 객체는 충분히 '자율적'이어야 한다.
    • 객체 공동체에 속한 객체들은 공동의 목표를 달성하기 위해 협력에 참여하지만 스스로의 결정과 판단에 따라 행동하는 자율적인 존재다.
    • 다른 객체와 조화롭게 협력할 수 있을 만큼 충분히 개방적인 동시에 협력에 참여한는 방법을 스스로 결정할 수 있을 만큼 충분히 자율적인 객체들의 공동체를 설계하는데 있다.

훌륭한 객체지향 설계자가 되기 위해 거쳐야 할 첫 번째 도전은 코드를 담는 클래스의 관점에서 메시지를 주고받는 객체의 관점으로 사고의 중심을 전환하는 것이다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함