티스토리 뷰
객체지향과 인지 능력
앨리스 이야기
- 앨리스의 행동은 상태에 의존적
- 행동에 의해 상태가 변함
- 앨리스의 상태가 변하여도 앨리스가 다른 사람이 되는 것은 아님 → 상태와 무관하게 유일한 존재로 식별 가능
객체, 그리고 소프트웨어 나라
객체
- 상태
- 행동
- 식별자
객체란 식별 가능한 개체 또는 사물이다. 객체는 자동차처럼 만질 수 있는 구체적인 사물일 수 있고, 시간처럼 추상적인 개념일 수도 있다. 객체는 구별 가능한 식별자, 특징적인 행동, 변경 가능한 상태를 가진다. 소프트웨어 안에서 객체는 저장된 상테와 실행 가능한 코드를 통해 구현된다.
상태
- 과거의 모든 행동 이력을 설명하지 않고도 행동의 결과를 쉽게 예측하고 설명할 수 있다.
상태와 프로퍼티
- 객체의 상태를 구성하는 모든 특징을 통틀어 객체의 프로퍼티라고 한다.
- 프로퍼티 : 정적
- 프로퍼티 값 : 동적
링크
- 객체와 객체 사이의 의미 있는 연결
- 링크가 존재해야만 요청, 메시지를 보내고 받을 수 있다.
속성
- 객체를 구성하는 단순한 값 (링크가 아님)
상태는 특정 시점에 객체가 가지고 있는 정보의 집합으로 객체의 구조적 특징을 표현한다. 객체의 상태는 객체에 존재하는 정적인 프로퍼티와 동적인 프로퍼티 값으로 구성된다. 객체의 프로퍼티는 단순한 값과 다른 객체를 참조하는 링크로 구분할 수 있다.
행동
상태와 행동
- 행동을 통한 상태 변경 ⇒ 부수 효과
- 객체의 행동은 상태의 영향 받음
- 객체의 행동은 상태를 변경시킴
협력과 행동
- 객체가 협력하는 유일한 방법은 다른 객체에게 요청을 보내는 것
- 즉, 행동은 객체가 협력에 참여할 수 있는 유일한 방법
행동이란 외부의 요청 또는 수신된 메시지에 응답하기 위해 동작하고 반응하는 활동이다. 행동의 결과로 객체는 자신의 상태를 변경하거나 다른 객체에게 메시지를 전달할 수 있다. 객체는 행동을 통해 다른 객체와의 협력에 참여하므로 행동은 외부에 가시적이어야 한다.
상태 캡슐화
- 객체는 상태를 캡슐 안에 감춰둔 채 외부로 노출하지 않는다. 객체가 외부에 노출하는 것은 행동 뿐이며, 외부에서 객체에 접근할 수 있는 유일한 방법 역시 행동이다.
- 상태를 잘 정의된 행동 집합 뒤로 캡슐화하는 것은 객체의 자율성을 높이고 협력을 단순하고 유연하게 만든다.
식별자
- 객체를 구별할 수 있는 특정한 프로퍼티
- 값 → 불변 상태
- 두 “값”이 같은지 판단할 수 있는 성질 ⇒ 동등성
- 식별자를 기반으로 객체가 같은지 판단할 수 있는 성질 ⇒ 동일성
식별자란 어떤 객체를 다른 객체와 구분하는 데 사용하는 객체의 프로퍼티다. 값은 식별자를 가지지 않기 때문에 상태를 이용한 동등성 검사를 통해 두 인스턴스를 비교해야 한다. 객체는 상태가 변경될 수 있기 때문에 식별자를 이용한 동일성 검사를 통해 두 인스턴스를 비교할 수 있다.
값 ↔ 객체
- 객체는 식별자를 가지는 참조 객체나 엔티티를 가리킨다.
- 쿼리
- 명령 (커맨드)
'학습 내용 > 책 내용 및 회고' 카테고리의 다른 글
Redis 키 관리 (0) | 2024.05.01 |
---|---|
Redis 자료구조 (0) | 2024.04.30 |
1장 - 협력하는 객체들의 공동체 (0) | 2023.07.14 |
모던 자바 인 액션 - 2022-4-13 (0) | 2022.04.13 |
모던 자바 인 액션 - 2022-3-30 (0) | 2022.03.30 |