PlantUMLはUML図を生成する記法です。
シンプルなテキストファイルで UML が書ける、オープンソースのツール
PlantUML integration – Plugins | JetBrains
便利なのですが生成の配置の制御が大雑把なのが玉に瑕です。
画面に10個、20個もノードを描画すると関係線(この記事で使う造語。関係を表現する線)が交差して複雑になりだします。
@startuml
abstract class AbstractList
abstract AbstractCollection
interface List
interface Collection
class ArrayList {
Object[] elementData
size()
}
enum TimeUnit {
DAYS
HOURS
MINUTES
}
abstract class AbstractList2
abstract AbstractCollection2
interface List2
interface Collection2
List <|-- AbstractList
Collection <|-- AbstractCollection
Collection <|-- List
AbstractList <|-- ArrayList
List2 <|-- AbstractList2
AbstractList2 <|-- AbstractCollection2
AbstractList2 <|-up- Collection2
AbstractCollection <|- AbstractList
ArrayList <|-- ArrayList2
AbstractList <|-- AbstractList2
AbstractCollection <|-- AbstractCollection2
List <|-- List2
Collection <|-- Collection2
@enduml
このためにpackage{}で集約を作ったり矢印のstyleskinparam linetype orthoや-left-|>で方向を制御します。集約は簡単にいい感じになるので定義できるときはできる限り記述しておくべきです。
@startuml
skinparam linetype ortho
package 1st {
abstract class AbstractList
abstract AbstractCollection
interface List
interface Collection
class ArrayList {
Object[] elementData
size()
}
}
enum TimeUnit {
DAYS
HOURS
MINUTES
}
package 2nd {
abstract class AbstractList2
abstract AbstractCollection2
interface List2
interface Collection2
class ArrayList2 {
Object[] elementData
size()
}
}
List <|-- AbstractList
Collection <|-- AbstractCollection
Collection <|-- List
AbstractList <|-- ArrayList
List2 <|-- AbstractList2
AbstractList2 <|-- AbstractCollection2
AbstractList2 <|-up- Collection2
AbstractCollection <|- AbstractList
ArrayList <|-down- ArrayList2
AbstractList <|-down- AbstractList2
AbstractCollection <|-down- AbstractCollection2
List <|-down- List2
Collection <|-down- Collection2
@enduml
見やすくするなる時に重要になるのは連続した関係線があまり曲がらないことです。a -> b-> cとなる時に、a -right-> b, b-right-> c, の様に書くとやりやすいです。

