> For the complete documentation index, see [llms.txt](https://heunnajo.gitbook.io/spring/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://heunnajo.gitbook.io/spring/1/undefined.md).

# 비즈니스 요구사항과 설계

build.gradle을 수정하면 코끼리 새로고침 또는 우측에 Gradle 탭에서 새로고침 해줘야한다!

1. 회원

* 회원 가입하고 조회할 수 있다.
* 회원은 일반과 VIP 두 가지 등급이 있다.
* 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다.(**미확정**)

2\. 주문과 할인 정책

* 회원은 상품을 주문할 수 있다.
* 회원 등급에 따라 할인 정책을 적용할 수 있다.
* 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라.(나중에 변경 될 수 있다.)
* 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다. 최악의 경우 할인을 적용하지 않을 수도 있다.(**미확정**)

요구사항을 보면 회원 데이터, 할인 정책 같은 부분은 현재 결정하기 어려운 부분이다. 그렇다고 이런 정책이 결정될 때까지 개발을 무기한 기다릴 수 없다.\
\=> 인터페이스를 만들고 구현체를 만들어서 언제든지 갈아끼울 수 있도록 설계하면 된다!

회원 **도메인 협력관계**\
기획자들도 볼 수 있는 다이어그램.

![](blob:https://app.gitbook.com/8f09b492-135a-4ffe-9b67-c8e8b995eac1)

회원 **클래스 다이어그램**\
위의 회원 도메인 협력관계 다이어그램을 개발자가 구체화 시켜서 클래스로 표현한 그림이다.

![회원 클래스 다이어그램](blob:https://app.gitbook.com/4b963af6-fbe6-4525-a35f-162ebd39e7cf)

회원 **객체 다이어그램**(회원 서비스: MemberServiceImpl)\
위의 클래스다이어그램에서 동적으로 결정되는 사항 즉, 서버가 뜰 때 결정되는 사항을 그림으로 표현한다. 그래서 아래의 객체 다이어그램은 **실제 서버에 올라왔을 때 객체간의 참조관계를 확인**할 수 있다.

![회원 객체 다이어그램](blob:https://app.gitbook.com/dd1937c0-6e67-4e86-a9f2-8fbdf548d6e7)
