소프트웨어 개발에서 실무가 이론보다 앞서 있는 대표적인 분야로 '소프트웨어 설계'와 '소프트웨어 유지보수'를 들 수 있다. 컴퓨터라는 도구가 세상에 출현한 이후 지금까지 셀 수 없을 정도로 많은 수의 소프트웨어가 설계되고 개발돼 왔다. 따라서 실무는 훌륭한 소프트웨어
이번 장에서 소개할 예제는 온라인 예매 시스템이다.'영화'와 '상영'이라는 용어를 구분할 필요가 있을 것 같다.'영화'는 영화에 대한 기본 정보를 표현한다. 제목, 상영시간, 가격 정보와 같이 영화가 가지고 있는 기본적인 정보를 가리킬 때 사용할 것이다.'상영'은 실제
사용자가 영화 예매 시스템을 통해 영화를 예매할 수 있게 하려면 다양한 객체들이 참여하는 협력을 구축해야 한다. 그림 3.1은 영화 예매라는 기능을 완성하기 위해 협력하는 객체들의 상호작용을 표현한 것이다.객체들이 애플리케이션의 기능을 구현하기 위해 수행하는 상호작용을
객체지향 설계의 핵심은 역할, 책임, 협력이다. 협력은 애플리케이션의 기능을 구현하기 위해 메시지를 주고받는 객체들 사이의 상호작용이다. 책임은 객체가 다른 객체와 협력하기 위해 수행하는 행동이고, 역할은 대체 가능한 책임의 집합이다.이번 장에서는 영화 예매 시스템을
이번 장에서 살펴볼 GRASP 패턴은 책임 할당의 어려움을 해결하기 위한 답을 제시해줄 것이다.데이터 중심 설계에서 책임 중심의 설계로 전환하기 위해 다음 두 가지 원칙을 따라야 한다.데이터 보다는 행동을 먼저 결정하라협력이라는 문맥 안에서 책임을 결정하라책임 중심 설
객체지향 프로그래밍에 대한 가장 흔한 오해는 애플리케이션이 클래스의 집합으로 구성된다는 것이다.훌륭한 객체지향 코드를 얻기 위해서는 클래스가 아니라 객체를 지향해야 한다.두 객체 사이의 협력 관계를 설명하기 위해 사용하는 전통적인 메타포는 클라이언트-서버 모델이다메시지
불필요한 정보를 제거하고 현재의 문제 해결에 필요한 핵심만 남기는 작업을 추상화라고 부른다.큰 문제를 해결 가능한 작은 문제로 나누는 작업을 분해라고 부른다.현대적인 프로그래밍 언어를 특징 짓는 중요한 두 가지 추상화 메커니즘은 프로시저 추상화와 데이터 추상화다. 프로