오브젝트

Ch02. 절차적인 설계 개선하기 - 데이터와 프로세스 통합하기

webmaster 2024. 9. 29. 23:01
728x90

데이터와 프로세스 통합

데이터와 프로세스 통합

  • 다른 클래스의 데이터를 사용하여 의사 결정을 하거나 데이터를 제공한 클래스의 상태를 변경하는 로직이 있다면, 데이터를 보유한 클래스 쪽으로 옮겨야 한다.
  • 데이터를 사용하는 로직을 데이터를 보유한 클래스 쪽으로 옮기면 데이터가 수정될 때 변경의 영향 범위를 데이터 클래스 내부로 제한할 수 있게 된다.
    • 클래스 수정에 용이
  • 이처럼 데이터를 사용하는 로직을 데이터를 보유한 클래스 쪽으로 이동시키는 작업을 객체지향에서는 책임의 이동이라고 한다.

데이터와 객체

  • 로직에 특성에 따라서 클래스의 인스턴스는 데이터가 될 수 있고, 객체가 될 수도 있다.
  • 로직이 클래스의 인스턴스를 수동적인 존재로 만든다면 클래스의 인스턴스는 데이터가 된다.
  • 로직이 클래스의 인스턴스를 능동적인 존재로 만든다면 클래스의 인스턴스는 객체가 된다.
  • 인스턴스가 다른 객체의 판단에 의존하거나 세세한 의사결정을 외부에 의존한다면, 클래스로 구현이 되었다고 하더라도 해당 인스턴스는 데이터라고 불러야 한다.
  • 데이터를 외부에 제공하고 외부에서 판단하고 결정하는 수동적인 존재를 바보 데이터 객체라고 한다.
  • 자기 자신의 상태를 직접 관리하고 스스로 판단하고 결정하는 자율적인 존재를 똑똑한 객체라고 한다.

데이터와 객체를 나누는 가장 큰 특성은 자율성이다. 자신의 상태와 행동에 관해 스스로 판단하고 결정한다면 객체라고 부른다. 자기 스스로의 원칙에 따라 일을 하거나 자기 자신을 통제할 수 있는 객체를 설계하는 것이 객체지향의 기본 철학이다.!

728x90