객체 객체는 상태(state), 행동(behavior), 식별자(identity)를 지닌 실체다. 객체 식별 가능한 개체 또는 사물이다. 객체는 자동차처럼 만질 수 있는 구체적인 사물일 수도 있고, 시간처럼 추상적인 개념일 수도 있다. 객체는 구별 가능한 식별자, 특징적인 행동, 변경 가능한 상태를 가진다. 소프트웨어 안에서 객체는 저장된 상태와 실행 가능한 코드를 통해 구현된다. 상태 객체가 주변 환경의 상호작용에 어떻게 반응하는가는 그 시점까지 객체에 어떤 일이 발생했느냐에 좌우된다. 어떤 행동의 결과는 과거에 어떤 행동들이 일어났었느냐에 의존한다. 상태를 이용하면 과거의 모든 행동을 기억하지 않고도 행동의 결과를 쉽게 예측하고 설명할 수 있다. 과거에 얽매이지 않고 현재를 기반으로 객체의 행동 방식..
객체지향의 목표는 실세계를 모방하는 것이 아니다. 오히려 새로운 세계를 창조하는 것이다. 협력에 참여하는 모든 객체들은 역할과 책임을 다하고 있다. 객체지향의 핵심은 적절한 객체에게 적절한 책임을 할당하는 것에서 시작된다. 역할, 책임, 협력 역할 협력 안에서 차지하는 책임이나 의무를 의미한다. 관련성 높은 책임의 집합이다. 협력 "어떤 객체도 섬이 아니다" - 워드 커닝험 객체는 역할과 책임을 다하는 동시에, 다른 객체와 협력한다. 객체 간의 연쇄적인 요청과 응답의 흐름으로 구성되어 있다. 협력이 얼마나 조화를 이루는지는 객체가 결정한다. 협력의 품질을 결정하는 것은 객체의 품질이다. 객체의 역할 여러 객체가 동일한 역할을 수행할 수 있다. 객체를 사용하는 다른 객체의 입장에서는, 어떤 객체가 자신의 ..
들어가며 엘레강트 오브젝트의 1장은 출생이다. 이 책에서는 객체를 살아있는 유기체라고 여기는데, 이러한 객체를 대상으로 출생, 학교생활, 회사생활, 은퇴의 챕터로 이루어져 있다. 1장의 제목이 출생인 만큼, 객체의 이름과 생성에 대해 다룬다. 이 책의 목표는 객체와 객체의 역할을 이해하여 유지보수성을 향상시키는 것이다. 그에 따르는 장점은 아래와 같다. 유지보수성 향상 코드 길이 감소 이해하기 쉬움 응집도 높아짐 if (price < 100) { val extra = Cash(5) price.add(extra) } 먼저 객체는 자신의 가시성 범위 내에서 살아간다. 예를 들어 위 코드에서 price는 extra 객체의 외부에 존재하고, 숫자 5는 객체 내부에 존재한다. 1. -er로 끝나는 이름을 사용하지..