본문 바로가기
TechBooks

[Programming] 객체지향의 사실과 오해 #4장

by 꿈나무 김땡땡 2020. 7. 5.

책 소개

제목 : 객체 지향의 사실과 오해

저자 : 조영호

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=60550259

 

객체지향의 사실과 오해

위키북스 IT Leaders 시리즈 23권. 객체지향이란 무엇인가? 이 책은 이 질문에 대한 답을 찾기 위해 노력하고 있는 모든 개발자를 위한 책이다.

www.aladin.co.kr

 

4장. 역할, 책임, 협력

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

 

1. 협력

  • 협력의 본질은 '요청'과 '응답'으로 연결되는 객체들의 네트워크
  • 요청과 응답은 협력에 참여하는 객체가 수행할 책임을 정의

2. 책임

1) 책임의 분류

  • 협력에 참여하는 객체들은 목표를 달성하는 데 필요한 책임을 수행
  • 책임은 knowing (객체가 무엇을 알 수 있는가) 과 doing (객체가 무엇을 할 수 있는가)로 구성됨
  • 책임은 객체의 공용 인터페이스 (Public Interface)를 구성

2) 책임과 메시지

  • 메시지 전송 (Message-send) : 객체가 다른 객체에게 주어진 책임을 수행하도록 요청을 보내는 것
    • 두 객체간 협력은 '메시지'를 통해 이루어짐
    • 메시지를 전송하는 객체는 '송신자'
    • 메시지를 전송받는 객체는 '수신자'
    • 메시지는 협력을 위해 한 객체가 다른 객체로 접근할 수 있는 유일한 방법

3. 역할

  • 역할(Role)을 사용하면 공통점을 가진 여러 협력을 하나의 협력으로 추상화 가능
  • 역할은 협력 내에서 다른 객체로 대체할 수 있음을 나타내는 일종의 표식
  • 역할을 대체할 수 있는 객체는 동일한 메시지를 이해할 수 있는 객체로 한정 됨
  • 역할은 객체지향 설계의 단순성(Simplicity), 유연성(Flexibility), 재사용성(Reusability)을 뒷받침 하는 핵심 개념
  • 역할은 협력을 추상화 할 수 있다는 것이 핵심

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

  • 객체 지향의 핵심은 클래스를 어떻게 구현할 것인가가 아니라, 객체가 협력 안에서 어떤 책임과 역할을 수행할 것인지 결정하는 것
  • 객체에게 책임을 할당하면 책임은 객체가 외부에 제공하게 될 '행동' 이 된다.

객체지향 설계 기법

1) 책임-주도 설계 (Responsibility-Driven Design)

  • 객체지향 설계의 핵심은 올바른 책임을 올바른 객체에 할당하는 것
  • 책임-주도 설계 과정
    1. 시스템이 사용자에게 제공해야 하는 기능(시스템 책임) 파악
    2. 시스템 책임을 더 작은 책임으로 분할
    3. 분할한 책임을 수행 할 수 있는 적절한 객체(or 역할)를 찾아 책임 할당
    4. 객체가 다른 객체의 도움이 필요하면, 이를 책임질 적절한 객체(or 역할)를 찾아 책임 할당
    5. 두 객체가 협력하게 함

2) 디자인 패턴 (Design Pattern)

  • 책임-주도 설계의 결과 표현
  • 패턴 : 모범이 되는 설계. 특정한 상황에서 설계를 돕기 위해 모방하고 수정할 수 있는 과거의 설계 경험
  • 디자인 패턴 : 공통으로 사용할 수 있는 역할, 책임, 협력의 템플릿
  • 클래스를 정의하는 것이 아니라, 협력에 참여하는 '역할'과 '책임'을 나타냄

3) 테스트-주도 개발 (Text-Driven Design)

  • 객체가 이미 존재한다고 가정하고 객체에게 어떤 메시지를 전송할지 먼저 생각해야 함
  • 책임-주도 설계를 통해 도달해야 하는 목적지를 테스트라는 안전장치를 통해 좀 더 빠르게 도달하도록 함
  • 책임-주도 설계에 대해 이해도가 높아야 수행 가능

 

 

 

 

댓글