티스토리 뷰
메시지를 앨리스에게 전송하는 객체이건 음료에게 메시지를 전송하는 앨리스 객체이건 메시지 송신자는 메세지 수신자의 상태 변경에 대해서는 전혀 알지 못한다.
drinkBeverage() --> 앨리스 --> drunken(quantity) --> 음료
기계로서의 객체
일반적으로 객체의 상태를 조회하는 작업을 쿼리(query)라고 하고 객체의 상태를 변경하는 작업을 명령(command)이라고 한다.[Meyer 2000]. 객체가 외부에 제공하는 행동은 대부분 쿼리와 명령으로 구성된다.
훌륭한 객체란?
구현을 모른 채 인터페이스만 알면 쉽게 상호작용할 수 있는 객체
사용자는 권리를 구매한다
사용자가 실제로 예매하는 대상은 영화가 아니라 상영이기 때문이다. 사람들은 영화를 예매한다고 표현하지만 실제로는 특정 시간에 상영되는 영화를 관람할 수 있는 권리를 구매하기 위해 돈을 지불한다.
진정한 객체지향
객체지향 언어에 익숙한 사람이라면 가장 먼저 어떤 클래스(class)가 필요한지 고민할 것이다. 대부분의 사람들은 클래스를 결정한 후에 클래스에 어떤 속성과 메서드가 필요한지 고민한다.
안타깝게도 이것은 객체지향의 본질과는 거리가 멀다. 객체지향은 말 그대로 객체를 지향하는 것이다. 진정한 객체지향 패러다임으로의 전환은 클래스가 아닌 객체에 초점을 맞출 때에만 얻을 수 있다. 이를 위해서는 프로그래밍하는 동안 다음의 두 가지에 집중해야 한다.
첫째, 어떤 클래스가 필요한지를 고민하기 전에 어떤 객체들이 필요한지 고민하라.
둘째, 객체를 독립적인 존재가 아니라 기능을 구현하기 위해 협력하는 공동체의 일원으로 봐야 한다.
결합도(Coupling)와 응집도(Cohesion)
결합도 : 결합도는 소프트웨어 모듈 또는 컴포넌트 간의 상호 의존성의 정도를 나타냅니다.
응집도 : 모듈 내부의 구성 요소들이 얼마나 밀접하게 관련되어 있는지를 나타냅니다. 응집도가 높을수록 모듈 내부의 구성 요소들이 함께 작동하고 동일한 목적을 위해 협력하는 정도가 높아집니다.
-디미터의 법칙
오직 직접적으로 관련된 객체와만 통신해야 한다는 원칙을 강조합니다.
묻지 말고 시켜라(Tell, don't ask)
-명령 쿼리 분리의 원칙
프로시저는 부수효과를 발생시킬 수 있지만 값을 반환할 수 없다.
함수는 값을 반환할 수 있지만 부수효과를 발생시킬 수 없다.
객체의 상태를 변경하는 명령은 반환값을 가질 수 없다.
객체의 정보를 반환하는 쿼리는 상태를 변경할 수 없다.
참고: 객체지향의 사실과 오해(조용호), Object(조용호)
- Total
- Today
- Yesterday
- docker container
- 도커컨테이너
- docker container tissue
- Linux
- docker container case
- docker container whale
- 도커각티슈박스
- vim
- 도커티슈케이스
- 2017 티스토리 결산
- 개발자
- Sh
- 도커티슈박스
- docker container tissue box
- 도커각티슈케이스
- shellscript
- 싱가폴
- 이직
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |