이 책을 읽으니 왜인지 좋은 객체지향적인 프로그램을 설계할 수 있을 것 같다는 근거없는 자신감이 솟아 오른다. ‘유일하게 변하지 않는 것은 모든 것이 변한다는 사실 뿐이다’ - 헤라클레이토스 소프트웨어 분야에서 예외가 없는 유일한 규칙은 요구사항이 항상 변경된다는 것이다. 지금까지 객체지향적으로 설계하는 것에 어려움이 있었던 이유는 이 책에서 찾아볼 수 있었다. 나는 어떠한 협력 관계에서 필요한 행동을 정의하고 객체를 생성하는 것이 아닌 객체가 필요한 상태와 객체를 먼저 정의하고 그 상태에 필요한 행동을 결정했었다. 항상 개발하다보면 캡슐화가 깨지는 거 같은 느낌이 드는 이유가 여기에 있었다. 책에서는 이렇게 말한다. 객체의 상태를 먼저 결정할 경우 캡슐화가 저해된다. 상태에 초점을 맞출 경우 상태가 객..