본문 바로가기

오브젝트9

[오브젝트] 6장. 메시지와 인터페이스 용어 정리 - 메시지 : 객체가 다른 객체와 협력하기 위해 사용하는 의사소통 메커니즘. 일반적으로 객체의 오퍼레이션이 실행되도록 요청하는 것을 '메시지 전송'이라고 부른다. 메시지는 협력에 참여하는 전송자와 수신자 양쪽 모두를 포함하는 개념이다. - 오퍼레이션 : 객체가 다른 객체에게 제공하는 추상적인 서비스다. 프로그래밍 언어의 관점에서 퍼블릭 인터페이스에 포함된 메시지다. 메시지가 전송자와 수신자 사이의 협력 관계를 강조하는 데 비해 오퍼레이션은 메시지를 수신하는 객체의 인터페이스를 강조한다. 다시 말해서 메시지 전송자는 고려하지 않은 채 메시지 수신자의 관점만을 다룬다. 메시지 수신이란 메시지에 대응되는 객체의 오퍼레이션을 호출하는 것을 의미한다. - 메서드 : 메시지에 응답하기 위해 실행되는 코드.. 2022. 4. 4.
[오브젝트] 5장. 책임 할당하기 책임 할당 - 데이터 중심 설계로 인해 발생하는 문제점을 해결할 수 있는 가장 기본적인 방법은 데이터가 아닌 책임에 초점을 맞추는 것이다. - 책임 할당 과정은 일종의 트레이드오프 활동이다. 동일한 문제를 해결할 수 있는 다양한 책임 할당 방법이 존재하며, 어떤 방법이 최선인지는 상황과 문맥에 따라 달라진다. - 데이터 중심 설계에서 책임 중심 설계로 전환할 때 따라야 하는 두 가지 원칙 데이터보다 행동을 먼저 결정하라. 협력이라는 문맥 안에서 책임을 결정하라. - 협력에 적합한 책임을 수확하기 위해서는 객체를 결정한 후에 메시지를 선택하는 것이 아니라 메시지를 결정한 후에 객체를 선택해야 한다. 메시지가 존재하기 때문에 그 메시지를 처리할 객체가 필요한 것이다. 객체가 메시지를 선택하는 것이 아니라 메.. 2022. 3. 6.
[오브젝트] 2장. 객체지향 프로그래밍 객체지향 프로그래밍을 향해 - 객체지향은 말 그대로 객체를 지향하는 것이다. 진정한 객체지향 패러다임으로의 전환은 클래스가 아닌 객체에 초점을 맞출 때에만 얻을 수 있다. 이를 위해서는 프로그래밍하는 동안 다음의 두 가지에 집중해야 한다. 어떤 클래스가 필요한지를 고민하기 전에 어떤 객체들이 필요한지 고민하라. 클래스는 공통적인 상태와 행동을 공유하는 객체들을 추상화한 것이다. 따라서 클래스의 윤곽을 잡기 위해서는 어떤 객체들이 어떤 상태와 행동을 가지는지를 먼저 결정해야 한다. 객체를 중심에 두는 접근 방법은 설계를 단순하고 깔끔하게 만든다. 객체를 독립적인 존재가 아니라 기능을 구현하기 위해 협력하는 공동체의 일원으로 봐야 한다. 이것은 설계를 유연하고 확장 가능하게 만든다. 객체들의 모양과 윤곽이 .. 2022. 3. 2.
[오브젝트] 3장. 역할, 책임, 협력 객체 지향에서 가장 중요한 것은 역할, 책임, 협력이다. 협력 : 객체들이 애플리케이션의 기능을 구현하기 위해 수행하는 상호작용 - 어떤 객체가 다른 객체에게 무언가를 요청하는 것 - 객체의 행동을 결정 - 메시지 전송 -> 메서드 실행 책임 : 객체가 협력에 참여하기 위해 수행하는 로직 - 객체지향 설계는 협력에 필요한 메시지를 찾고 메시지에 적절한 객체를 선택하는 반복적인 과정을 통해 이뤄진다. 그리고 이런 메시지가 메시지를 수신할 객체의 책임을 결정한다. - 객체가 충분히 추상적이면서 미니멀리즘을 따르는 인터페이스를 가지게 하고 싶다면 메시지가 객체를 선택하게 하라. - 중요한 것은 객체의 상태가 아니다. 행동이다. 행동이 중요하다. 객체가 가질 수 있는 상태는 행동을 결정하고 나서야 비로소 결정할.. 2022. 2. 27.