✏️, 💡,❓ 해당 이모지는 저의 생각임을 나타냅니다. 설계는 변경을 위해 존재하고 변경에는 어떤 식으로든 비용이 발생한다. 훌륭한 설계란 합리적인 비용 안에서 변경을 수용할 수 있는 구조를 만드는 것이다. 객체를 단순한 데이터의 집합으로 바라보는 시각은 객체의 내부 구현을 퍼블릭 인터페이스에 노출시키는 결과를 낳는다. 이번 장에서는 영화 예매 시스템을 책임이 아닌 데이터 중심으로 설계해보고 객체지향적 설계와 어떤 차이가 있는지 보겠다. 01 데이터 중심의 영화 예매 시스템객체지향 설계에서는 두 가지 방법을 이용해 시스템을 객체로 분할할 수 있다. 상태(=데이터)를 분할의 중심축으로 삼는 방법이 있고, 책임을 분할의 중심축으로 삼는 방법이 있다.훌륭한 객체지향 설계는 데이터가 아니라 책임에 초점을 맞..
✏️, 💡,❓ 해당 이모지는 저의 생각임을 나타냅니다. 객체지향 패러다임 관점에서 핵심은 역할(role), 책임(responsbility), 협력(collaboration)이다.클래스와 상속은 객체들의 책임과 협력이 어느 정도 자리를 잡은 후에 사용하라 수 있는 구현 메커니즘일 뿐이다. 01 협력객체들이 애플리케이션의 기능을 구현하기 위해 수행하는 상호작용을 협력이라고 한다.객체가 협력에 참여하기 위해 수행하는 로직은 책임이라고 부른다.객체들이 협력 안에서 수행하는 책임들이 모여 객체가 수행하는 역할을 구성한다. 협력이 설계를 위한 문맥을 결정한다메시지 전송은 객체 사이의 협력을 위해 사용할 수 있는 유일한 커뮤니케이션 수단이다. 메시지를 수신한 객체는 메서드를 실행해 요청에 응답한다. 객체란 상태와..
✏️, 💡,❓ 해당 이모지는 저의 생각임을 나타냅니다. 기술 글을 쓸 때 가장 어려운 부분은 적당한 수준의 난이도를 유지하면서도 이해하기 쉬운 예제를 선택하는 것이다. 이번 장의 목표는 책을 읽으면서 이해하게 될 다양한 주제들을 얕은 수준으로나마 살펴보는 것이다. 이번 장을 읽을 때 가장 중요한 준비물은 가벼운 마음가짐이다. 01 영화 예매 시스템이번 장에서 소개할 예제는 온라인 영화 예매 시스템이다. '영화'와 '상영'이라는 용어를 구분할 필요가 있는데, '상영'은 실제로 관객들이 영화를 관람하는 사건으로 사용자가 실제로 예매하는 대상은 '상영'이다. (상영 일자, 시간, 순번등이 포함된)또 '할인 조건'은 상영 시작 시간 또는 상영 순번을 이용해 할인 여부를 결정하는 규칙이고, '할인 정책'은 할인..
✏️, 💡,❓ 해당 이모지는 저의 생각임을 나타냅니다. 이 책에서는 객체지향 패러다임을 설명하기 위해 추상적인 개념이나 이론을 앞세우지 않을 것이다. '코드'를 이용해 객체지향의 다양한 측면을 설명하려고 노력할 것이다. 01 티켓 판매 애플리케이션 구현하기티켓 판매 애플리케이션을 만들어보자. 주의해야할 점은 이벤트에 당첨된 관람객과 그렇지 못한 관람객은 다른 방식으로 입장시켜야 한다는 것이다. 최종 코드는 아래와같이 된다. (코드 확인)public class Theater { private TicketSeller ticketSeller; public Theater(TicketSeller ticketSeller) { this.ticketSeller = ticketSeller; ..