목록책 리뷰/오브젝트 (3)
기어가더라도 제대로

조영호 작가님의 전작인 작품에서 언급했던 역할, 책임, 협력에 대해서 이야기 해보는 장입니다. 왜 이게 중요할까요? 결국 객체지향의 본질을 이해하고 설계를 잘짜기 위함이죠. 객체지향의 본질은 협력하는 객체들의 공동체를 창조하는 것이다. 객체지향 설계의 핵심은 협력을 구성하기 위해 적절한 객체를 찾고 적절한 책임을 할당하는 과정에서 드러난다. - p.73 각각이 뭔지 살펴보죠! 협력: 객체들이 애플리케이션의 기능을 구현하기 위해 수행하는 상호작용 책임: 객체가 협력에 참여하기 위해 수행하는 로직 역할: 객체들이 협력 안에서 수행하는 책임들이 모여 객체가 수행하는 역할을 구성 1. 협력 영화 예매 시스템에서 "예매하라" 라는 메시지를 수행하기 위해 다양한 객체들이 참여했습니다. 여기서 볼 수 있듯이 두 객체..

2장에서는 영화 예매 시스템을 만들어보면서 사용자가 영화 예매 시스템을 이용해 쉽고 빠르게 보고 싶은 영화를 예매할 수 있도록 해보자. 객체에 대한 접근 영화 예매 도메인에서 객체들을 설정해야한다. 그 객체들은 아직 클래스일지 인터페이스일지 모르지만, 어떠한 역할을 하는 주체정도로 설정하고 가는 것이 좋다. 영화 예매 도메인을 구성하는 객체는 단순하게 일반화하자면 다음과 같다. 영화(Movie): 영화가 가지고 있는 기본적인 정보를 들고 있는 객체 상영(Screening): 실제로 관객들이 영화를 관람하는 사건을 표현 할인 정책(Discount Policy): 할인 요금을 결정 할인 조건(Discount Condition): 가격의 할인 여부를 결정 새로운 도메인을 설정할 때 일반적인 시각과 다른점이 재..

프로그래밍 패러다임의 유용성 개발자 공동체가 동일한 프로그래밍 스타일과 모델을 공유 불필요한 충돌 방지 동일한 규칙과 방법을 공유하는 개발자로 성장 소프트웨어 모듈의 세가지 목적 - by,. 로버트 마틴(Robert C. Martin) 실행 중에 제대로 동작 변경을 위해 존재 코드를 읽는 사람과 의사소통 모듈이란 크기와 상관 없이 클래스나 패키지, 라이브러리와 같이 프로그램을 구성하는 임의의 요소 - p.14 이해가 가능한 코드 우리의 예상에서 크게 벗어나지 않는 코드 기억할 내용이 적은 코드 변경이 용이한 코드 의존성이 적은 코드 협력을 위한 최소한의 의존성만 유지하고 불필요한 부분은 제거 두 객체 사이의 결합도가 높으면 높을수록 함께 변경될 확률도 높아지기 때문에 변경하기 어려워진다. 변경이 용이하게..