본문 바로가기
카테고리 없음

[UML 관계] 구성요소 간의 관계 표기법

by 별프로 2021. 1. 30.
반응형

I. 구성요소간의 관계를 알려주는 UML 관계의 개요

. UML 관계(Unified Modeling Language Relationship)의 정의

- UML 구성요소간의 연관관계, 의존관계, 일반화, 실체화 관계를 나타내기 위한 UML의 관계 표기법

 

. UML 관계의 특징

특징

설명

의미표현

단순 표기법이 아닌, 사용하는 형식과 표기에 의미 내포

의사소통도구

개발자 및 사용자 간의 의사소통 수단으로 활용

범용성

개발 규모, 개발 프로세스, 언어에 관계없이 적용 가능

 

II. UML 관계의 구성도 및 구성요소

. UML 관계의 구성도

- UML 3요소 중 사물(Things)과 다이어그램(Diagrams) 간의 의미 있는 연결을 지원하는 구성요소

 

. UML 관계의 구성요소

대분류

소분류

표기법

설 명

연관관계

(Association)

연관관계

(Association)

-방향성 없는 실선 표기

-상호 인지

직접연관관계

(Direct)

-참조하는 측만 인지

- HorsePerson을인지

집합연관관계

(Aggregation)

-전체 소멸 시 부분은 사용가능

합성연관관계

(Composition)

-전체 소멸 시 부분도 소멸

의존관계

(Dependency)

확장의존관계

(Extend)

<<Extend>>

-클래스 변화가 타클래스에 영향

-참조를 유지하지 않음

-선택적 확장하는 관계

포함의존관계

(Include)

<<Include>>

-클래스 변화가 타클래스에 영향

-참조를 유지하지 않음

-반드시 포함하는 관계

일반화관계

(Generalization)

일반화관계

(Generalization)

-자식이 부모의 속성 물려받음

- 클래스 다이어그램의 상속관계

실체화관계

(Realization)

실체화관계

(Realization)

 

-인터페이스와 구현클래스 관계

-부모의 불완전 행동을 자식이 구현

III. 연관관계와 의존관계의 비교

연관(Association)

의존(Dependency)

개념도

PlayerAsset을 영속적으로 사용

PlayerDie를 일시적으로 사용

설명

- 어느 한 객체가 다른 객체와 연결

- 집합 연관 관계, 복합 연관 관계

- 한 사물의 명세서가 바뀌면 그것을 사용하는

다른 사물에게 영향 (반대 성립 하지 않음)

구현

예시

public class Asset { … }

 

public class Player {

private Asset asset;

public Player(Asset purchasedAsset) {

this.asset = purchasedAsset;

}

}

 

public class Die {

public void roll() { … }

}

 

Public class Player{

Public void takeTurn(Die die) {

die.roll();

}

}

 

IV. 일반화와 실체화

구분

일반화(Generalization)

실체화(Realization)

개념도

기호

개념

- Is-a 또는 kind-of 의 관계

- 상속 개념을 사용하여 공통구조 공유

- 클래스 관계의 구조화

- 일반화된 사물(Super)과 특수화된 사물(Sub)의 관계

- 인터페이스의 불완전한 행위(메소드)를 구현

- 두 가지 유형으로 분류

1. 인터페이스 클래스처럼 표기 후 스테레오타입에<<interface>>를 추가. 점선과 비어 있는 삼각형으로 표시

2. 인터페이스를 원으로 표기하고,인터페이스 이름을 명시함.인터페이스와 클래스 관계는 실선 표기

 

V. 집합연관관계와 합성연관관계의 비교

집합연관관계(Aggregation)

합성연관관계(Composition)

개념도

전체 소멸 시 부분 존재

Player가 소멸해도 Asset은 존재

전체 소멸 시 부분 소멸

Player가 소멸하면 Piece도 소멸

설명

- 하나의 객체에 여러 개의 독립 객체 구성

- 구성요소를 이야기함

- 집합연관관계보다 강한 관계로 구성

- 구성요소가 영구적인 구성

구현

예시

public class Asset { … }

public class Player {

private List assets = new ArrayList();

public void addAsset(Asset asset) {

 assets.add(asset);

}

}

Public class Piece { … }

Public class Player{

Private Piece piece = new Piece();

// piece인스턴스의 생명주기를 Player가 관리

}

 

반응형

댓글