영화 예매 및 취소
영화 정보 및 기타 할인 적용
- 클래스 정의
- 아키텍쳐 설계
- Use-case Diagram (Description 포함)
- Use-case 를 기반으로 Sequence Diagram
- State-Chart
- Interface 정의
- 일단 툴은 draw.io 를 사용할 것
- 전체 프로젝트를 통합해야 하므로 개념적인 부분을 잘 이해하고 있을 것
-
개념 부분은 이곳 을 참고 (UML: 클래스 다이어그램과 소스코드 매핑)
-
Generalization (일반화)
Generalization (일반화) 은 Super(부모)클래스와 Sub(자식)클래스간의 Inheritance(상속) 관계를 나타냄
서브클래스가 주체가 되어 서브클래스를 슈퍼클래스로 Generalize 하는 것
반대의 개념은, 슈퍼클래스를 서브클래스로 Specialize(구체화) 하는 것
-
-
영화예매 시스템에 무엇이 필요할까
- 고객 데이터
- 성별, 나이, 이름
- 영화정보 데이터
- 영화명, 시간, 영화관람나이
- 영화관 데이터
- 영화관
- 고객 데이터
-
Class point of view
-
Reservation
-
Variable
field : type
- 상영관 데이터 (theaterData)
- 유저 정보 (UserData)
- 예약 날짜 (reservationDate)
- 인원 수 (numberOfPeople)
- 금액 (amoutMoney)
- 결제 수단 (paymentMethod)
- 상영관 좌석 예약 정보 (theaterSeatingReservationData)
-
Method
method(type) : type
- checkReservationData(String) : boolean
- 예약이 가능한 날짜인지 확인합니다
- checkSeatingAvailability(String) : boolean
- 예매 가능한 좌석인지 확인합니다
- getTheaterData() : Theater(class)
- 상영관 정보를 받아옵니다
- getUserData() : User(class)
- 유저 데이터를 받아옵니다
- processPayment(String) : boolean
- 결제를 진행합니다
- checkReservationData(String) : boolean
-
-
User
- Variable
- 이름 (name)
- 성별 (sex)
- 나이 (age)
- 등급 (grade)
- 핸드폰 번호 (phoneNumber)
- Method
- getName(string) : string
- getSex(string) : string
- getAge(int) : int
- getName()
- Variable
-
Movie
-
Variable
- 영화명 (movieTitle)
- 영화 시간 (movieTime)
- 영화 타입 (movieType)
- 영화 제한 나이 (movieLimitAge)
-
Method
- method(type) : type
- getMovieTitle() : int
- getMovieTime() : int
- getMovieLimitAge() : int
-
-
Theater
- Variable
- 상영관 정보 (theaterInfo)
- 상영관 영화 매칭 데이터 (theaterMovieMatchingData)
- 좌석 정보 (seatingInfo)
- 수용 인원 (capacity)
- Method
- getTheaterInfo() : string
- getSeatingInfo() : hashMap
- getCapacity() : int
- getTheaterMovieMatchingData() : hashMap
- Variable
-
-
영화 예매 서브시스템
- Data Collections : 영화 예매를 위한 서브시스템으로 영화상영정보, 영화관 정보, 회원 정보를 가져온다
- 영화 상영 정보
- 영화관 정보
- 회원 정보
- Purchase : 영화 예매 중 결제를 담당하는 서브시스템이다
- 카드 정보
- Data Collections : 영화 예매를 위한 서브시스템으로 영화상영정보, 영화관 정보, 회원 정보를 가져온다
시스템이 사용자에 의해서 어떠한 형태로 사용되는지를 기술하는 UML의 표준 표기법
시스템이 갖추어야 하는 기능적(Functional) 또는 비기능적(non-Functional) 요구사항을 표현하는 방법
모델링이 UML로 통합되면서 요구사항을 기술하는 일반적인 방법으로 사용되어짐
시스템을 사용하는 사용자와 내가 만들어야 하는 시스템 자체를 설명
-
액터 (Actor) : 시스템을 사용하는 사용자
-
유스케이스 (Use case) : 시스템의 행동
-
주제 영역 (Subject) : 만드려고 하는 소프트웨어 시스템
-
기능적 요구사항(Functional 요구사항) : 시스템이 하는 일에 대한 요구사항
- 각 서브시스템에서 모든 데이터를 공유할 수 있도록 구성되어 있다
-
-
비기능적 요구사항(Non-Functional 요구사항) : 기능에 대한 제한사항
- 모든 데이터는 생성자(Constructor)를 통해 초기화된다
- 사용자의 입력이 10분동안 없을 경우 자동 로그아웃을 처리한다
- 영화 좌석 선택 후 결제단계에 들어가면 해당 좌석은 다른사람이 선택할 수 없게 변경한다
- 결제 단계에서 실패하였을 경우 해당 좌석을 다시 선택할 수 있게 변경한다
- Actor
- 영화 예매
- 상영관 선택하기
- 영화 정보 보기
- 영화 상영시간 보기
- 영화 좌석현황 보기
- 결제
- 영화 예매
- Description
- System : 영화 예매 시스템
- Use-case : Report
- Actors : 고객(일반 사용자)
- Data
- 로그인한 고객이 영화를 예매할 수 있도록 각 정보(상영관, 좌석, 영화)를 제공합니다.
- 사용자가 각 정보를 선택하고 결제를 진행할 수 있습니다
- Stimulus
- 좌석 정보가 겹치지 않도록 결제단계에 접근하게 되면 해당 좌석을 선택할 수 없게 변경합니다
- Response
- 결제가 완료될 경우 해당 예매 데이터를 기록하고 사용자에게 예매 정보를 출력합니다
- 결제가 실패하였을 경우 해당 좌석을 선택할 수 있게 변경합니다
클래스 연관관계를 보이면 됨
함수를 호출하는 식으로
- 영화정보 선택 - 영화정보 DB
- 상영관 선택 - 상영관 DB
- 영화 시간 선택 - 상영관 DB 중 시간 Table
- 영화 인원 선택 - 사용자 선택
- 좌석 선택
- 결제
Class Reservation {
public boolean checkReservationData(String);
public boolean checkSeatingAvailability(String);
public Theater getTheaterData();
public User getUserData();
public boolean processPayment(String);
}
Class User {
public string getName();
public string getSex();
public int getAge();
public string getName();
}
Class Movie {
public int getMovieTitle();
public int getMovieTime();
public int getMovieLimitAge();
}
Class Theater {
public string getTheaterInfo();
public hashMap getSeatingInfo();
public int getCapacity();
public hashMap getTheaterMovieMatchingData();
}