개요 2장에서는 올바른 객체지향 개발에 대해서 알아보았고, 3장에서는 객체지향 설계의 핵심에 대해서 얘기하였다. 4장 부터는 객체지향 설계를 왜 해야하는지에 대한 관점에서부터 출발하여 객체지향 설계를 안했을 때의 단점을 하나 하나 살펴본다. 이번 4장에서는 데이터 중심의 관점으로 객체의 상태에 초점을 맞추는 데이터 중심의 설계를 살펴보면서 객체 지향적인 설계의 구조와의 차이점을 알아보고자 한다. 결론부터 말하자면, 데이터 중심의 관점은 객체의 상태에 초점을 맞추기 때문에 객체 자체를 독립된 데이터로 보고, 구현 자체가 객체의 상태에 종속되기 때문에 변경에 취약해진다. 설계의 품질을 판단하기 위한 척도 설계의 품질은 판단하기 위한 척도로 캡슐화, 응집도, 결합도를 이용하여 판단이 가능하다. 캡슐화 변경 가..
개요 객체지향의 본질은 협력하는 객체들의 공동체를 참조하는 것이다. 객체지향의 설계의 핵심은 협력을 구성하기 위해 적절한 객체를 찾고 적절한 책임을 할당하는 과정에서 드러난다. 애플리케이션의 기능을 구현하기 위해서 어떤 협력이 필요하고 협력을 위해 어떤 역할과 책임이 필요한지를 고민하지 않은 채 너무 이른 시기에 구현체 초점을 맞추는 것은 변경하기 어렵고 유연하지 못한 코드를 낳는 원인이 된다. 객체지향 패러다임의 관점인 역할(role), 책임(responsibility), 협력(collaboration)에 대해서 알아보자. 협력 객체들이 애플리케이션의 기능을 구현하기 위해 수행하는 상호작용 협력은 객체지향 세계에서 기능을 구현할 수 있는 유일한 방법이다. 객체 자체는 자율적으로 동작하기 때문이다. 자율..
개요 온라인 영화 예매 시스템을 통해 올바르게 된 객체지향 설계가 무엇인지, 이 책을 읽으면서 이해하게 될 다양한 주제들을 먼저 간단하게 살펴보자. 요구사항 요구사항 1 사용자는 영화 예매 시스템을 이용해 보고 싶은 영화를 예매 할 수 있다. 이 예제에서는 '영화' 와 '상영'을 구분해야한다. 1. 영화 - 제목, 상영시간, 가격 정보와 같이 영화가 가지고 있는 기본 정보 2. 상영 - 실제로 관객들이 영화를 관람하는 사건, 상영 일자, 시간, 순번 등을 가지고 있다. 이렇게 나눈 이유는 클라이언트가 실제로 예매하는 건 영화 그 자체가 아닌 상영을 예매하는 것이기 때문이다. 이 부분이 이해가 안될 수 있는데 객체의 의인화를 통해 책임을 확실히 구분 한 것이다. 요구사항 2 영화 예매시 특정한 조건을 만족..
해당 글은 객체지향의 사실과 오해에 이어서 코드로 살펴보는 오브젝트 책이다. 기본적인 내용에 대한 기반은 객체지향의 사실과 오해를 기반으로 설명을 하고 있기 때문에 혹시 어느 방향인지 잘 이해가 안된다면 객체지향의 사실과 오해라는 책을 먼저 읽는 것을 권장한다! 아니 본인이 객체지향언어를 사용하는 개발자라면 꼭 읽어봐야 한다고 생각한다. 개요 잘못된 방식의 애플리케이션 설계는 무엇인지, 객체지향적인 방식의 설계는 무엇인지, 객체지향적으로 설계를 하면서 사고해야하는 것은 무엇인지에 대해 알아보자. 티켓 판매 애플리케이션 구현 요구사항 관객은 티켓 판매점에서 초대장 보유 여부에 따라 구매 하거나 교환 할 수 있다. 관객은 가방을 가지고 있으며, 가방에는 현금, 초대권, 티켓이 들어있을 수 있다. 티켓 판매점..