다이어그램으로 클래스를 표현해서 클래스간의 관계와 내용명세를 묘사한 것
시간에 따라 변하지 않는 정적인 시스템 구조를 표현 한다
표준화된 모델링 표기 체계
클래스를 구현하기 전에 설계하는 단계에서 사용 한다
@startuml과 @enduml 사이에 다이그램 내용을 입력한다
@startuml
@enduml
접근제어자는 기호를 활용해 나타낸다
abstract class Bar{
+ static String name;
# int x;
~ int y;
- void method(String string);
}
제목은 title 키워드를 활용한다 title +" "
title Class Diagram Title
메모는 note ~ end note 사이에 적는다
note bottom of Bar
void method() {
return string;
}
end note
note bottom of Foo
Foo는 Bar가 Aggregation 한다.
Foo는 Qoo가 Composition 한다
end note
abstract class Bar{
+ static String name;
Foo foo;
# int x;
~ int y;
- void method(String string);
}
class Qoo{
Foo foo;
}
class Foo{
int x;
void methodA();
}
클래스들의 관계는 작성한 클래스 아래쪽에 화살표로 표현한다.
Foo -left|> IFoo
Bar -o Foo
Qoo -right* Foo
Bar -o Foo (어그리게이션 관계)
Qoo -* Foo
- 위에 관계를 표시해주는 화살표에 left,right등을 써넣어 클래스 위치를 설정할 수 있다
@startuml
interface IFoo{
+ void method(int x, int y);
}
abstract class Bar{
+ static String name;
Foo foo;
# int x;
~ int y;
- void method(String string);
}
class Qoo{
Foo foo;
}
class Foo{
int x;
void methodA();
}
Foo -left|> IFoo
Bar -o Foo
Qoo -right* Foo
title Class Diagram Title
note bottom of Bar
void method() {
return string;
}
end note
note bottom of Foo
Foo는 Bar가 Aggregation 한다.
Foo는 Qoo가 Composition 한다
end note
@enduml
Aggregation과 Composition의 공통점은, 둘 모두 멤버 변수로 클래스 객체를 사용한다는 점이고. 다른점은, Aggregation의 경우 외부에서 객체가 생성된 후에 참조를 전달받고, Composition의 경우 내부에서 객체가 생성된다는 점이다
A가 B를 Composition하는 관계가 성립하려면, A 객체 내부에서 B 객체가 생성(new 키워드 사용)되고, A 객체가 사라질 때 B 객체도 같이 사라져야 한다.
패키지나 클래스를 우클릭하면 Diagram 클릭하면 자동으로 UML 생성할 수 있다