Use Case를 클래스로 분류하기
- Boundary Class
Actor가 Use Case로 접근을 가능하게 하는 클래스, 다른 API로 접근을 가능하게 하는 클래스
ex) Actor: 유저, Use Case: 로그인 -> Boundary Class: 로그인 화면 - Entity Class
오래 지속되는 데이터 (영속적인 데이터), persistent data(프로세스를 종료해도 계속 남아있는 데이터로 데이터베이스나 파일에 저장됨)
ex) 사용자 계좌 정보 - Control Class
여러 차례의 일을 통해 큰 일을 이룰 때 필요한 컨트롤러
ex) 계좌 이체 과정에서 버튼을 눌렀을 때 처리하는 컨트롤러
시퀀스 다이어그램(Sequence Diagram)
시간 순서대로 Object간의 Interaction을 표현한 것,
하나의 시나리오를 위해 등장인물(boundary, entity, control)을 나열하고 등장인물간의 Interaction을 표현한 것
Object는 [객체 이름], [객체 이름:클래스 이름], [:클래스 이름]으로 표현할 수 있다.
m1, m2: (상대 Object에게) m1,m2라는 메소드를 수행하라고 명령
create: 객체 생성
destroy: 객체 삭제
실선, 닫혀있는 화살표: 요청하는 경우
점선, 열려있는 화살표: 응답하는 경우
직사각형 (활성 구간): 메소드의 실행과 끝
X: destroy되서 객체가 삭제되면 X로 표현함
[시퀀스 다이어그램에 해당하는 JAVA 코드]
public class Z{ private W w; public void m2(){ w=null; } } public class Y{ public void m1(T1 a, T2 b){ Z o = new Z(); if(g){ o.m2(); } } }
[도서 대여 시퀀스 다이어그램]
Actor: 사서
Boundary Class: 대여 화면
The Others: 회원 리스트, 책 리스트, 대여, 회원, 책
사서가 대여 화면에서 id, passwd를 입력하고 enter를 클릭한다.
회원 리스트에서 입력된 id를 가진 사용자를 찾는다. (return m)
m객체의 validate메소드로 입력된 password와 저장된 password가 같은지 확인한다. (return ok)
사서가 대여 화면에서 bookTitle를 입력하고 enter를 클릭한다.
책 리스트에서 입력된 bookTitle을 가진 책을 찾는다. (return b)
b객체의 canReverse메소드로 회원(m)이 책을 대여할 수 있는지 확인한다. (return ok)
만약 [ok가 true]이면 new메소드로 m, b 정보가 담긴 대여 객체를 생성한다.
대여 화면에서 “대여 ok”라는 문구를 보여준다.
[친구 상태 확인 시퀀스 다이어그램]
Actor: User
Boundary Class: HomeScreen
Control Class: FriendCheck Controller
Entity Class: Friend, User
User가 홈 버튼을 클릭한다.
FriendCheck 컨트롤러에게 친구 온/오프라인 상태를 요청한다.
Friend 엔티티에게 친구 목록을 요청하고 반환받는다.
User 엔티티에게 친구(들)에 해당하는 사용자(들)의 온/오프라인 상태를 요청하고 반환받는다.
HomeScreen에 정보를 전달해 User가 볼 수 있도록 한다.