こんにちは、やまだたいし( やまだ たいし (@OrotiYamatano) / Twitter )です。
クラス図の書き方を忘れるのでその時のメモです。
目次
クラス図にはいろいろ種類がある
クラス図には色々種類があり、UMLのバージョンも2.0とかなんかある。
よく使われるものはどれだったか忘れてしまったが、自分用にカスタマイズした書き方があるのでココに書いておく。
参考リンク
クラス図
@startuml
@enduml
記述は省略
実現(interface)
インターフェースの書き方は特には無かったはずだが、UMLでIってつけられるのでコレで対応。
interface interface_操縦 飛行機 ..|> interface_操縦:実現
class 飛行機 : interface_操縦 { }
汎化(継承)
図はabstractからの継承。
interfaceの継承も継承と言えるし、普通の継承も継承と言えるが、
まぁ基本普通の継承はc++でも無い限り使わないやろってことでabstractのみ。
abstract 継承元_車 継承先_バス --|> 継承元_車:汎化
class 継承元_車 : 継承元_車 { }
Model(Entity)
まぁデータモデル。
明らかなモデルとかEntityの場合のみこれで書きたい。
ソレ以外は普通のクラスで良さそう。
entity データ
class データ { }
依存と関連とコンポジション
この辺は曖昧なので3つ一緒にドーン
書き方は色々あるよね。
依存は完全に依存。
コンポジションはパーツ的な?
関連はただ参照してるだけ。
ぶっちゃけ全部関連と書き方同じでも良い。
運転手 ..> 車:依存 車 "1" -- "1" 車検:関連 車 "1" *-- "4"タイヤ:コンポジション
class 運転手 { 車 車 = new(); // 運転手が無いと成立しないこと } class 車{ 車検 車検; // 関連のこの書き方は、こうかも知れないし、もしくは片方だけかも タイヤ[] タイヤs = new タイヤ[4]; // 部品であること } class 車検{ 車 車; // 関連のこの書き方は、こうかも知れないし、もしくは片方だけかも }
関連2
関連の図をドッチがドッチに依存してるかわかりやすくした図。
車2 "1" --> "1" 車検2:関連2
class 車2 { 車検2 車検2; // 関連してる }
集約
複数の関係性をまとめたもの。
船 "1" o-- "1..5" 乗組員:集約
class 船 { 乗組員 乗組員 = new 乗組員[5]; // 要素を持ってるがそれぞれの要素は依存してない }
まとめ
気分によってかき分けるぞ。
通常なクラスの関連関係なら別に適当に関連での書き方でいいが、
継承関係だけはわかりやすく書きたい。