2020.11.24 고급자바 수업노트 유스케이스다이어그램 , 클래스 다이어그램

유스케이스 다이어그램





-Actors : 시스템을 사용하는 사용자나 외부 시스템을 의미한다. 
-UseCase : 시스템이 제공하는 기능을 의미 
-Association : 유스케이스와 액터간에 연관 관계가 있을 때 사용한다. 
-실선으로 표시하며, 다중도를 적는 것이 가능하다. 
Actor 와 UseCase 간의 관계를 의미한다. 
-DirectedAssociation : 유스케이스와 액터간에 연관관계가 있을 때 사용한다. 종속, 포함 등의 관계를 표시할 수 있습니다. 
유스케이스의 다이어그램에서 관계의 방향성은 시스템 흐름의 가독성을 높이기 위한 의미가 더 크다. 일반적으로 1차 액터에서 useCase 로 방향성을 부여하고, use Case 에서 2차 Actor 로 방향성을 부여하지만 만약 Actor 와 use case 가 서로가 메시지를 보내기 때문에 방향성이 민감한 문제가 되면 방향성 없는 Association 으로 관계를 표현 

-Generalization 은 일종의 상속 .일반적인 요소와 더 구체적인 요소의 관계일 때 사용한다. 
회원가입(외국인 회원가입, 일반회원가입, 4세이상 회원가입) 
일반적인 요소와 더 구체적인 요소의 관계일 때 사용합니다. 

-Dependency : 어떤 유스케이스를 위해 다른 요소의 존재가 요구되어지는 의존적인 관계를 의미합니다. 

-include 어떤 유스케이스를 수행하는데 반드시 수행해야 하는 유스케이스를 나타내기 위해 사용한다. 
a 라는 기능을 쓸때 반드시 b 라는 기능을 거쳐야할때 
( 회원제로 이루어져있는 쇼핑몰은 쇼핑을 위해서 로그인기능이 필요함 ) 


-Extend 
한 유스케이스가 특정 시점에 여러가지 형태로 분류될 경우에 사용합니다. 
결제하기에 각각 카드결제, 현금결제, 휴대폰결제 는 선택적으로 하는것 
어떤 조건에 따라서 들어갈 수도 있고 안들어갈수도 있다. 

배송지입력 같은것 입력을 안하면 기본 배송지로 들어간다. 





*include 랑 extend 화살표 방향이 반대

부 -> 부 
주 -> 부


-System boundary 

시스템과 외부 시스템의 경계를 의미합니다. 
여러가지 기능들이 하나의 안에있는지 ( 일종의 사각형틀 )













클래스 다이어그램 




-Generalization(일반화 관계 ) 
: 보통 상속을 표현 , 일반적인것 : 동물 , 그 안에 속한것 중에 포유류 : 사자 





-Realization(실체화 관계 ) 
: 인터페이스와 그것을 구현한 것과의 관계를 나타낸다. 





위에서 컴퓨터도 인터페이스고 (틀) 태블릿, 노트북, 데스크탑도 인터페이스이다. 인터페이스를 상속할 수있고 그럴때는 점선 화살표이고 클래스가 인터페이스를 상속(휴대용이 태블릿,노트북 상속 ) 할때는 점선 화살표로 표현한다. 


-Association(연관 관계 ) : 
한 객체가 다른 객체를 소유하거나, 참조하여 사용할때
 파라미터로 객체를 받아서 처리하는 관계를 나타낸다. 
단방향양방향이 존재한다. 
단방향 : 클래스간의 관계가 -> 로 구현이 되며 , 화살표의 대상은 자신을 가리키는 클래스의 존재여부를 알지 못한다. 
양방향 : 클래스간의 관계가 "----" 로 구현되며 서로 연관이 되어 있다. 



양방향 ( 좋은 것은 아니다. 무한루프가 될 수 있다, )  

사람 <--> 공인인증서

: 사람클래스가 공인인증서 클래스 사용, 공인인증서가 사람클래스 사용



1) Association(연관 관계 ) - aggregation (집합)

메인클래스가 사게될 시 대상클래스는 같이 삭제가 안됨 ( 라이프 사이클이 다름 ) 분리가 되도 독립적으로 동작함 약한 결합 






2) Association(연관 관계 ) - Composition(합성) 

메인 클래스가 삭제될 시 대상 클래스도 같이 삭제가 됨 ( 라이프 사이클이 동일 ) 분리가 되면 의미가 없어짐 





