본문 바로가기
Concepts/UML

UML - 클래스 다이어그램 고급 - 템플릿 클래스

by ocwokocw 2021. 2. 10.

- 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다.

- 템플릿(매개변수) 클래스 정의

몇몇 언어는 매개변수 클래스(템플릿)라는 개념이 있다. Java에서 Set의 코드를 보면 아래와 같이 템플릿을 볼 수 있다.

 

public interface Set<E> extends Collection<E> {

 

이렇게 정의된 템플릿 클래스는 아래와 같이 사용할 수 있다.

 

Set<Person> employeeSet = new HashSet<>();

 

UML 에서도 이런 템플릿 매개변수를 지원한다. 템플릿 매개변수 T를 갖는 Set 을 UML로 표현하면 아래와 같다.

Set 오른쪽 위에 점선 박스는 템플릿 매개변수를 나타낸것이다. 여러개를 선언할 수 있으며, 여기서는 매개변수 이름은 T 이고, 타입은 Class 임을 표시하였다.


- 파생(derivation)

Set<Person>과 같이 매개변수 클래스를 사용하는 것을 파생(derivation)이라고 한다. 파생을 표기하는 방법에는 2가지가 있다. 1번재 방법은 간단히 <매개변수 이름::매개변수 값>, ex) Set <T::Employee> 형태로 기술한다. 2번째 방법은 링크를 보강하고 결합 요소의 이름을 바꿀 수 있게 해준다.

위 다이어그램에서 <<bind>> 키워드는 정련 관계(refinement relationship)의 스테레오 타입이다. 결합요소란 EmployeeSet 이며, 결합 매개변수는 <T::Employee> 이다.

댓글