객체지향의 사실과 오해 - 역할, 책임, 협력

Groot·2022년 11월 16일
0

TIL

목록 보기
101/148
post-thumbnail

TIL

🌱 난 오늘 무엇을 공부했을까?

📌 객체지향의 사실과 오해 - 역할, 책임, 협력

📍 협력

  • 객체들간의 요청과 응답은 통해 협력에 참여하는 객체가 수행할 책임을 정의한다.

📍 책임

  • 책임은 객체에 의해 정의되는 응집도 있는 행위의 집합으로, 객체가 알아야 하는 정보와 객체가 수행할 수 있는 행위에 대해 개략적으로 서술한 문장.
  • 어떤 객체에 대한 요청은 그 대상이 요청을 처리할 책임이 있음을 암시한다.

🔗 책임의 분류

  • 하는 것(doing)
    • 객체를 생성하거나 계산을 하는 등의 스스로 하는 것
    • 다른 객체의 행동을 시작시키는 것
    • 다른 객체의 활동을 제어하고 조절하는 것
  • 아는 것(knowing)
    • 개인적인 정보에 관해 아는 것
    • 관련된 객체에 관해 아는 것
    • 자신이 유도하거나 계산할 수 있는 것에 관해 아는 것
  • 책임은 객체의 외부에 제공해 줄 수 있는 정보(아는 것)와 외부에 제공해 줄 수 있는 서비스(하는 것)의 목록

📍 역할

  • 역할은 협력 안에서 구체적인 객체로 대체될 수 있는 추상적인 협력자
  • 하나의 협력 안에 여러 종류의 객체가 참여할 수 있게 함으로써 협력을 추상화 할 수 있다.
  • 객체의 추상화
  • 대체 가능성의 의미

📍 객체의 모양을 결정하는 협력

  • 객체지향에서 중요한 것은 충분히 자율적인 동시에 충분히 협력적인 객체를 창조하는 것
  • 객체를 충분히 협력적으로 만든 후에 협력이라는 문맥 안에서 객체를 충분히 자율적으로 만들어라.

📍 객체지향 설계 기법

🔗 책임 주도 설계

  • 협력에 필요한 책임들을 식별하고 적합한 객체에게 책임을 할당하는 방식
  • 설계 절차
    • 시스템이 사용자에게 적용해야 하는 기능인 시스템 책임을 파악한다.
    • 시스템 책임을 더 작은 책임으로 분할한다.
    • 분할된 책임을 수행할 수 있는 적절한 객체 또는 역할을 찾아 책임을 할당한다.
    • 객체가 책임을 수행하는 중에 다른 객체의 도움이 필요한 경우 이를 책임질 적절한 객체 또는 역할을 찾는다.
    • 해당 객체 또는 역할에게 책임을 할당함으로써 두 객체가 협력하게 한다.

🔗 디자인 패턴

  • 책임 주도 설계의 결과를 표현한다.
  • 특정한 상황에서 설계를 돕기 위해 모방하고 수정할 수 있는 과거의 설계 경험
  • 책임 주도 설계의 결과물인 동시에 지름길

🔗 테스트 주도 개발

  • 테스트 주도 개발은 테스트에 집중하는 것이 아니라, 객체가 이미 존재한다고 가정하고 객체에게 어떤 메시지를 전송할 것인지에 관해 먼저 생각하는게 좋다. 그러나 역할, 책임, 협력의 관점에서 객체를 바라봐야 한다.
  • 책임을 수행할 객체 또는 클라이언트가 기대하는 객체의 역할이 메시지를 수신할 때 어떤 결과를 반환하고 그 과정에서 어떤 객체와 협력할 것인지에 대한 기대를 코드의 형태로 작성하는 것.
profile
I Am Groot

0개의 댓글