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設計仕様の作成、コードレビュー用のアーキテクチャドキュメントの生成。

試してみる — PlantUML Editor

フルツールを開く