UML 関係タイプ: 関連、依存関係、一般化
UML関係とは何ですか?
UML における関係 構造的、動作的、またはグループ化されたものの間のつながりを表すために使用されます。 これは、システムの実行中に XNUMX つ以上のものが相互にどのように関係するかを記述するリンクとも呼ばれます。 UML 関係のタイプは、関連、依存関係、一般化、および実現です。
詳しく勉強しましょう
UML クラス図の関係の種類
協会
これは、UML モデルの要素を接続するリンクのセットです。 また、その関係に参加しているオブジェクトの数も定義します。
依存関係
依存関係では、その名前が示すように、XNUMX つ以上の要素が相互に依存します。 この種の関係では、特定の要素に変更を加えた場合、他のすべての要素もその変更の影響を受ける可能性があります。
一般化
親子関係とも言います。 一般化すると、XNUMX つの要素は別の一般的なコンポーネントの特殊化になります。 代用することも可能です。 主に継承を表すために使用されます。
実現
UML の実現関係では、一方のエンティティはそれ自体では実装されない何らかの責任を表し、もう一方のエンティティはそれらを実装します。 この関係は主に次の場合に見られます。 インターフェースの頂点を体現しています。
協会
これは、オブジェクトがシステム内の別のオブジェクトに接続または関連付けられることを表す構造的な関係です。関連関係には、次の制約を適用できます。
- {暗黙} – 暗黙の制約は、関係が明示的ではないことを指定します。 それはコンセプトに基づいています。
- {順序付けられました} – 順序付き制約は、関連付けの一端にあるオブジェクトのセットが特定の方法であることを指定します。
- {変更可能} – 変更可能な制約は、システム内のさまざまなオブジェクト間の接続を要件に応じて追加、削除、および変更できることを指定します。
- {追加のみ} – アソシエーションの反対側にあるオブジェクトから新しい接続を追加できることを指定します。
- {凍った} – XNUMX つのオブジェクト間にリンクが追加される場合、特定のリンクまたは接続でフリーズされた制約がアクティブになっている間はリンクを変更できないことを指定します。
関連プロパティを持つクラスを作成することもできます。 これはアソシエーション クラスと呼ばれます。
再帰的連想
再帰的関連付けは、UML の関連付け関係のサブタイプです。 再帰的関連付けでは、同じクラスのインスタンスを相互に関連付けることができます。 クラスのインスタンスはオブジェクトとも言われます。
再帰的関連付けは、同じクラスのオブジェクト内にリンクまたは接続が存在できることを示します。
クラスフルーツの例を考えてみましょう。 フルーツ クラスには、マンゴーとリンゴなどの XNUMX つのインスタンスがあります。 再帰的関連性は、マンゴーとリンゴは果物などの同じクラスのインスタンスであるため、それらの間にリンクが存在する可能性があると述べています。
有向関連
名前が示すように、有向関連付けは、関連付けクラス内のフローの方向に関連します。
有向関連付けでは、フローは有向です。 あるクラスから別のクラスへの関連付けは一方向にのみ流れます。
これは、矢印付きの実線を使用して示されます。
例:
サーバーとクライアントの間には有向関連付け関係があると言えます。 サーバーはクライアントのリクエストを処理できます。 このフローは一方向であり、サーバーからクライアントのみに流れます。 したがって、システムのサーバーとクライアント内に有向関連付け関係が存在する可能性があります。
依存関係
UML の依存関係を使用すると、特定のシステム内のさまざまなものがどのように相互に依存しているかを関連付けることができます。 依存関係は、相互に依存する UML のさまざまな要素間の関係を記述するために使用されます。
ステレオタイプ
- "練る" – バインドは、指定されたパラメータまたは値を使用して、ソースがターゲットの場所でテンプレートを初期化できることを指定する制約です。
- "派生する" – ソース オブジェクトの位置がターゲット オブジェクトから計算できることを表します。
- 「友人」 – ソースがターゲット オブジェクト内で固有の可視性を持つことを指定します。
- «インスタンス» – ターゲット分類子のインスタンスがソース オブジェクトであることを指定します。
- «インスタンス化» – ソース オブジェクトがターゲット オブジェクトのインスタンスを作成できることを指定します。
- "リファイン" – ソース オブジェクトがターゲット オブジェクトよりも例外的な抽象化を持っていることを指定します。
- "使用" – パッケージが UML で作成されるときに使用されます。 use ステレオタイプは、ソース パッケージの要素がターゲット パッケージ内にも存在できることを示します。 ソース パッケージがターゲット パッケージの一部の要素を利用することが説明されています。
- "代わりの" – 実行時にクライアントがサプライヤーの代わりに使用できることを指定します。
- "アクセス" – ソースパッケージがターゲットパッケージの要素にアクセスすることを指定します これはプライベートマージとも呼ばれます。
- "輸入" – ターゲットがソース パッケージの要素を、ソース パッケージ内で定義されているのと同じようにインポートできることを指定します。 ターゲット。パブリック マージとも呼ばれます。
- "許可する" – 宣言されたサプライヤーの可視性を問わず、ソース要素がサプライヤー要素にアクセスできることを指定します。
- "伸ばす" – ターゲットがソース要素の動作を拡張できることを指定するのに役立ちます。
- "含む" – 指定した場所にある別の要素の動作を含めることができるソース要素を指定できます。 (C/C++の関数呼び出しと同じ)
- "なる" – ターゲットが、値と役割が異なるソースと類似していることを指定します。
- "電話" – ソースがターゲット オブジェクト メソッドを呼び出せることを指定します。
- "コピー" – ターゲット オブジェクトがソース オブジェクトのコピーである独立したものであることを指定します。
- «パラメータ» – サプライヤーはクライアント操作のパラメータです.
- "送信" - クライアントは、サプライヤーに何らかの未指定のターゲットを送信する操作です。
ステートマシン間のステレオタイプ
- "送信" – ソース操作がターゲット イベントを送信することを指定します。
一般化
これは、システム内に存在する一般的なエンティティと固有のエンティティとの間の関係です。
一般化関係では、オブジェクト指向の概念は次のように呼ばれます。 継承 実装できる。 一般化関係は、エンティティまたはモノとも呼ばれる XNUMX つのオブジェクト間に存在します。 一般化関係では、XNUMX つのエンティティが親であり、別のエンティティが子であると言われます。 これらのエンティティは、継承を使用して表現できます。
継承では、任意の親の子は、親オブジェクト内で指定されている機能にアクセス、更新、または継承できます。 子オブジェクトは、親オブジェクトの構造と動作を継承するだけでなく、その機能をそれ自体に追加できます。
このタイプの関係は、総称して一般化関係として知られています。
固定観念とその制約
- "実装" – このステレオタイプは、ルールに違反することなく、親オブジェクトの構造と動作を継承することによって、子エンティティが親エンティティによって実装されていることを表すために使用されます。注意 このステレオタイプが単一の言語で広く使用されている場合、 継承.
一般化関係には、すべての子エンティティが関係に含まれているかどうかを確認するための完全、不完全などの制約が含まれます。
実現
UML の実現関係では、一方のエンティティはそれ自体では実装されない何らかの責任を表し、もう一方のエンティティはそれらを実装します。 この関係は主に次の場合に見られます。 インターフェースの頂点を体現しています。
実現は次の XNUMX つの方法で表現できます。
- 使い方 正規形
- 年を使用して 省略された形式
上の図では、アカウント ビジネス ルールはインターフェイス IRuleAgent を実現します。
実現の種類
- 正規形式 UML の実現関係では、システム全体のインターフェイスを実現するために正規形式が使用されます。 インターフェイス ステレオタイプを使用してインターフェイスを作成し、実現関係を使用して特定のインターフェイスを実現します。 正規形式では、実現関係は、大きな白矢印が付いた破線の有向線を使用して示されます。 上の図では、Iruleagent インターフェイスは、Account Business Rules と呼ばれるオブジェクトを使用して実現されています。
- 廃止された形式の実現 UMLクラス図 省略形を使用して表示することもできます。 省略された形式では、インターフェイスはロリポップ表記とも呼ばれる円を使用して表示されます。 このインターフェイスは、システム内に存在するものを使用して実現されると、省略された構造を作成します。上の図では、インターフェイス Iruleagent は、acctrule.dll によって実現される省略された形式を使用して示されています。
構成
これは標準の UML 関係ではありませんが、依然としてさまざまなアプリケーションで使用されています。
複合集計は、次のような特徴を持つ集計関係のサブタイプです。
- これはオブジェクト間の双方向の関連付けです。
- それは全体と部分の関係です。
- コンポジットを削除すると、それに関連付けられている他のすべてのパーツが削除されます。
複合集約は、集約 (全体) の端に塗りつぶされた黒いひし形で装飾された二項関係として記述されます。
フォルダは、n 個のファイルを保持する構造です。フォルダは、その中にファイルを保存するために使用されます。各フォルダは、任意の数のファイルに関連付けることができます。コンピュータ システムでは、すべてのファイルは、ファイル編成システム内の少なくとも 1 つのフォルダの一部です。同じファイルが別のフォルダの一部になることもできますが、必須ではありません。フォルダからファイルが削除されると、フォルダは影響を受けませんが、その特定のファイルに関連するデータは破棄されます。フォルダに対して削除操作を実行すると、フォルダ内にあるすべてのファイルにも影響します。フォルダがシステムから削除されると、フォルダに関連付けられているすべてのファイルが自動的に破棄されます。
UML におけるこのタイプの関係は、複合集計関係として知られています。
アグリゲーション
An 凝集 UML における関連付け関係のサブタイプです。 集約と合成は、どちらも UML における関連付け関係のタイプです。 集約関係は、簡単な言葉で説明すると、「あるクラスのオブジェクトが別のクラスのオブジェクトを所有またはアクセスできる」というものです。
集約関係では、ソース オブジェクトが破棄されても、依存オブジェクトは関係の範囲内に残ります。
車と車輪の例を考えてみましょう。 車が正しく機能するには車輪が必要ですが、車には車輪が常に必要というわけではありません。 バイク、自転車、その他の乗り物にも使用できますが、特定の車には使用できません。 ここで、車オブジェクトがなくても、車輪オブジェクトは意味がある。 このようなタイプの関係は、集約関係と呼ばれます。
まとめ
- UML の関係により、あるものをシステム内の他のものと関連付けることができます。
- 関連、依存関係、一般化、実現関係は UML によって定義されます。
- コンポジション関係を使用して、オブジェクトが一度に XNUMX つのコンポジットのみの一部になり得ることを表すこともできます。
- 関連は、あるオブジェクトを別のオブジェクトに関連付けることができることを説明するために使用されます。
- 依存関係は、オブジェクトが相互に依存できることを示します。
- 実現とは、分類子間の意味のある関係です。
- 一般化は親子関係とも呼ばれます。