영화 예매 시스템

사용자가 영화를 쉽고 빠르게 예매할 수 있도록 돕는 시스템을 만들어보자.

설계하기에 앞서 먼저, 영화와 상영이라는 용어를 구분할 필요가 있다.

  • 영화는 영화가 기본적으로 가지고 있는 정보를 뜻한다. (제목, 상영 시간, 가격 정보)

  • 상영은 실제로 관객들이 영화를 관람하는 것을 말한다. (상영 일자, 시간, 순번)

두 용어를 구분한 이유는 사용자가 실제로 예매하는 대상은 영화가 아니라 상영이기 때문이다.

예매를 할 때, 특별한 조건에 한해 할인 받을 수 있다.

두가지 규칙이 존재하는데 (1) 할인 조건 (2) 할인 정책이다.

할인 조건은 할인의 여부를 결정한다. 다시 할인 조건은 (1) 순서 조건 (2) 기간 조건으로 나눌 수 있다.

순서 조건은 상영의 순번을 통해서 할인의 여부를 결정하는 규칙이다. 만약, 10번이 순서 조건이면 10번째에 상영되는 영화는 예매 시 할인 혜택이 제공된다.

기간 조건도 비슷한 맥락이다. 특정한 요일, 시작 시간과 종료 시간이 주어지면, 기간 안에 포함된 모든 상영 영화는 할인 혜택이 제공된다.

할인 정책은 (1) 금액 할인 정책과 (2) 비율 할인 정책이 있다. 금액 할인 정책은 말 그대로 일정 금액을 할인하고, 비율 할인 정책은 일정 비율만큼 할인이 적용되는 것을 말한다.

영화별로 하나의 할인 정책이 적용된다. 물론 할인 정책이 없을 수도 있다.

할인 조건은 여러 개의 조건이 섞이는 것이 가능하다.

기본적으로 할인을 적용하려면, 할인 조건과 할인 정책을 조합해 사용한다.

먼저 할인 조건에 만족하는지 검사하고, 할인이 되는 상황이라면 할인 정책을 적용한다.

사용자가 예매에 성공하면, 예매 정보를 생성한다.

예매 정보에는 영화 제목, 상영 일자 정보, 인원, 정가, 결제한 금액이 포함된다.

영화 예매 시스템을 구성하는 개념과 규칙들을 알아보았다. 그러면 객체지향 프로그래밍으로 구현해보자.

Last updated