본문 바로가기
공부/객체지향의 사실과 오해

객체지향의 사실과 오해(4)

by MNMNMNMN 2021. 2. 24.
728x90

4.역할, 책임, 협력

우리 모두를 합친 것보다 더 현명한 사람은 없다.
-켄 블랜차드(Ken Blanchard)

협력

  • 협력은 한 사람이 다른 사람에게 도움을 요청할 때 시작된다.
  • 요청을 받은 사람은 일을 처리한 후 요청한 사람에게 필요한 지식이나 서비스를 제공하는 것으로 요청에 응답한다.

책임

  • 어떤 객체가 어떤 요청에 대해 대답해 줄 수 있거나, 적절한 행동을 할 의무가 있는 경우 해당 객체가 책임을 가진다고 말한다.
  • 객체의 외부에 제공해 줄 수 있는 정보(아는 것의 측면)와 외부에 제공해줄 수 있는 서비스(하는것의 측면)의 목록이다.
  • 책임의 분류
    • 하는 것(doing)
      1. 객체를 생성하거나 계산을 하는 등의 스스로 하는것
      2. 다른 객체의 행동을 시작 시키는 것
      3. 다른 객체의 활동을 제어하고 조절하는 것
    • 아는 것(knowing)
      1. 개인적인 정보에 관해 아는 것
      2. 관련된 객체에 관해 아는 것
      3. 자신이 유도하거나 계산할 수 있는 것에 관해 아는 것
  • 책임은 객체의 공용 인터페이스를 구성한다.

역할

  • 역할은 협력 내에서 다른 객체로 대체할 수 있음을 나타내는 일종의 표식이다.
  • 역할은 객체지향 설계의 단순성(simplicity), 유연성(flexibility), 재사용성(reusability)을 뒷받침하는 핵심 개념이다.

객체지향 설계 기법

  • 책임-주도 설계(Responsibility-Driven Design)
    1. 시스템이 사용자에게 제공해야 하는 기능인 시스템 책임을 파악한다.
    2. 시스템 책임을 더 작은 책임으로 분할한다.
    3. 분할된 책임을 수행할 수 있는 적절한 객체 또는 역할을 찾아 책임을 할당한다.
    4. 객체가 책임을 수행하는 중에 다른 객체의 도움이 필요한 경우 이를 책임질 적절한 객체 또는 역할을 찾는다.
    5. 해당 객체 또는 역할에게 책임을 할당함으로써 두객체가 협력하게 한다.
  • 디자인 패턴(Design Pattern)
    • 반복적으로 발생하는 문제와 그 문제에 대한 해법의 쌍으로 정의된다.
    • 공통으로 사용할 수 있는 역할, 책임, 협력의 템플릿이다.
    • 책임-주도 설계의 결과물인 동시에 지름길이다.
  • 테스트-주도 개발(Test_driven Development)
    • 애자일 방법론의 한 종류인 XP의 기본 프랙티스로 소개되면서 주목받기 시작한 설계 기법
    • 테스트 주도 개발의 기본 흐름
      1. 실패하는 테스트
      2. 테스트를 통과하는 가장 간단한 코드 작성
      3. 리팩토링을 통해 중복을 제거
      4. 작동하는 깔끔한 코드 획득

 

책 구매 링크 [교보문고][알라딘][Yes24]

728x90
반응형

댓글