クラス図はクラス間の関係を表現することで、システムの静的な構造を表します。
属性とはクラスの構造的な特性であり、クラスのフィールドまたはプロパティに相当します。
可視性 名前: タイプ 多重度 =デフォルト値 { プロパティ文字列 }
操作とはクラスが実行するアクションのことであり、クラスのメソッドに相当します。
可視性 名前( パラメータリスト ) : 戻り値のタイプ{ プロパティ文字列 }
属性はクラスそのもの自体の特徴であり、関連はクラスの本質的ではない特徴です。このいずれとなるかはアプリケーションの仕様によって決定されます。
一般的に重要なクラスに対しては関連で表し、そうではないものは属性を使用します。
コンポジション (composition) とは、全体側と部分側のクラスのオブジェクトのライフサイクルが同一の集約 (aggregation) です。
集約 | コンポジション | |
---|---|---|
図 | ||
クラスのメンバ | オブジェクトのポインタまたは参照 | オブジェクト |
ライフサイクル |
オブジェクトが消滅しても、所有しているオブジェクトは消滅しない。 (そもそもオブジェクト自体を所有していない) |
オブジェクトが消滅するときに、所有しているオブジェクトも消滅する。 |
多重度は2つのクラス間の関連において、接続する可能性のあるオブジェクトの数を表します。
下図ではClass1に対してClass2は1以上、逆にClass2に対してClass1は1つのオブジェクトが関連する可能性があることを意味します。
表記 | 意味 |
---|---|
0 | 0 |
1 | 1 |
0..* または * | 0以上 |
1..* | 1以上 |
1..3 | 1~3 |
汎化とは複数のクラスの共通概念を抽出して、独立したクラスを作成することです。これはソフトウェア的には継承 (inheritance) です。