OOP(3)
-
객체지향 프로그래밍
# 영화 예매 시스템 영화관 예매 시스템을 만든다고 가정해보자. 영화표를 구매할 때 할인을 받을 수 있다. 할인액을 결정하는 데 두 가지 규칙이 존재하는데, 하나는 할인 조건(discount condition), 다른 하나는 할인 정책(discount policy)가 있다고 보자. 할인 조건은 할인 여부를 결정하며 '순서 조건'과 '기간 조건'이 있다. 순서 조건은 상영 순번이 일치하면 할인을 해주는 것이고, 기간 조건은 상영 시작 시간이 해당 기간 안에 포함하면 할인해주는 것이다. 할인 정책은 '금액 할인 정책' 과 '비율 할인 정책'이 있다. 금액 할인 정책은 예매 요금에서 일정 금액을 할인해주는 방식이며, 비율 할인 정책은 일정 비율만큼 할인해주는 방식이다. 영화별로 하나의 할인 정책만 할당 가능하..
2023.09.30 -
객체, 설계
# 들어가며 이론이 먼저일까 실무가 먼저일까? 글래스의 주장에 따르면 초기에는 실무가 먼저 급속할 발전을 이룬다고한다. 이론이 정립할 수 없기 때문이다. 실무가 어느 정도 발전하고 나서야 실용성을 입증하는 이론이 모습을 갖춰가고, 해당 분야가 충분히 성숙해지는 시점에 이르러서야 이론이 실무를 추월하게 된다고 한다. 즉, 이론보다 실무가 먼저다. SW 분야도 마찬가지이다. 아직까지 다른 공학에 비해 역사도 짧다. 컴퓨터가 세상에 나온 이후 수많은 SW가 설계되고 개발되었으나, 이론은 1970년대 돼서야 슬슬 모습을 비추기 시작했다. 이 이론들 역시 실무에서 반복적으로 적용되던 기법들을 이론화한 것을디 대부분이다(디자인패턴, 리팩터링 등) 유지보수에 대한 이론은 거의 전무하다. 따라서 SW에 대한 설계/유지..
2023.09.29 -
01. 협력하는 객체들의 공동체
객체지향 프로그래밍이란 현실 속에 존재하는 사물을 최대한 유사하게 모방해 SW내부로 옮겨오는 작업이라고 많이 알고있음. 실세계의 모방이라는 개념은 객체지향의 철학적인 개념을 설명하는데 적합하나, 실제 분석 및 설계를 설명하기에는 적합하지 않음. 실제로 객체와 대응되는 실세계 사물을 발견할 확률이 높지 않다. 객체지향의 목표는 실세계를 모방하는 것이 아니라 새로운 세계를 창조하는 것 객체지향에서 가장 중요한 개념 : 역할, 책임, 협력 # 요청과 응답으로 구성된 협력 대부분 사람들은 큰 문제를 혼자서 해결하기 보다는 다른 사람들의 도움을 받아 해결하는 것을 선호 사람들은 스스로 해결하지 못하는 문제와 마주치면 문제 해결에 필요한 지식을 알고 있거나 서비스를 제공할 수 있는 사람에게 도움을 요청 하나의 문제..
2023.05.28