본문 바로가기
728x90

객체지향6

Chapter 6. 메시지와 인터페이스 객체지향 프로그래밍에 대한 가장 큰 오해는 애플리케이션이 클래스의 집합으로 구성된다는 것이다. 클래스는 그저 도구일 뿐이다. 따라서 좋은 객체지향 코드를 얻기 위해서는 협력 안에서 객체가 수행하는 책임에 초점을 맞추어야 한다. 책임은 객체가 수신할 수 있는 메시지의 기반이 된다. 애플리케이션은 클래스로 구성되지만 메시지를 통해 정의된다. 객체가 수신하는 메시지들이 객체의 퍼블릭 인터페이스를 구성한다. 좋은 퍼블릭 인터페이스를 얻기 위해서는 책임 주도 설계와 유연하고 재사용 가능한 퍼블릭 인터페이스를 만드는 데 도움이 되는 설계 원칙과 기법을 적용해야 한다. 이런 설게 원칙과 기법을 살펴보기 전에 우선 협력과 메시지를 설명하겠다. 협력과 메시지 클라이언트 - 서버 모델 협력은 어떤 객체가 다른 객체에게 무.. 2022. 1. 22.
Chapter 4. 설계 품질과 트레이드오프 객체지향 설계의 핵심은 역할, 책임, 협력이다. 1. 협력: 애플리케이션 기능 구현을 위한 객체들 간의 상호작용. 2. 책임: 객체가 다른 객체와의 협력을 위해 수행하는 행동. 3. 역할: 대체 가능한 책임의 집합. 객체지향 설계에서 가장 중요한 것은 적절한 책임 할당이다. 적절한 책임 할당이 이루어 져야 제대로된 협력이 가능하고 제대로된 역할의 배분이 이루어진다. 객체지향 설계는 올바른 책임을 할당해 낮은 결합도와 높은 응집도를 가진 구조를 만드는 것이다. 이 말에는 다음과 같은 두 가지 관점이 섞여있다. 1. 객체지향 설계의 핵심이 책임이다. 2. 책임을 할당하는 작업이 응집도와 결합도 같은 설계 품질과 깊이 연관되 있다. 설계를 변경한다는 것은 비용 발생과 직결되 있다. 따라서 합리적인 비용 내에서.. 2022. 1. 10.
Chapter 3. 역할, 책임, 협력 객체지향 패러다임의 관점에서 핵심은 역할(role), 책임(responsibility), 협력(collaboration)이다. 클래스, 상속, 지연 바인딩 역시 중요하지만 이들은 구현에 치우쳐져 있기 때문에 객체지향 패러다임의 본질과는 거리가 있다. 객체지향의 본질은 협력하는 객체들의 공동체를 창조하는 것이다. 객체지향 설계의 핵심은 협력을 구성하기 위해 적절한 객체를 찾고 적절한 책임을 할당하는 과정에서 드러난다. 애플리케이션 기능 구현을 위해 객체들 간의 필요한 역할, 책임, 협력을 고려하지 않고 구현을 한다면 변경이 어렵고 유연하지 못한 코드가 나온다. 따라서 완성도 높은 코드를 작성하기 위해서는 높은 응집도, 중복 없는 상속 계층을 구현하는 것 보다도 역할, 책임, 협력에 대한 고려가 우선시 되어.. 2022. 1. 6.
Chapter 1. 객체, 설계 티켓 판매 애플리케이션 구현 소극장에서 이벤트를 통해 공연을 무료로 관람할 수 있는 관객과 표를 구매해야 하는 관객이 있다고 가정하자. 이벤트에 당첨된 관객은 당첨을 입증하는 표를 연극표로 교환한 뒤에 입장할 수 있다. 따라서 연극 당일날 이 두 종류의 관객을 입장시킬때 당첨여부를 확인하고 당첨자가 아니라면 티켓을 판매한 뒤 입장해야 한다. 이를 구현하기 위해 다음과 같은 클래스들을 설계하자 1 2 3 4 5 6 7 /** * 이벤트 당첨자에게 발송되는 초대장 */ public class Invitation { /** 초대 일자 */ private LocalDateTime when; } cs 1 2 3 4 5 6 7 8 9 10 11 12 /** * 공연을 관람하는 사람들이 가지고 있어야 하는 티켓 */.. 2022. 1. 1.
728x90