북리뷰/오브젝트(4)
-
설계 품질과 트레이드오프
객체지향 설계란 올바른 객체에게 올바른 책임을 할당하면서 낮은 결합도와 높은 응집도를 가진 구조를 창조하는 활동이다. 적절한 비용 안에서 쉽게 변경할 수 있는 설계는 응집도가 높고 서로 느슨하게 결합되어 있다. 중요한 것은 객체의 상태가 아닌, 객체의 행동에 초점을 맞추는 것이다. 객체 지향 설계는 두가지 방법이 있다. 첫 번째 방법은 상태(데이터)를 분할의 중심축으로 삼는 방법이고, 두번째 방법은 책임을 분할의 중심축으로 삼는 방법이다. 객체지향 설계는 상태(데이터)가 아니라 책임에 초점을 맞춰야 한다. 객체의 상태는 구현에 속하기 때문이다. 허나 책임은 인터페이스에 속한다. 인터페이스(책임) 뒤로 구현(상태)을 갭출화해야 안정적인 설계를 얻을 수 있다. 즉, 데이터를 중심으로 설계하면 안 된다. 이 ..
2023.10.01 -
역할, 책임, 협력
객체지향의 본질은 협력하는 객체들의 공동체를 창조하는 것이다. 객체지향의 핵심은 적절한 객체를 찾고, 적절한 책임을 할당하는 과정에서 드러난다 # 협력 객체는 고립된 존재가 아닌 다른 객체와 협력하는 사회적인 존재이다. 객체들은 협력하여 시스템 기능이라는 큰 목표를 달성한다. 두 객체 사이 메시지 전송/수신 을 통해 커뮤니케이션하며 목표를 이룬다. 매시지를 수신한 객체는 스스로 메시지 처리할 방법을 선택하여 내부에 구현한 메서드를 실행해 요청에 응답한다. 각 내부 구현은 외부에서 직접 접근을 못하게 캡슐화를 한다. 정리해보면, 객체가 자신이 할당된 책임을 수행하던 중에 외부의 도움이 필요하면 적절한 객체에게 메시지를 전송해서 협력을 요청한다. 이러한 협력이 연쇄되어 애플리케이션의 기능이 구현된다. 상태는..
2023.09.30 -
객체지향 프로그래밍
# 영화 예매 시스템 영화관 예매 시스템을 만든다고 가정해보자. 영화표를 구매할 때 할인을 받을 수 있다. 할인액을 결정하는 데 두 가지 규칙이 존재하는데, 하나는 할인 조건(discount condition), 다른 하나는 할인 정책(discount policy)가 있다고 보자. 할인 조건은 할인 여부를 결정하며 '순서 조건'과 '기간 조건'이 있다. 순서 조건은 상영 순번이 일치하면 할인을 해주는 것이고, 기간 조건은 상영 시작 시간이 해당 기간 안에 포함하면 할인해주는 것이다. 할인 정책은 '금액 할인 정책' 과 '비율 할인 정책'이 있다. 금액 할인 정책은 예매 요금에서 일정 금액을 할인해주는 방식이며, 비율 할인 정책은 일정 비율만큼 할인해주는 방식이다. 영화별로 하나의 할인 정책만 할당 가능하..
2023.09.30 -
객체, 설계
# 들어가며 이론이 먼저일까 실무가 먼저일까? 글래스의 주장에 따르면 초기에는 실무가 먼저 급속할 발전을 이룬다고한다. 이론이 정립할 수 없기 때문이다. 실무가 어느 정도 발전하고 나서야 실용성을 입증하는 이론이 모습을 갖춰가고, 해당 분야가 충분히 성숙해지는 시점에 이르러서야 이론이 실무를 추월하게 된다고 한다. 즉, 이론보다 실무가 먼저다. SW 분야도 마찬가지이다. 아직까지 다른 공학에 비해 역사도 짧다. 컴퓨터가 세상에 나온 이후 수많은 SW가 설계되고 개발되었으나, 이론은 1970년대 돼서야 슬슬 모습을 비추기 시작했다. 이 이론들 역시 실무에서 반복적으로 적용되던 기법들을 이론화한 것을디 대부분이다(디자인패턴, 리팩터링 등) 유지보수에 대한 이론은 거의 전무하다. 따라서 SW에 대한 설계/유지..
2023.09.29