UML - 클래스 다이어그램

런던행·2021년 3월 28일
0

UML

목록 보기
3/4

UML 클래스 다이어그램을 사용하면 클래스 내부의 정적인 내용이나 클래스 사이의 관계를 표기할 수 있다.

기본 개념

클래스

그림 3.1은 클래스 다이어그램에서 가장 간단한 형태이다. Dialer라는 클래스를 단순한 사각형으로 그렷다.

클래스 아이콘을 여러 구획으로 나눌 수도 있다.
첫째 구획에는 클래스의 이름이,
둘째 구획에는 클래스의 변수가,
셋째 구획에는 클래스이 메서드가 들어간다.

"-" 대시는 private
"#" 해시는 protected
"+" 더하기는 public

이렇게 세부사항을 상세가 적는 것이 유용할 때도 있지만, 자주 이렇게 해서는 안된다. UML 다이어그램은 변수가 함수를 선언하는 장소가 아니다.

연관

클래스 사이의 연관은 대개 다른 객체의 참조를 가지는 인스턴스 변수를 의미한다. 그림 3.3을 보면 Phone과 Button 사이에 연관이 하나 있는데, 화살표 방향으로 미루어보아 Phone이 Button의 참조를 가짐을 알 수 있다. 화살촉 근처의 이름은 인스턴스 변수의 이름이다. 그리고 화살촉 근처의 숫자는 이 인스턴스 변수가 참조를 몇 개나 가질지 알려준다.

그림 3.4에서는 개수에 제한이 없는 경우를 볼 수 있다.

상속

UML에서는 화살촉을 그릴 때 매우 주의해야 한다. 그림 3.5를 보면 그 이유를 알 수 있다. Employee를 가리키는 작은 화살촉은 상속을 나타낸다. 화살촉을 조심해서 그리지 않으면 화살촉이 상속을 표현하는지 연관을 표현하는지 구분하기 힘들 수 있다. 이 둘을 더 명확하게 구분하려고 나는 흔히 상속관계를 세로로, 연관 관계는 가로로 그린다.

UML에서 자바 클래스와 자바 인터페이스 사이의 상속 관계를 나타내기 위한 특별한 표기법도 있다. 이 관계는 그림 3.6처럼 점선과 화살표로 그린다.

그림 3.7에는 같은 정보를 전달하는 다른 방법이 나온다.

세부사항

UML 클래스 다이어그램에는 상당한 수의 세부사항과 장식물을 덧붙일 수 있지만, 대부분 더붙이지 않는 편이 낫다. 하지만 이것들이 도움이 되는 경우도 있긴하다.

클래스 스테레오타입

클래스 스테레오타입은 보통 클래스의 이름 위에 놓인 길러멧(<<>>) 사이에 적는다. 그림 3.8의 "<<"interface">> 표기가 바로 클래스 스트레오타입이다. 자바 프로그래머가 사용할 만한 두가지 스테레오타입이 interface, utilty다.

추상클래스

UML에서 추상클래스나 추상 메서드를 표기하는 방법은 두 가지다. 이름을 이탤릭체로 적거나, {abstract} 프로퍼티를 사용하는 것이다.

프로퍼티

{abstract} 같은 프로퍼티는 어떤 클래스에도 붙일 수 있다. 프로퍼티는 보통 클래스에 속하지 않는 추가 정보를 나타낸다. 여러분은 자신만의 프로퍼티를 만들어 쓸 수 있다.

다수성

클래스 멤버변수로 클래스 타입이 같은 종류을 가지는 경우 다수성 표현식을 적어서 표현한다.

연관 스테레오

연관에 스테레오타입을 붙여서 의미를 바꿀 수 있다. 그림 3.20에 내가 자주 사용하는 스테레오 타입이 있다.

내부 클래스

익명 내부 클래스

연관 클래스

다수성을 표기한 연관을 보면 연관의 원본이 연관 대상의 여러 인스턴스와 연결된다는 것을 알 수 있다. 다이어그램만 보고 어떤 종류의 컨테이너 클래스가 사용되는지 알아낼 수 없지만 그림 3.23처럼 연관 클래스를 사용하면 이 정보도 나타낼 수 있다.

레퍼런스 : UML 실전에서는 이것만 쓴다. http://www.yes24.com/Product/Goods/4492519

profile
unit test, tdd, bdd, laravel, django, android native, vuejs, react, embedded linux, typescript

0개의 댓글