
クラス図の紹介
クラス図システム内のオブジェクトやクラス、およびそれらの間の関係を記述することで、対象システムの概要を提供する。ドメイン固有のデータ構造のモデリングから、対象システムの詳細設計まで、多様な用途に利用できる。
主な利点:
-
ドメインモデリング:ビジネスエンティティとその関係を把握する
-
システム設計:クラスレベルでのソフトウェアアーキテクチャを定義する
-
コード生成:モデル要素から実装コードを生成する
-
ドキュメント作成:保守可能な技術文書を作成する
-
モデルの再利用:相互作用図を介してクラスモデルを共有し、動的振る舞いのモデリングを行う
-
自動生成:ユーザー定義の範囲で、フォーム図を使用して図を自動的に生成する
基本的な表記法と要素
基本的な構造的要素
クラス

定義:クラスは、同一の特徴、制約、意味を持つオブジェクトの集合を記述する。クラスは、属性と操作を特徴とする分類器の一種である。
主なプロパティ:
| プロパティ | 説明 |
|---|---|
| 名前 | クラスの名前 |
| 親 | クラスを所有するモデル要素 |
| 可視性 | 名前空間の表示およびアクセス権を決定する |
| 抽象 | trueの場合、クラスは直接インスタンス化できない |
| リーフ | trueの場合、クラスはさらに特殊化できない |
| ルート | クラスに祖先が存在しないことを示す |
| アクティブ | オブジェクトがアクティブ(並行)かパッシブかを決定する |
| 属性 | クラスが所有する直接のプロパティ |
| 操作 | 呼び出しパラメータを指定する行動的機能 |
| テンプレートパラメータ | テンプレートバインディングのための形式パラメータ |
クラス <>

定義: 列挙リテラルのコンテナとして機能するクラスの一種。たとえば、列挙 色 は列挙リテラルを保持する 赤, 緑、および 青.
クラス <>

定義: インターフェースは、一貫した公開機能および義務の宣言を表す分類子の一種である。インターフェースは契約を指定する。インターフェースを実現する分類子の任意のインスタンスは、その契約を履行しなければならない。
主な特徴:
-
インターフェースは宣言であり、インスタンス化できない
-
インスタンス化可能な分類子のインスタンスによって実装される
-
分類子は複数のインターフェースを実装できる
-
制約やプロトコル仕様を含む可能性がある
クラス <>

定義: 事前に定義されたデータ型を表すクラスの一種。たとえば、booleanクラス(型)である。
注記

定義: 注記(コメント)は、要素にさまざまなコメントを付ける機能を提供する。コメントには意味的な意味は持たないが、モデルャーにとって有用な情報を含む可能性がある。
制約

定義: 要素の意味の一部を宣言する目的で、自然言語のテキストまたは機械可読言語で表現された条件または制限。
プロパティ:
| プロパティ | 説明 |
|---|---|
| 名前 | 制約のオプション名 |
| 式 | 満足のためには真でなければならない条件 |
| ドキュメント | 制約の説明 |
協調

定義: 協調は分類子の一種として表現され、インスタンス(その役割)が実行する協調するエンティティの集合、および参加するインスタンス間の通信経路を定義する接続子の集合を定義する。
モデル
定義: すべてのモデルまたはその主要な部分を含むトップレベルのパッケージ。
NARY
定義: 複数の分類器を同時に接続するn-ary関連を表す。
関係の種類
関連関係
関連(集約なし)

定義: 関連は、型付きインスタンスの間に発生しうる意味的な関係を指定する。少なくとも2つの端を持ち、それぞれがプロパティで表され、各端はその端の型に接続されている。
主要なプロパティ:
| プロパティ | 説明 |
|---|---|
| 名前 | 関連の名前 |
| 可視性 | 名前空間内の表示およびアクセス可能性 |
| 関連の端(From/To) | 関連の元と先 |
| 抽象 | trueの場合、関連は不完全であり、インスタンス化できない |
| リーフ | trueの場合、関連はさらに特殊化できない |
| 導出 | 他のモデル要素から導出されたものかどうかを指定する |
集約(共有関連)

定義: 端の一つがマークされた種類の関連共有共有型の集約として、部分が独立して存在できる全体-部分関係を持つ集約を意味する。
合成(複合関連)

定義: 部分インスタンスが同時に最大一つの複合体にのみ含まれる強固な集約形式。複合体が削除されると、通常そのすべての部分も一緒に削除される。
主な特徴:
-
部分は複数の複合体に同時に属することができない
-
複合体を削除すると、通常その部分も削除される
-
部分は複合体の削除前に削除できる
-
合成は伝播削除を伴う有向非巡回グラフを形成する可能性がある
関連クラス

