책 소개
제목 : 객체 지향의 사실과 오해
저자 : 조영호
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=60550259
2장. 이상한 나라의 객체
"객체지향 패러다임은 지식을 추상화하고 추상화한 지식을 객체 안에 캡슐화함으로써 실세계 문제에 내재된 복잡성을 관리하려고 한다. 객체를 발견하고 창조하는 것은 지식과 행동을 구조화 하는 문제다."
- 레베카 워프스브록
객체 지향과 인지 능력
- 인간이 직접적으로 지각할 수 있는 대부분의 객체는 물리적인 경계를 지닌 구체적인 사물인다. 그러나 인간의 인지 능력은 물리적인 한계를 넘어 개념적으로 경계 지을 수 있는 추상적 사물까지도 객체로 인식할 수 있게 한다.
- 객체란 인간이 분명하게 인지, 구별할 수 있는 물리적 또는 개념적 경계를 지닌 어떤 것이다.
앨리스 객체
- 앨릭스가 물을 마시면 키가 작아진다고 하자.
- 앨리스에게는 '행동(Behavior) / 상태(State) / 식별자(Identity)'가 있다.
- 물을 마시는 행동이 앨리스의 상태(키)를 변화 시킨다.
- 앨리스의 특징
- 앨리스는 상태를 가지며, 상태는 변경 가능하다.
- 앨리스의 행동이 상태를 변경 시킨다.
(행동의 결과는 상태에 의존적이며, 행동의 순서가 결과에 영향을 미친다.) - 앨리스는 어떤 상태에 있더라도 유일하게 식별 가능하다.
1. 상태
- 상태를 이용하면 과거 모든 행동 이력을 설명하지 않아도 행동의 결과를 예측/설명할 수 있다.
- Property : 객체의 상태를 구성하는 모든 특징. dynamic
- Property Value : 객체가 갖는 값. static
- Link : 객체와 객체 사이의 의미 있는 연결. 객체-객체 사이에 링크가 존재해야만 요청을 보내고 받을 수 있다.
2. 행동
- 객체가 취하는 행동은 객체 자신의 상태를 변경시킨다.
- 행동 내에서 협력하는 다른 객체에 '메시지'를 전송할 수 있다.
- 단, 메시지(요청)에 반응할지는 메시지를 받은 객체가 자율적으로 결정한다. >> 상태 캡슐화와 관련
- 상태 캡슐화 : 객체는 상태를 캡슐 안에 검춰둔 채 외부로 노출하지 않는다.
객체가 외부에 노출하는 것은 행동 뿐이며, 외부에서 객체에 접근할 수 있는 유일한 방법 역시 행동 뿐이다.
3. 식별자
- 모든 객체는 식별자를 가지며 식별자를 이용해 객체를 구별할 수 있다.
- 객체는 어떤 상태에 있더라도 유일하게 식별 가능하다.
기계로서의 객체
- Query (쿼리) : 객체의 상태 조회
- Command (명령) : 객체의 상태 변경
- 객체에 접근할 수 있는 유일한 방법은 객체가 제공하는 행동 뿐이다.
객체 내부를 열어서 상태에 직접 접근하지 않는다. (객체의 캡슐화) - 각 객체는 메시지 전송을 통해 협력한다. (link가 선행 되어야 한다.)
행동이 상태를 결정한다.
상태를 먼저 결정하고 행동을 나중에 결정한다면?
- 상태를 먼저 결정하면 캡슐화가 저해된다.
- 객체를 협력자가 아닌 고립된 섬으로 만든다.
- 객체의 재사용성이 저하된다.
- 객체지향 설계는 애플리케이션에 필요한 협력 -> 협력에 필요한 행동 -> 행동을 수행할 객체 선택 하는 방식으로 수행된다.
- 협력 안에서 객체의 행동은 결국 객체가 협력에 참여하며 완수하는 책임을 의미 -> 어떤 책임이 필요한가를 결정하는 과정이 핵심
- 책임-주도 설계(Responsibility-Driven Design, RDD) : 협력이라는 문맥 안에서 객체의 행동을 생각하도록 도와 응집도 높고 재사용 가능한 객체를 만든다.
'TechBooks' 카테고리의 다른 글
[BigData] 빅데이터 기초 개념,동인,기법 #5장 (0) | 2020.07.03 |
---|---|
[Programming] 객체지향의 사실과 오해 #3장 (0) | 2020.07.03 |
[BigData] 빅데이터 기초 개념,동인,기법 #3장, 4장 (0) | 2020.07.01 |
[BigData] 빅데이터 기초 개념,동인,기법 #1장 (0) | 2020.06.30 |
[Programming] 객체지향의 사실과 오해 #1장 (0) | 2020.06.29 |
댓글