-Dependency ( 의존관계 ) 
한 객체가 다른 객체를 소유하지는 않지만 다른 객체의 변경에 따라서 같이 변경을 해주어야 한다. 
다른 객체를 파라미터로 받아서 그 메서드를 사용한다.
객체의 메서드 안에서 다른 객체를 생성해서 리턴한다 



위에서 한 연관관계와 의존관계를 자바 이클립스 환경에서 예를 들어줄게 




Association(연관관계) 크게 생각 

참조값이 만들어져야 하는데(new) 어디서 그 참조값이 만들어지느냐에 따라서 연관관계가 집합이나 합성으로 구분된다. 



aggregation (집합) 아래 예시 : a가 삭제되도 b는 삭제되지 않는다. 


사무용컴퓨터 안에 마우스의 참조값이 저장되는 변수를 가지고 있을 때 
마우스 객체를 생성한 곳이 사무용컴퓨터쪽이 아니라 외부에서 생성한 것 ( 사무용컴퓨터가 사라져도 마우스의 객체는 사라지지 않는다 ) 



Composition ( 합성 ) : 메인 클래스가 삭제되면 c 도 같이 삭제되는 관계 


휴대폰테이블과 주소록 테이블에서 주소록 테이블의 객체생성은 휴대폰테이블안에서 한다. 
휴대폰이 사라지면 주소록도 사라질 수 있다. ) 
더 유대관계가 깊다. 영향을 많이 받는다. 



******************************예시 ) 

class A{

B b ;  얘가 나온 순간 ->무조건 Aggregation(집합) 안에 내용을 보고 집합인지 합성인지 결정 
C c ; A와 c 도 연관관계 


//생성자
A(B b){
    this.b = b; 
}

    //c는 여기서 객체가 생성이 되기 때문에 A가 삭제가 되면 참조값이 없어진다. 
    c = new C(); //멤버변수 




}

class B {

    메서드명(){
        C c = new C();  지역변수
        사용범위가 메서드 안에서만 사용되기 때문에 그 지역이 끝나면 사라지게 되는 것 : 
        Dependency(의존관계)  
    }


}

class C{
}


class D{

    B b = new B () ; 
    A a = new A (b);  //a 부분이 삭제가 되면, a = null 같이) 하지만 b는 남아있다. (주가되는 객체가 삭제가 되도 this.b 에서만 사용하던거니까 b는 사라지지 않고 있는데 이것이 aggregation )

}







인터페이스 구현 ( 클래스 다이어그램에서  ) 





realization 화살표로 선 만든다.




만약 구현한클래스에다 더 많은 걸 쓸 거 같을때 



1.클래스를 만든다.
 
2. 오른쪽에서 General 에서 Stereotype 에서 interface 를 입력해준다. 
밑에 클래스이름위에 <<interface>> 라고 써진다. 









3. realization 으로 화살표 연결해준다. 
 



유스케이스 명세서 ==> 유스케이스 내부에 대한 기술을 나타낸다. 


#유스케이스명 :  회원가입 
#엑터명       :  고객(비회원) 
#유스케이스개요 및 설명 : 고객이 비디오 샵 관리 시스템을 사용하기 위해
회원 가입을 하는 유스케이스 
#사전 조건 : 회원가입이 되어 있지 않은 상태이어야 된다.  
#이벤트 흐름 

-정상흐름 
1. 기존 가입회원인지 전화번호를 검색하여 확인한다. (시스템이 처리 ) 
2. 회원 가입 요청을 한다. (액터)
3. 회원 약관을 보여준다.
4. 회원 약관에 동의한다(액터) 
5. 회원 정보입력 항목을 보여 준다. (시스템) 
6. 회원 정보 (이름, 전화번호 , 주소, 등등...) 를 입력하고 등록 요청을 한다. ( 액터 )
7. 입력된 정보를 확인한다. (시스템) 
8. 회원 정보를 저장하고 등록을 완료한다. (시스템) 

- 선택흐름 (정상흐름중에 문제가 발생할 상황을 쓰는것이다 ) 
1-1. 기존에 가입된 회원이면 '이미 가입된 회원입니다. 라는 메시지를 보여준다.
4-1. 회원 약관에 동의하지 않으면 회원 가입 기능 오류 메시지를 출력하고 동의를 요청한다. 
7-1. 회원 정보 항목 중 입력하지 않은 항목이 있으면 오류 메시지를 출력하고 재입력을 요청한다. 

7-2. 전화번호 형식에 맞지 않으면 메시지를 출력하고 재입력을 요청한다. 







댓글