クラス図

クラス図は最も一般的な UML ダイアグラムのタイプで、クラス、属性、操作、リレーションシップを表示してシステムの静的構造をモデル化するために使用されます。

クラスの作成

クラスツールの使用

A または C を押してクラスツールをアクティブにし、キャンバスの任意の場所をクリックして新しいクラスボックスを配置します。

クラスツール選択時の空のキャンバス

クラスボックスの構造

UML クラスボックスは3つのコンパートメントで構成されます:

  1. 名前コンパートメント - クラス名とオプションのステレオタイプを含む
  2. 属性コンパートメント - クラスのプロパティ/フィールドを列挙
  3. 操作コンパートメント - クラスのメソッド/関数を列挙

クラスボックスの構造

クラスプロパティ

クラスを選択してインスペクタパネルでプロパティを設定します:

名前

クラス名は上部のコンパートメントに太字で表示されます。慣例として PascalCase を使用します(例:CustomerOrder)。

ステレオタイプ

クラス名の上にギュメで表示されるオプションの分類子:

  • <<interface>> - インターフェース定義用
  • <<abstract>> - 抽象クラス用
  • <<enumeration>> - 列挙型用
  • <<entity>> - ドメインエンティティ用
  • カスタムステレオタイプもサポート

抽象

切り替えるとクラス名がイタリック体で表示され、抽象クラスであることを示します。

クラスインスペクタ

属性

属性はクラスのデータ/プロパティを表します。

属性の追加

  1. クラスを選択
  2. インスペクタで属性セクションを見つける
  3. + ボタンをクリックして新しい属性を追加
  4. 属性の詳細を入力

属性の構文

属性は以下の形式に従います: 可視性 名前 : 型

可視性修飾子:

シンボル意味説明
+Publicどこからでもアクセス可能
-Privateクラス内からのみアクセス可能
#Protectedクラスとサブクラス内でアクセス可能
~Package同じパッケージ内でアクセス可能

例:

  • -id: Int - プライベートな整数 ID
  • +name: String - パブリックな文字列名
  • #createdAt: Date - プロテクテッドな日付フィールド
  • ~cache: Map<String, Any> - パッケージプライベートなキャッシュ

操作

操作はクラスの振る舞い/メソッドを表します。

操作の追加

  1. クラスを選択
  2. インスペクタで操作セクションを見つける
  3. + ボタンをクリックして新しい操作を追加
  4. 操作の詳細を入力

操作の構文

操作は以下の形式に従います: 可視性 名前(パラメータ) : 戻り値の型

例:

  • +getName(): String - String を返すパブリックなゲッター
  • -validate(input: String): Boolean - プライベートなバリデーションメソッド
  • +process(data: Data, options: Options): Result - 複数パラメータを持つメソッド
  • +save(): void - 戻り値のないメソッド

リレーションシップ

R を押してリレーションシップツールをアクティブにし、一方のクラスから別のクラスへドラッグして接続を作成します。

リレーションシップタイプ

タイプ線のスタイル矢印用途
関連実線開いた矢印一般的なリレーションシップ
依存関係破線開いた矢印「使用する」リレーションシップ
継承実線白抜き三角「is-a」リレーションシップ(extends)
実現破線白抜き三角インターフェース実装
集約実線白抜きダイヤモンド「has-a」(弱い所有)
コンポジション実線塗りつぶしダイヤモンド「has-a」(強い所有)

クラスのリレーションシップ

リレーションシップの作成

  1. R を押してリレーションシップツールをアクティブにする
  2. ソースクラスをクリック
  3. ターゲットクラスまでドラッグ
  4. リリースして接続を作成
  5. インスペクタでリレーションシップタイプと矢印を変更

リレーションシップラベル

リレーションシップラインをダブルクリックしてラベルを追加:

  • 名前 - リレーションシップを説明(例:「manages」「contains」)
  • 多重度 - インスタンス数を示す(例:「1」「0..*」「1..n」)
  • ロール名 - 各端でロールを説明するラベル

ベストプラクティス

  1. シンプルに保つ - すべてをモデル化しようとせず、重要なクラスに焦点を当てる
  2. ステレオタイプを使用 - インターフェースと抽象クラスを明確にマーク
  3. 重要なリレーションシップを表示 - すべての関連を表示する必要はない
  4. 一貫した命名 - クラスには PascalCase、メンバーには camelCase
  5. 関連するクラスをグループ化 - 論理的なグルーピングを示すために視覚的な近接性を使用