도니의 iOS 프로그래밍 세상

[오브젝트 2회독] 3장 - 역할, 책임, 협력 본문

OOP

[오브젝트 2회독] 3장 - 역할, 책임, 협력

Donee 2024. 9. 15. 16:26

협력

  • 객체는 자율적, 협력적 존재
  • 자율적인 존재가 되기 위해
    • 캡슐화를 통해 side-effect를 최소화
    • 다른 객체와의 협력을 통해, 특정 행동을 위임할 수 있어야 함

협력을 통해 객체의 문맥이 결정

  • Movie라는 객체는 일반적인 의미가 아닌, 협력 내에서 의미가 결정됨

→ 개인적 의견

  • 팀 프로젝트시 가장 중요한 건, 팀원들간의 객체 이해도
  • 객체가 일반적인 의미를 많이 갖고 있으면 있을수록, 이해가 빨라짐
  • 따라서, 직관적 이해를 위해 일반적인 의미를 웬만하면 갖는게 더 좋음

책임

  • 객체가 수행하는 행동을 의미
  • 하는것, 아는것으로 나뉨
  • 책임 할당
    • 특정 동작 수행을 위해, 어떤 객채에게 책임을 할당할 것인지가 중요
      • 필요한 정보를 가장 많이 아는 객체에게 할당해주어야 함
  • 메세지 객체 결정
    • 객체의 행동을 위한 메세지 결정 → 그 메시지에 적합한 객체를 선택(not 객체의 책임이 이러하니 얘가 모든걸 처리하면 되겠다가 아님, 제일 중요한 건 메세지! 행동! 그걸 할 객체를 찾는건 다음 step)
    • 이러한 결정 과정을 통해 interface가 간결해짐

행동

  • 행동이 상태를 결정
  • 상태는 행동을 위한 재료일 뿐, 상태가 중심이 되면 캡슐화가 저해되고 side-effect가 더 많아짐

역할

  • 역할과 책임의 차이
  • 역할은 교체 가능한 책임의 집합
  • ex. 영화관 역할 → CGV, 롯데시네마, 메가박스 객체

결론

  1. 협력을 위해, 객체는 자율적 존재가 되어야 함
  2. 객체는 협력을 통해 문맥이 결정(→ 개인적으로 일반적인 의미와 동일하면 할수록 팀원들간 이해가 간단해짐)
  3. 객체에게 가장 중요한건 행동, 상태는 그를 위한 재료
  4. 메세지(행동)이 결정되고, 그걸 수행할 객체를 찾아야 함.
Comments