객체 지향 프로그래밍에서 객체는 두 가지 중요한 측면인 "책임"과 "상태"를 가지고 있습니다.
객체의 책임 (Responsibility):
- 객체는 특정한 동작이나 작업을 수행하는 데 필요한 책임을 가집니다.
- 객체의 책임은 해당 객체의 행위를 정의하며, 해당 객체가 어떤 작업을 수행할 수 있는지를 나타냅니다.
- 책임은 메서드의 형태로 구현되며, 객체의 외부에서 해당 객체의 상태나 내부 구현을 알 필요 없이 메서드 호출로 책임을 수행할 수 있어야 합니다.
객체의 상태 (State):
- 객체는 특정 시간에 가지고 있는 데이터 값을 상태라고 합니다.
- 객체의 상태는 속성이나 멤버 변수에 의해 나타나며, 객체가 어떤 특정 시점에서 어떤 데이터를 가지고 있는지를 나타냅니다.
- 객체의 상태는 외부에서 해당 객체와 상호작용할 때 중요한 역할을 수행합니다.
예시:
생성자, 메서드, 속성으로 구성된 '자동차' 클래스를 가정해보겠습니다.
- 자동차 객체의 책임: '시동 켜기', '가속', '브레이크', '정지' 등의 작업을 수행할 수 있습니다.
- 자동차 객체의 상태: '속도', '연료량', '엔진 상태', '현재 위치' 등의 데이터 값을 가지고 있습니다.
이와 같이 객체는 자신의 책임을 수행하기 위해 필요한 상태를 가지고 있으며, 이 두 가지 요소를 효과적으로 설계하여 객체의 역할과 행동을 구현할 수 있습니다. 객체의 책임과 상태는 객체 지향 프로그래밍의 핵심 원칙 중 하나로, 객체의 역할을 명확히 정의하고 그 역할을 수행하기 위한 상태를 적절히 관리하는 것이 중요합니다.