들어가며
- 습관을 들이기 위해 하루 하루 일지를 작성할 예정
객체 지향의 사실과 오해 (역할, 책임, 협력 관점에서 본 객체 지향)
역할 책임 협력
- 역할이 중요하다. 다만, 대체할 수 있다.
전지 전능한 객체; god object
는 내부 복잡도에 의해 자멸한다.
상태; state
>행동; behavior
- 객체 지향은 클래스를 중심으로 작성되는 코드로 설명되는 것 같지는 않다. 책에서도 강조하듯 객체 지향은 객체간의 역할, 책임, 협력을 강조한다. 하나의 클래스에 모든것을 담는 것은 객체 지향의 올바른 자세가 아니며, 각 객체가 협력해 어떤 일련의 절차나 행동을 구현하는 것에 집중해야 할 것같다.
이상한 나라의 객체
- 객체 지향 패러다임의 목적은 현실 세계를 모방하는 것이 아니라 현실 세계를 기반으로 새로운 세계를 창조하는 것이다.
- 객체의 상태를 조회하는 작업을
쿼리 (query)
- 객체의 상태를 변경하는 작업을
명령 (command)
타입과 추상화
- 지하철 노선도 또한 추상화의 결과물이라 한다. 필요한 정보만, 필요 없는 정보는 과감히 빼버린..
추상화 구체적인 사물들 간의 공통점은 취하고 차이점은 버리는
일반화
중요한 부분을 강조하기 위해 불필요한 세부 사항을 제거함으로써 단순하게 만듦
- 타입은 객체를 분류하기위해 사용하는 개념. 클래스는 타입을 구현할 수 있는 구현 매커니즘 중하나
- 클래스는 타입의 구현 외에도 코드를 재사용하는 용도로 이용된다.
- 동적으로 변하는 객체의
상태
와 상태를 변경하는행위
에 집중하라.
Reference
조영호, 『 객체 지향의 사실과 오해, 역할, 책임, 협력 관점에서 본 객체 지향 』, 위키북스(2015 06 17), 인용.
찰스 펫졸드, 『 Code, 하드웨어와 소프트웨어에 숨어있는 언어 』, 인사이트(2010 10 11), 인용.
스티브 프리먼, 냇 프라이스 지음, 이대엽 옮김, 『 테스트 주도 개발로 배우는 객체 지향 설계와 실천 』, 인사이트(2013 06 20), 인용.
앤드류 헌트, 데이비드 토머스 지음, 김창준, 정지호 옮김, 『 실용주의 프로그래머 』, 인사이트(2005 08 02), 인용.