クラス図 (class diagram)

クラス図はクラス間の関係を表現することで、システムの静的な構造を表します。

クラスの分析手順

  1. クラスの洗い出し
  2. 関連の探索
  3. 操作の洗い出し
  4. 属性の洗い出し

属性 (attribute)

属性とはクラスの構造的な特性であり、クラスのフィールドまたはプロパティに相当します。

UMLの構文

可視性 名前: タイプ 多重度 =デフォルト値 { プロパティ文字列 }

操作 (operation)

操作とはクラスが実行するアクションのことであり、クラスのメソッドに相当します。

  • 操作 … 手続きの宣言
  • メソッド … 手続きの本体

UMLの構文

可視性 名前( パラメータリスト ) : 戻り値のタイプ{ プロパティ文字列 }

関連 (association)

関連と属性の違い

属性はクラスそのもの自体の特徴であり、関連はクラスの本質的ではない特徴です。このいずれとなるかはアプリケーションの仕様によって決定されます。

一般的に重要なクラスに対しては関連で表し、そうではないものは属性を使用します。

集約とコンポジション

コンポジション (composition) とは、全体側と部分側のクラスのオブジェクトのライフサイクルが同一の集約 (aggregation) です。

  集約 コンポジション
クラスのメンバ オブジェクトのポインタまたは参照 オブジェクト
ライフサイクル

オブジェクトが消滅しても、所有しているオブジェクトは消滅しない。

(そもそもオブジェクト自体を所有していない)

オブジェクトが消滅するときに、所有しているオブジェクトも消滅する。

多重度 (multiplicity)

多重度は2つのクラス間の関連において、接続する可能性のあるオブジェクトの数を表します。

下図ではClass1に対してClass2は1以上、逆にClass2に対してClass1は1つのオブジェクトが関連する可能性があることを意味します。

多重度の表記
表記 意味
0 0
1 1
0..* または * 0以上
1..* 1以上
1..3 1~3

汎化 (generalization)

汎化とは複数のクラスの共通概念を抽出して、独立したクラスを作成することです。これはソフトウェア的には継承 (inheritance) です。

汎化と特化

  • 汎化 (generalization) … 基底クラスを作成すること
  • 特化 (specialization) … 派生クラスを作成すること
関連情報