일단 프로젝트를 진행할 때
1. 주제 정하기
2. 필수 기능 회의
3. UML 설계
4. GUI 설계
5. 클래스 및 함수 설계
6. 역할 분배 및 코딩 시작
단계로 나눴던 것 같다.
**** 수정 사항 많음 주의 ****
7번의 회의 끝에 나오는 UML이어서 계속해서 수정사항이 있다
바쁜 사람은 제일 밑에 있는 UML만 참고해도 좋을 것 같다
우선 영화관 프로젝트의 전체적인 틀
+ 영화를 등록할 수 있는 관리자와, 영화를 예매할 수 있는 사용자가 GUI의 분리
+ 영화관 지점(강남점, 압구정점, ...)은 나누지 않고, 영화관 하나의 지점에 상영관이 여러개
+ 상영시간을 넣어서 영화 시작시간을 설정하면 끝나는 시간을 자동 계산
기능 회의 :
일반고객
- 로그인 => 마이페이지(예매정보, 잔여 포인트 확인)
- 영화: 예매율 순위로 영화 확인, 예매, 예매 취소, 결제(포인트 차감)
- 상영관: 상영시간표, 좌석정보(+인원수 입력받기 (금액은 8000원으로 지정))
관리자
- 영화 시작시간(+상영시간 입력받고, 끝나는 시간은 자동 계산), 상영관 지정
- 잔여 좌석
- 예매율 계산
- 영화 포스터 등록
클래스 분리 및 변수 회의:
Person (고객정보) 클래스
- 아이디
-비밀번호
-포인트
영화 클래스
- 영화 제목
- 상영 시간
- 포스터
예매정보 클래스
영화관 클래스(Manage class)
- 예매율 계산
- 상영관 리스트
- 예매
- 결제
- 고객정보리스트
상영관 정보
- 좌석
- 상영 시간표
위의 내용을 토대로 그린 UML1
화살표가 받는 곳이 화살표가 나오는 곳을 가지고있다는 의미를 전달하고 싶었다
그런데 예매랑 결제는 그냥 이어진다는 의미
함수는 거의 get, set 함수만 추가 -> DB를 쓴다고 해도, 하나의 각각의 요소를 가지고 오기 위해
영화는 DB로 관리, 나머지 요소는 arraylist로 관리.
포스터 경로 설정 가능.
좌석 정보 배치는 이차원배열로 하고, 선택한지 아닌지는 boolean으로 구분
팀원들과 상의하며 합친 UML2
<< 수정사항 >>
+ 결제가 없어짐: 예매에서 바로 그냥 확인만 누르면 결제
결제가 보여주는게 그냥 기능을 넣는 것이 아니라,
직관적으로 보기 좋게 넣기 위해 넣은 것이기도 했고
사실 포인트를 사용하고 얻기 위해서 결제가 필요하다고 생각했는데
그러다보면 너무 복잡해지고 신경써야할 것도 많기때문에? 일단은 빼고 나중에 구현.
+ 전체 사용자도 DB로 관리
+ 함수 더 구체적으로 결정
+ 상영 시간표는 현재 그 상영관에서 상영되는 영화가 있어야하나 구분해야하므로 boolean. 각각의 시간을 array배열로 정리하고, 해당되는 시간에 영화가 예약이 된다면 영화가 끝날 때 까지 F로 설정 => 그 시간에는 해당 상영관에 영화 추가 불가
+ id로 중복 체크함으로 일련번호 있을 필요 x
+ 전체좌석 수 / 잔여 좌석 수 알아야 함
교수님 피드백 받은 후 수정한 최종 UML3
<< 피드백 내용 >>
+ 컴퓨터가 없던 시절을 생각하며 영화관 관리를 하나의 공책에 직접 수기로 관리한다고 생각해보자
(예매를 할 땐 어떠한 방식으로 진행되고, 예매 내역을 확인할 때는 어떠한 방식으로 이루어질까? 등등을 고민해보자)
+ 상영관에서 어떤 영화가 나올지? vs 영화가 어떤 상영관에서 상영될지?
=> 상영관에서 어떤 영화가 나올지! (움직이지 않는 것을 상위 클래스로 두는 것이 유리! (상영관은 없어지지 않으므로. 내부적으로 공사를 하거나 영화관이 사라지지 않는이상))
+GUI를 그리면 업무 분석이 가능. 나중에도 GUI는 그려보면서 베이스는 정해둘 것!
+ 참고)영화관 프로그램은 설계가 어렵다.. 이거를 하면 비행기 예약 시스템 등등 다른 것은 거의 비슷하게 연결이 가능하다
+ 객체지향의 장점은 생각하는 것을 절차적으로 생각하지 않고 바로 설계 가능하다는 것
<< 수정사항 >>
+ GUI에서 상영예정작을 넣기로해서 상영시작 날짜와 몇일 동안 상영할지 정보 추가
+ 영화 추가/수정/삭제/검색/객체 넘겨주기
+ 상영관 추가/수정/삭제/검색/객체 넘겨주기
+ 회원 관리 => 삭제
+ 회원 관리 (회원가입, 탈퇴, 로그인, 예매정보 삭제)
+예매율 계산과 상영시간표 만들기
+ 예매율 계산을 위해 영화에 누적관람객 추가
+ 영화 DB에 개봉날짜만 받기. 상영기간이 지난 영화는 수동으로 관리자가 지우게 만드는 것이 편할 것 같다고 생각. 인기가 많은 영화라면 몇일 더 상영할 수도 있고, 자동으로 F로 바꾸거나 영화가 삭제되게 만드는 것은 위험할 것 같아서, 관리자 화면에서 개봉한지 오래된 날짜 순으로 볼 수 있게 하도록 함
+ 영화관에 오늘 날짜 넣기(api로 보니 기본으로 제공해줌)
+ 개봉 디데이 계산
'ⓟⓡⓞⓙⓔⓒⓣ' 카테고리의 다른 글
[JAVA] 영화관 프로젝트 (함수 설계) (0) | 2021.08.03 |
---|---|
[JAVA] 영화관 프로젝트 (GUI설계) (0) | 2021.08.03 |
댓글