6장 스터디 기능 설계 대 구조 설계 기능 측면 설계 : 제품이 사용자를 위해 무엇을 할 수 있는지에 초점 구조 측면 설계 : 제품의 형태가 어떠해야 하는지에 초점 훌륭한 기능이 훌륭한 소프트웨어를 만드는 충분조건이라면, 훌륭한 구조는 훌륭한 소프트웨어를 만들기 위한 필요조건이다. 미래를 예측할 수없지만, 변경을 수용할 수 있도록 설계에 마련해야 한다 객체지향 접근방법은 자주 변경되지 않는 안정적인 객체 구조를 바탕으로 시스템 기능을 객체 간의 책임으로 분배한다. 시스템 기능을 더 작은 책임으로 분할되고 적절한 객체에게 분배되기 때문에 기능이 변경되더라도 객체 구조는 그대로 유지된다. 이것이 객체를 기반으로 책임과 역할을 식별하고 메시지를 기반으로 객체들의 협력 관계를 구축하는 이유다. 안정적인 객체 구..
4장 스터디 역할, 책임, 협력 인간이 어떤 본질적인 특성을 가지고 있느냐가 아닌 어떤 상황에 처해 있느냐가 인간의 행동을 결정한다. 개인이 처해 있는 정황 또는 문맥이 인간의 행동 방식을 결정한다. 객체지향 프로그램이에서 협력이라는 문맥이 객체의 행동 방식을 결정한다. 가장 흔한 실수는 협력이라는 문맥을 고려하지 않은 채 객체가 가져야할 상태와 행동부터 고민하는 것이다. 요약> 객체지향 프로그래밍에서 가장 중요한 것은 객체들 간의 요청과 응답 속의 협력이다. 객체지향적인 협력 일반적으로 해결 과정에서 여러 사람이 참여하게 된다. 이 과정에서 요청과 응답의 연쇄적인 흐름이 발생한다. 협력 은 한 사람이 다른 사람에게 도움을 요청 할 때 발생한다. 요약1> 협력은 다수의 요청과 응답으로 이루어지며, 연쇄적..
2장 스터디 프로퍼티와 프로퍼티 값의 차이 정적 & 동적 상태는 특정 시점에 객체가 가지고 있는 정보의 집합으로 객체의 구조적 특징을 표현 단순한 값과 다른 객체를 참조하는 링크로 구분 객체가 취하는 행동은 객체 자신의 상태를 변경시킨다 객체의 행동에 의해 객체의 상태가 변경된다는 것은 행동이 부수 효과를 초래한다는 것을 의미 → Side effect 객체의 행동은 상태에 영향을 받는다 객체의 행동은 상태를 변경시킨다 두 인스턴스의 상태가 같다면 값이 같다고 판단한다. 값이 같은지 여부는 상태가 같은지로 판단한다. 식별자 객체가 식별 가능하다는 것은 객체를 서로 구별할 수 있는 특정한 프로퍼티가 객체 안에 존재한다는 것을 의미하며, 이를 식별자라고 한다. 즉 객체가 아닌 단순한 값은 식별자를 가지지 않는..