-
but, "Note: draw.io for Confluence Server and data center do not support PlantUML."
-
Jira
github action: https://github.com/grassedge/generate-plantuml-action
-
파일 저장시 짤릴 경우
-DPLANTUML_LIMIT_SIZE=8192
-
일반화generalization:
--|>
-
실체화Realization:
..|>
-
의존dependency:
..>
-
연관association:
--
-
직접 연관directed association:
-→
-
집합aggregation, 집합 연관:
o--
,o-→
-
합성composition, 복합 연관:
*--
,*-→
-
일반화, 상속 구조
-
"is a kine of" 관계
-
overriding되면 서브 클래스에 해당 함수/필드를 정의
@startuml hide empty field hide empty method class User { +isHead(): Boolean } class HeadUser { +isHead(): Boolean } class AdminUser User <|-- HeadUser User <|-- AdminUser @enduml |
class User {
fun isHead(): Boolean = false
}
class HeadUser: User() {
override fun isHead(): Boolean = true
}
class AdminUser: User() |
-
interface에 있는 명세를 오버라이딩하여 구현하는 것
-
"can do this" 관계
-
두 가지 표현법이 존재함
@startuml hide empty field hide empty method class User interface Changeable { +changeNickName(nickName: String): Unit } class HeadUser { +changeNickName(nickName: String): Unit } User <|-- HeadUser Changeable <|.. HeadUser @enduml
@startuml hide empty field hide empty method class User circle Changeable class HeadUser { +changeNickName(nickName: String): Unit } User <|-- HeadUser Changeable -- HeadUser @enduml
-
클래스간 참조가 일어나는 것 중 하나
-
메서드 내에서 대상 클래스의 객체를 생성하거나 사용, 리턴 받아 사용하는 것을 말함
-
이 참조는 해당 클래스와의 관계를 계속 유지하지 않음
@startuml hide empty field hide empty method class User interface Changeable { +changeNickName(nickName: String): Unit } class HeadUser { +changeNickName(nickName: String): Unit +<b>createSchedule(): Schedule +<b>useSchedule(schedule: Schedule): Unit } class Schedule User <|-- HeadUser Changeable <|.. HeadUser HeadUser .[dashed,thickness=2].> Schedule @enduml |
class HeadUser: User, Changeable {
override fun changeNickName(nickName: String): Unit { ... }
fun createSchedule(): Schedule {
return Schedule() // 객체 생성 및 반환
}
fun useSchedule(schedule: Schedule): Unit {
// 객체를 매개변수로 받아서 사용
}
} |
-
일반적인 연관은 실선으로 연결
-
Directed Association은 실선 후 끝에 화살표 추가
-
Composition은 전체와 부분이 강력한 연관 관계를 맺으며, 전체와 부분이 같은 생명 주기를 갖음
-
독립적인 객체가 서로 상호작용하기 위해 맴버로 참조해야할 경우
-
ex) Car와 Engine의 관계
-
집합
-
Shared Aggregation
-
Aggregation은 전체와 부분의 연관 관계를 맺지만, 그러나 동일한 생명 주기를 갖지는 않음
-
다른 어떤 것으로부터 빌린 객체가 존재. 전체가 죽어도 빌린 객체(부분)은 살 수 있음
-
ex) Person, Address 관계
-
-
전체가 부분을 포함(has-a)하는 경우. 약한 관계
@startuml hide empty field hide empty method class Person class Address Person o-- Address @enduml |
class Person {
private val address: Address
constructor(address: Address) {
this.address = address
}
} |
-
Composite Aggregation 이라고도 함
-
강한 집합을 의미
-
전체와 부분이 같은 생명주기를 갖음
-
객체를 소유하고 그 생명주기에 대한 책임을 갖는 경우. 전체가 죽으면 부분도 죽음
-
ex) Car-Engine, House-Room
@startuml hide empty field hide empty method class Person class Brain class Heart class Legs Person *-- Brain Person *-- Heart Person *-- Legs @enduml |
class Person {
private val brain: Brain = Brain()
private val heart: Heart = Heart()
private val legs: Legs = Legs()
} |
@startuml box "actor1" #lightblue participant A participant B end box participant C A -> B group group1 B -> C C --> B end group @enduml
@startuml box "actor1" #lightblue participant A participant B end box participant C A -> B group #transparent group1 B -> C C --> B end group @enduml
Note
|
2022-02-10, 새로운 스타일 적용되면서 기본 투명으로 적용된 것 같음. ref |
@startuml A -> B: <:lock:> 잠금 @enduml
@startuml skinparam rectangle<<desc>> { backgroundColor Transparent borderColor Transparent titleFontColor Red stereotypeFontColor Transparent } folder folder2 { folder folder3 [ text bla bla ] artifact art2 [ more text ] rectangle f2<<desc>> [ Here you can have some explanation with ==== --Markdown-- //formatting// ~~elements~~ ] folder3 -[hidden]- f2 } @enduml
@startuml folder folder2 { folder folder3 [ text bla bla ] artifact art2 [ more text ] label "간략한 내용을 남겨높는다" as simple_label folder3 -[hidden]down- simple_label } @enduml