[JAVA] 객체지향의 사실과 오해 04 정리

2024-11-01

image.png

💡 Highlight

  • 객체지향의 핵심은 클래스를 어떻게 구현할 것인가가 아니라 객체가 협력 안에서 어떤 책임과 역할을 수행할 것인지를 결정하는 것이다.
  • 객체지향 설계의 핵심은 올바른 책임을 올바른 객체에게 할당하는 것이다.

책임

  • 객체지향 개발에서 가장 중요한 능력은 책임을 능숙하게 소프트웨어 객체에 할당하는 것
  • 크레이그 라만은 객체의 책임을 크게 '하는 것'과 '아는 것'의 두 가지 범주로 자세히 분류하고 있다.
    • 하는 것 (doing)
    • 아는 것 (knowing)

역할

  • 역할은 재사용 가능하고 유연한 객체지향 설계를 낳는 매우 중요한 구성요소이다.
  • 협력 안에서 역할은 "이 자리는 해당 역할을 수행할 수 있는 어떤 객체라도 대신할 수 있습니다"라고 말하는 것과 같다.
  • 역할은 객체지향 설계의 **단순성(simplicity), 유연성(flexibility), 재사용성(reusability)**을 뒷받침하는 핵심 개념이다.

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

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

객체지향 설계 기법

  • 책임-주도 설계(Responsibility-Driven Design) : 협력에 필요한 책임들을 식별하고 적합한 객체에게 책임을 할당하는 방식, 객체의 책임을 중심으로 시스템을 구축하는 설계 방법
    • 객체지향 설계의 핵심은 올바른 책임을 올바른 객체에게 할당하는 것이다.
  • 디자인 패턴(Design Pattern) : 전문가들이 반복적으로 사용하는 해결 방법을 정의해 놓은 설계 템플릿의 모음
  • 테스트 주도 개발(Test-Driven Development) : 테스트를 면저 작성하고 테스트를 통과하는 구체적인 코드를 추가하면서 애플리케이션을 완성해가는 방식