Class Diagram

Posted by yunki kim on May 23, 2021

-클래스, 인터페이스, 이들의 연관 관계를 표현하며 정적 객체 모델링에 사용된다.

 

위그림에서 가장 큰 사각형같은 모양으로 클래스를 표시한다. 3개의 작은 사각형으로 나뉘어져있고 첫번째 사각형에는 클래스의 이름, 두번째에는 속성, 세번째에는 메서드가 들어간다. 클래스, 인터페이스, 유스케이스, 액터를 이를 통해 표현한다

  클래스가 추상 클래스인 경우 이탈릭체 또는 {abstract}라는 표기로 표기한다.

  패키지를 표기할 경우 ::를 사용하거나 자바 프로그래밍 시에 사용하는 방식을 사용한다.ex). java.awt.font, java.awt::font

  각 메서드, 속성의 앞에 특정 기호로 접근 권한을 표기한다(-private, +public, #protected, ~default)

  속성의 맨 뒤에 타입을 기술한다 

  속성의 맨 앞에 /가 있을 경우 다른 값으로 부터 유도되는 값임을 의미한다

  static의 경우 믿줄로 표기한다

  매개변수가 있을 경우 (매개변수 이름 : 타입)으로 표기한다

  리턴 타입이 있으면 메서드 맨 뒤에 표기한다 ex)+ func(a: int) : int

  final method는 메서드 뒤에 {leaf}를 추가한다

  추상 메서드의 경우 메서드 뒤에 {abtract}로 표기한다 

  생략: ...으로 표시

  없음 또는 미정: 빈칸

 

클래스 간의 관계

  상속: 속이 빈 삼각형, 실선

  인터페이스: <<interface>>로 표시, 속이 빈 삼각형, 점선

  의존관계(약한 의존관계): 점선, 열린 삼각형

  association: 실선, 열린 삼각형

 

속성 표기법:

  텍스트 이용:

     데이터 타입, 데이터 자체를 표시하는 객체에 이용

  이름, 타입 명시 

선 이용:

    객체에 이용

   Register가 갖는 Sale의 이름을 직선 아래에 명시

둘 다 이용: 

속성 텍스트 표기법의 완전 형식: 가시성 속성이름:

    타입 [다중성]=초기값 {프로퍼티 문자열}, ex) - func: String [*] = null {readonly}

다중성 표기법:

  다중성: 하나의 객체와 연관을 맺는 객체의 수

    [1]: 1개

    [N]: N개

    [0...*]: 0개 이상

    [0...1]: 0아니면 1

프로퍼티:

  한 요소의 특징을 표시하는 명명된 값이다

  {ordered}: 정렬이 되있다

  {List}: 리스트를 사용

 

노트 기호:

  -UML메모나 주석

  -설명하고자 하는 대상과 노트 기호는 점선으로 연결

  -UML 제약 사항 {...} ex) {size > 0}

  -메서드 몸체: UML오퍼레이션의 구현을 표기

 

UML의 오퍼레이션 형식:

  가시성 이름(매개변수-리스트): 반환타입{프로퍼티-문자열}

클래스 다이어그램에서 메서드를 표현하는 방식

의존관계:

  점선에 열린, 휘어진 화살표로 표시

  클라이언트 요소(클래스, 패키지, 등)가 다른 공급자 요소에 대한 정보(지식)을 가지고 있어서 공급자의 변화가 클라이언트에게도 영향을 주는 관계 -참조를 의미

  클라이언트에서 공급자에게로 점선 화살표를 연결(좁은 의미에서의 의존관계)

  의존관계는 결합도의 한 상태

넓은 범위의 의존관계:

  클래스 다이어그램의 주요 의존관계:

    -공급자 타입(supplier type)을 속성으로 가지는 경우

    -공급자에게 메시지를 보내는 경우(연관)

   

인터페이스 표기법:

 

Composition관계

  -하나의 클래스가 다른 클래스를 필드로 포함하는 관계

  -클래스 내에서 포함할 클래스의 객체를 인스턴스화하고 해당 클래스가 제공하는 기능들을 사용

  aggregation은 마름모가 비어있다

 

association관계

  -특정 클래스가 다른 클래스의 참조 정보 필드를 이용, 다른 클래스의 기능 사용

  -클래스 내부에서 다른 클래스의 인스턴스를 생성하지는 않는다

B가 A에 의존한다

dependency 관계

  -특정 클래스가 다른 클래스의 참조 정보를 일시적으로 사용해 다른 클래스의 기능을 사용

  -한 클래스의 메서드가 다른 클래스이 객체를 인자로 받아 그 메서드를 사용하는 경우가 가장 일반적 

//A-B: composition
//A-C:aggregation
//A-D:association
//A-E:dependency
class A{
 B b;
 C c;
 D d;
 public A(){
 	b = new B();
 }
 public A(C c){
 	this.c = c;
 }
 public void setValue(D d){
 	this.d = d;
 }
 public E isDependency(E e){
 	return e.isDependency();
 }
}