定義: 関連とクラスの両方のプロパティを持つモデル要素。関連クラスは、クラスのプロパティを持つ関連として、または関連のプロパティを持つクラスとして見ることができる。
関連リソース: 関連クラスの描画
依存関係
依存

定義: 1つまたは複数のモデル要素が、その仕様または実装のために他のモデル要素を必要とする関係を示す。
プロパティ:
| プロパティ | 説明 |
|---|---|
| 供給者 | 関係内の独立した要素 |
| クライアント | 関係内の依存要素 |
| 可視性 | 名前空間の外観とアクセス可能性 |
| マッピング | 関係を示すオプションの式 |
抽象化

定義: 同じ概念を異なる抽象化レベルまたは異なる視点から表現する2つの要素または要素の集合の間の関係。
実現

定義: 2つのモデル要素の集合の間の特殊化された抽象化関係であり、一方は仕様(供給者)を表し、他方はその仕様の実装(クライアント)を表す。
ユースケース: ステップワイズな精緻化、最適化、変換、テンプレート、モデル合成、フレームワークの構成
一般化

定義: より一般的な分類子とより具体的な分類子の間の分類学的関係。より具体的な分類子の各インスタンスは、間接的により一般的な分類子のインスタンスでもある。
キーとなるプロパティ:
| プロパティ | 説明 |
|---|---|
| 置換可能 | 真の場合、具体的な分類子は実行時に一般的な分類子に置き換え可能 |
使用法

定義: 1つの要素が、その完全な実装または動作のために、他の要素(または要素の集合)を必要とする関係。
アクセス

定義: インポートする名前空間とパッケージ可能な要素の間の有向関係として定義される要素のインポート。パッケージ可能な要素の名前またはエイリアスが、インポートする名前空間の名前空間に追加される。
表記法:
-
<<import>>パブリック可視性のキーワード -
<<アクセス>>プライベート可視性のキーワード
インポート

定義: パッケージインポートは、名前空間がインポートするメンバーを識別する有向関係として定義される。
許可

定義: モデル要素が別の名前空間内の要素にアクセスする許可を与える依存関係の一種。
インスタンス化

定義: クライアント上の操作がサプライヤーのインスタンスを作成することを示す分類子間の使用依存関係。
バインディング

定義: テンプレートバインディングは、バインドされたテンプレート可能な要素からターゲットテンプレートのテンプレートシグネチャへの有向関係である。テンプレートバインディングは、テンプレートパラメータの置換の集合を所有する。
導出

定義: モデル要素間の導出関係を指定するもので、通常は同じ型であるが、必ずしもそうとは限らない。導出依存関係は、クライアントがサプライヤーから計算可能であることを指定する。
精緻化

定義: 分析と設計など、異なる意味レベルのモデル要素間の精緻化関係を指定する。
使用ケース: 分析から設計への変換、モデルの進化
トレース

定義: 異なるモデルで同じ概念を表すモデル要素または要素の集合間のトレース関係を指定する。
主な用途: モデル間での要件や変更の追跡;マッピングは通常、非公式で双方向的である
置換

定義: 2つの分類子間の関係で、置換分類子が契約分類子によって指定された契約を遵守していることを示す。
含意: 署名分類子のインスタンスは、契約分類子のインスタンスが期待される場所で実行時置換可能である。
マージ

定義: パッケージマージは、2つのパッケージ間の有向関係であり、2つのパッケージの内容を統合する必要があることを示している。
主な特徴:
-
パッケージの内容に対して、一般化に似ている
-
異なるパッケージ内の要素が同じ概念を表す場合に使用される
-
基本概念の段階的拡張を可能にする
-
特にメタモデル化およびUMLメタモデル定義において有用
クラスのバリエーションとストレオタイプ
ORM固有のクラス
クラス <>

定義: 関係データベースのオブジェクトモデルをモデル化するために使用できるクラスの特殊な形式。ORM永続クラスのセットからORMコードを生成できる。
追加プロパティ:
| プロパティ | 説明 |
|---|---|
| ORMクラスの詳細 | ORMコード生成に影響を与える設定 |
| ビジネスキー | equals()およびhashCode()操作の生成に使用される |
| ORMクエリ | ORM修飾子および名前付きクエリを定義する |
クラス <>

定義: 子ORM永続クラスの共通属性を捉えるためのクラスの特殊な形式。
クラス <>

