본문 바로가기

오브젝트13

5장 - 책임 할당하기 개요 이번 장에서는 책임을 할당하는 기준과 책임 중심 설계를 어떻게 하면 되는지에 대해 다룹니다. 데이터 중심 설계의 문제점을 해결할 수 있는 방법은 무엇일까? 가장 기본적인 방법은 데이터가 아닌 책임에 초점을 맞추는 것입니다. 어떻게 책임을 할당할까? 책임 중심의 설계를 하기 위해서는 다음의 두 가지 원칙을 따라야 합니다. 데이터보다 행동을 먼저 결정하라 협력이라는 문맥 안에서 책임을 결정하라 데이터보다 행동을 먼저 결정하라 객체에게 중요한 것은 데이터가 아니라 외부에 제공하는 행동입니다. 객체에게 데이터는 객체가 책임을 수행하는 데 필요한 재료를 제공할 뿐입니다. 너무 이른 시기에 데이터에 초점을 맞추면 객체의 캡슐화가 약화되기 때문에 낮은 응집도와 높은 결합도를 가진 객체들로 넘쳐나게 되며, 그 결.. 2023. 4. 10.
4장 - 설계 품질과 트레이드오프 개요 이번 장에서는 데이터 중심의 설계의 문제점을 이해하기 위해 몇 가지 알아야 할 용어들과 데이터 중심 설계에 어떤 문제점이 있는지에 대해 다룹니다. 시스템을 분할하는 방법 사용자가 사용할 시스템을 구현하기 위해 설계 관점에 따라 시스템을 다르게 분할하여 구현합니다. 시스템을 분할하기 위해 데이터와 책임 중 어떤 것을 선택해야 할까? 책의 저자는 데이터가 아니라 책임에 초점을 맞춰야 한다고 합니다. 책임에 초점을 맞춰야 하는 이유는 무엇일까? 객체의 상태는 구현에 속하며 구현은 불안정하기 때문에 변하기 쉽습니다. 객체의 상태가 객체 분할의 초점이 되면 구현 세부 사항이 객체의 인터페이스에 스며들어 캡슐화의 원칙이 무너지게 됩니다. 즉, 상태가 변경되면 인터페이스도 변경되어 해당 인터페이스에 의존하는 모.. 2023. 3. 28.
3장 - 협력, 책임, 역할 개요 이번 장에서는 객체지향 프로그래밍에서 핵심 개념인 협력, 책임, 역할에 대해 간단히 소개하고 왜 중요한지에 대해 다룹니다. 협력이란? 앱의 기능을 구현하기 위해 어떤 객체가 다른 객체에게 무엇인가를 요청하는 것을 협력이라 합니다. 객체지향에서는 한 객체는 어떤 것(기능 or 데이터)이 필요할 때 다른 객체에게 위임하거나 서로 협력하여 앱의 기능을 개발합니다. 왜 다른 객체에게 처리를 위임을 할까? 하나의 객체가 모든 요구사항이나 변경사항을 처리하게 되면, 다른 객체들과의 결합도가 높아져 유지보수가 어려워집니다. 따라서 다른 객체에게 처리를 위임함으로써 객체 간의 의존성이 낮아지며 유지보수가 용이해집니다. 협력이 설계를 위한 문맥을 결정한다. 객체는 상태와 행동을 함께 캡슐화하여 실행 단위를 구성합니.. 2023. 3. 12.
2장 - 협력, 객체, 클래스 개요 이번 장에서는 객체지향 프로그래밍에서 핵심 개념인 협력, 객체, 클래스에 대해 소개하고, 이를 고려한 프로그램 구조와 클래스 구현에 대해 다룹니다. 협력, 객체, 클래스 객체지향 프로그래밍을 시작할 때 가장 먼저 고민해야 하는 것은 무엇일까요? 대부분의 사람들은 클래스를 결정한 후에 클래스에 어떤 속성과 메서드가 필요한지 고민합니다. 하지만 저자는 이런 방법은 객체지향과는 거리가 멀다고 말하며, 진정한 객체지향의 전환은 클래스가 아닌 객체에 초점을 맞출 때에만 얻을 수 있다고 합니다. 어떻게 하면 객체에 초점을 맞출 수 있을까요? 다음 두 가지에 집중하면 됩니다. 첫째, 어떤 클래스가 필요한지를 고민하기 전에 어떤 객체들이 필요한지 고민해야 합니다. 클래스는 공통적인 상태와 행동을 공유하는 객체들을.. 2023. 3. 5.