PlantUML クラス図: 継承とインターフェース
PlantUMLでクラス図に継承階層、インターフェース、抽象クラスを構築。関係矢印、可視性修飾子、ステレオタイプを解説。
Class Diagrams
詳細な説明
PlantUMLでの継承を持つクラス図
クラス図はシステムの静的構造をドキュメント化します。クラス、その属性とメソッド、クラス間の関係を示します。
基本的なクラス定義
@startuml
class User {
-id: UUID
-email: String
-passwordHash: String
+login(email, password): Boolean
+logout(): void
#validateEmail(email): Boolean
}
@enduml
可視性修飾子
| 記号 | 意味 |
|---|---|
+ |
Public |
- |
Private |
# |
Protected |
~ |
パッケージプライベート |
継承と実装
abstract class Shape {
+area(): double
+perimeter(): double
}
interface Drawable {
+draw(canvas: Canvas): void
}
class Circle extends Shape implements Drawable {
-radius: double
+area(): double
+perimeter(): double
+draw(canvas: Canvas): void
}
<|--矢印は継承(実線、閉じた三角形)を表します。..|>矢印はインターフェース実装(破線、閉じた三角形)を表します。
関係タイプ
| 矢印 | 関係 |
|---|---|
<|-- |
継承(extends) |
..|> |
実装(implements) |
*-- |
コンポジション(強い所有) |
o-- |
集約(弱い所有) |
--> |
関連(使用する) |
..> |
依存(依存する) |
コンポジション vs 集約
class Car {
+start(): void
}
class Engine
class Passenger
Car *-- Engine : コンポジション
Car o-- Passenger : 集約
車はエンジンを所有しています(コンポジション — エンジンは車なしに存在できない)が、乗客を含んでいます(集約 — 乗客は独立して存在します)。
ユースケース
オブジェクト指向システムの設計、DDDプロジェクトのドメインモデルのドキュメント、クラス階層からのAPI設計仕様の作成、コードレビュー用のアーキテクチャドキュメントの生成。