定義: ユーザータイプクラスは、生成されたORMコードでアクセス可能であり、エンティティではなくカラムとしてデータベースに永続化されるオブジェクトモデルのオブジェクト型を定義します。
関連リソース: Hibernate ユーザータイプサポート
クラス <>

定義: ORMパラメータ型は、生成されたORMコード内で整合性チェックを実装することで、データの整合性を保証する機会を提供します。
クラス <>

定義: EJBエンティティビーンをモデル化するための特別なクラス形式。
追加プロパティ:
| プロパティ | 説明 |
|---|---|
| EJBクラスコードの詳細 | コード生成用のEJB関連属性 |
プロパティと設定
共通クラスプロパティリファレンス
| プロパティ | 適用対象 | 説明 |
|---|---|---|
| 名前 | すべての要素 | モデル要素の識別子 |
| 親 | クラス、インターフェース | 所有モデル要素 |
| 可視性 | ほとんどの要素 | 名前空間の表示を制御します:パブリック, プライベート, プロテクト, パッケージ |
| 抽象 | クラス、関連 | trueの場合、要素は不完全であり、直接インスタンス化できません |
| リーフ | クラス、関連 | trueの場合、要素はさらに特殊化できません |
| ルート | クラス | 要素に先祖がないことを示します |
| アクティブ | クラス | オブジェクトがアクティブ(並行)かパッシブかを決定します |
| ビジネスモデル | クラス | 「ビジネスクラス」としてマークするためのフラグ |
| 属性 | クラス | クラスが所有する直接のプロパティ |
| 操作 | クラス | パラメータと制約を持つ行動的機能 |
| テンプレートパラメータ | テンプレート化可能な要素 | ジェネリック/パラメータ化された要素の形式的パラメータ |
| 導出 | 関連 | 要素が他のモデル要素から導出されているかどうかを指定する |
コード生成設定
Java専用の設定
-
Javaアノテーション: アノテーション目的でJavaソースコードに追加されるメタデータ
-
ラウンドトリップエンジニアリング: Javaコードの生成と同期
ORM専用の設定
-
ORMクエリ: 永続可能クラスの修飾子および名前付きクエリを定義する
-
ビジネスキー: equals()/hashCode()の生成に使用されるフィールドを設定する
-
カラムマッピング: データベースのカラム名および型を指定する
関連するUML図の種類
クラス図は、包括的なシステムモデリングのために他のUML図と統合される:
| 図の種類 | 目的 | リンク |
|---|---|---|
| ユースケース図 | 機能要件を捉える | ユースケース図 |
| シーケンス図 | 時間経過に伴う動的相互作用をモデル化する | シーケンス図 |
| 通信図 | オブジェクトの相互作用とリンクを表示する | 通信図 |
| 状態機械図 | オブジェクトのライフサイクルと状態をモデル化する | 状態機械図 |
| アクティビティ図 | ワークフローとプロセスを表現する | アクティビティ図 |
| コンポーネント図 | 物理的なソフトウェアコンポーネントを表示する | コンポーネント図 |
| 配置図 | ハードウェアおよびソフトウェアの配置をモデル化する | 配置図 |
| パッケージ図 | モデル要素をパッケージに整理する | パッケージ図 |
| オブジェクト図 | 特定の瞬間におけるインスタンスを表示する | オブジェクト図 |
| 複合構造図 | 分類子の内部構造をモデル化する | 複合構造図 |
| タイミング図 | タイミング制約に注目する | タイミング図 |
| 相互作用概要図 | 相互作用図とアクティビティ図を統合する | 相互作用概要図 |
参考文献リスト
- 主要図の参照
-
ユースケース図: ユーザー視点からのシステム機能の視覚的表現であり、アクターとその目的を捉えている。
-
シーケンス図: 時間の順序で配置されたオブジェクト間の相互作用を示し、メッセージの順序に注目している。
-
通信図: オブジェクト間の相互作用を表示し、オブジェクト間の構造的関係に注目している。
-
状態機械図: オブジェクトのライフサイクル状態と遷移を通じて、オブジェクトの動的動作をモデル化する。
-
アクティビティ図: コントロールフローを用いて、ワークフロー、ビジネスプロセス、運用ステップを表現する。
-
コンポーネント図: 物理的なソフトウェアコンポーネント、そのインターフェース、および依存関係を図示する。
-
配置図: ハードウェアノード、ソフトウェアアーティファクト、およびそれらの配置関係を示す。
-
パッケージ図: モジュール性と名前空間管理のために、モデル要素を階層的なパッケージに整理する。
-
オブジェクト図: 特定の時点におけるクラスのインスタンスとそれらのリンクを表示する。
-
複合構造図: パーツ、ポート、接続子を含む分類子の内部構造をモデル化する。
-
タイミング図: 精密な時間間隔におけるタイミング制約と状態変化に注目する。
-
相互作用概要図: 高レベルの相互作用フローを示すために、相互作用図とアクティビティ図の記法を組み合わせる。
- クラス図記法の参照
-
抽象化: 異なる抽象レベルで同じ概念を表す要素を関連付ける関係。
-
アクセス: 要素インポート関係は、インポートされたパッケージ可能な要素の可視性を制御する。
-
集約(共有関連): 部分が全体から独立して存在できる、全体-部分関係。
-
関連(集約なし): ナビゲーション可能な端を持つ型付きインスタンス間の意味的関係。
-
関連クラス: 関係属性のための関連とクラスのプロパティを組み合わせたモデル要素。
-
バインディング: テンプレートバインディング関係で、汎用要素のパラメータ置換を伴う。
-
クラス: 共有された特徴、属性、操作を持つオブジェクトを記述するコア分類子。
-
クラス <>: 固定値集合を表す列挙リテラルのコンテナクラス。
-
クラス <>: 実装分類子のための公開特徴を宣言する契約仕様。
-
クラス <>: 基本言語型を表す事前定義データ型クラス。
-
クラス <>: データベースマッピングクラスで、ORMコード生成と永続化をサポートする。
-
クラス <>: 永続可能なサブクラス間で共通のORM属性を共有するための抽象基底クラス。
-
クラス <>: エンティティテーブルではなくデータベースカラムとして永続化されるカスタム型。
-
クラス <>: ORMコードにおけるデータ正しさの検証を可能にするパラメータ化型。
-
クラス <>: 企業向けJavaアプリケーション用のEJBエンティティビーンモデルクラス。
-
協調: 相互作用するインスタンスのための協働役割と通信経路を定義する分類子。
-
合成(複合関連): 独占的な所有権と連鎖的な削除を伴う強い全体-部分関係。
-
制約: モデル要素の意味を定義する条件または制限。
-
依存関係: ある要素が仕様化または実装のために別の要素を必要としていることを示す関係。
-
導出: クライアント要素がサプライヤー要素から計算可能であることを指定する関係。
-
一般化: 特定の分類子が一般的な分類子の特徴を継承する継承関係。
-
インポート: パッケージインポート関係により、インポート先の名前空間がパッケージのメンバーにアクセス可能になる。
-
インスタンス化: クライアントの操作がサプライヤー分類子のインスタンスを作成することを示す依存関係。
-
マージ: パッケージの内容を統合し、概念を段階的に拡張するためのパッケージマージ。
-
モデル: モデル要素やパッケージを整理するための最上位のコンテナ。
-
N項: 複数の分類子を同時に接続するN項関連。
-
注記: モデル要素に非意味的なコメントを付けるための注記要素。
-
許可: 別の名前空間内の要素へのアクセス権を付与する依存関係。
-
実現: クライアントがサプライヤーによって定義された仕様を実装する特殊化された抽象。
-
精緻化: 分析や設計など、異なる意味レベルにあるモデル要素間の関係。
-
置換: 置換される分類子が契約分類子の仕様に準拠していることを示す関係。
-
トレース: 要件管理を主な目的として、異なるモデル間で同じ概念を追跡する関係。
-
使用方法: クライアント要素が完全な実装または動作のためにサプライヤー要素を必要とする依存関係。
- チュートリアルおよびリソース参照
-
関連クラスの描画: Visual Paradigmで関連クラスを作成するためのステップバイステップガイド。
-
Javaコードの生成と同期: クラス図とJava実装間の双方向エンジニアリングのチュートリアル。
-
Hibernateユーザー型サポート: ORM-Persistableクラスを使用してカスタムHibernateユーザー型を実装するためのリソース。
- 標準参照
-
オブジェクト管理グループ – 統一モデリング言語: UMLを規制する標準機関からの公式UML仕様の出典。
-
記法の定義は以下から引用されていますオブジェクト管理グループ 統一モデリング言語(OMG UML)スーパ構造バージョン2.2およびそれ以前のバージョン(最新の仕様では存在しない記法用)。
- 本ガイドはVisual ParadigmのUMLクラス図ドキュメントに基づいています。最新の仕様については、常に公式のOMG UML標準を参照してください。











