본문 바로가기

📖 독서/오브젝트(Objects)12

[오브젝트] 4장. 설계 품질과 트레이드 오프 - 역할, 책임, 협력 중 책임이 가장 중요하다. 책임이 객체지향 애플리케이션의 품질을 결정한다. - 객체들이 수행할 책임이 적절하게 할당되지 못한 상황에서는 원활한 협력도 기대할 수 없을 것이다. 역할은 책임의 집합이기 때문에 책임이 적절하지 못하면 역할 역시 협력과 조화를 이루지 못한다. 객체지향 설계 - 응집도와 결합도 그리고 캡슐화 - 객체지향 설계란 올바른 객체에게 올바른 책임을 할당하면서 낮은 결합도와 높은 응집도를 가진 구조를 창조하는 행동 응집도 : 모듈에 포함된 내부 요소들이 연관돼 있는 정도. 모듈 내의 요소들이 하나의 목적을 위해 긴밀하게 협력한다면 그 모듈은 높은 응집도를 가진다. 더보기 객체지향의 관점에서 응집도는 객체 또는 클래스에 얼마나 관련 높은 책임들을 할당했는지를 나타낸다.. 2022. 3. 3.
[오브젝트] 2장. 객체지향 프로그래밍 객체지향 프로그래밍을 향해 - 객체지향은 말 그대로 객체를 지향하는 것이다. 진정한 객체지향 패러다임으로의 전환은 클래스가 아닌 객체에 초점을 맞출 때에만 얻을 수 있다. 이를 위해서는 프로그래밍하는 동안 다음의 두 가지에 집중해야 한다. 어떤 클래스가 필요한지를 고민하기 전에 어떤 객체들이 필요한지 고민하라. 클래스는 공통적인 상태와 행동을 공유하는 객체들을 추상화한 것이다. 따라서 클래스의 윤곽을 잡기 위해서는 어떤 객체들이 어떤 상태와 행동을 가지는지를 먼저 결정해야 한다. 객체를 중심에 두는 접근 방법은 설계를 단순하고 깔끔하게 만든다. 객체를 독립적인 존재가 아니라 기능을 구현하기 위해 협력하는 공동체의 일원으로 봐야 한다. 이것은 설계를 유연하고 확장 가능하게 만든다. 객체들의 모양과 윤곽이 .. 2022. 3. 2.
[오브젝트] 3장. 역할, 책임, 협력 객체 지향에서 가장 중요한 것은 역할, 책임, 협력이다. 협력 : 객체들이 애플리케이션의 기능을 구현하기 위해 수행하는 상호작용 - 어떤 객체가 다른 객체에게 무언가를 요청하는 것 - 객체의 행동을 결정 - 메시지 전송 -> 메서드 실행 책임 : 객체가 협력에 참여하기 위해 수행하는 로직 - 객체지향 설계는 협력에 필요한 메시지를 찾고 메시지에 적절한 객체를 선택하는 반복적인 과정을 통해 이뤄진다. 그리고 이런 메시지가 메시지를 수신할 객체의 책임을 결정한다. - 객체가 충분히 추상적이면서 미니멀리즘을 따르는 인터페이스를 가지게 하고 싶다면 메시지가 객체를 선택하게 하라. - 중요한 것은 객체의 상태가 아니다. 행동이다. 행동이 중요하다. 객체가 가질 수 있는 상태는 행동을 결정하고 나서야 비로소 결정할.. 2022. 2. 27.
[오브젝트] 1장. 객체 설계 - 객체는 자신의 데이터를 스스로 처리하는 자율적인 존재여야 한다. 외부의 간섭을 최대한 배제하고 메시지를 통해서만 협력하는 자율적인 객체들의 공동체를 만드는 것이 훌륭한 객체 지향 설계를 얻을 수 있는 지름길이다. 절차지향과 객체지향 - 절차지향 : 모든 처리가 하나의 클래스 안에 위치하고 나머지 클래스는 단지 데이터의 역할만 수행. 절차적 프로그래밍의 세상은 우리의 예상을 너무나도 쉽게 벗어나기 때문에 코드를 읽는 사람과 원활하게 의사소통하지 못한다. 또한 데이터의 변경으로 인한 영향을 지역적으로 고립시키기 어려워 변경은 버그를 부르고 버그에 대한 두려움은 코드를 변경하기 어렵게 만든다. - 객체지향 : 데이터와 프로세스가 동일한 모듈 내부에 위치하도록 프로그래밍하는 방식. 의존성은 적절히 통제되고 .. 2022. 2. 19.