UML 関係タイプ: 関連、依存関係、一般化

⚡ スマートサマリー

UMLリレーションシップは、構造的、行動的、およびグループを結び付けます。ping モデルの要素を示し、実行中にオブジェクトが互いにどのように依存するかを示します。このリソースでは、関連、依存性、汎化、実現、合成、集約について、それぞれの表記法と実例を用いて解説します。

  • 🔗 協会: オブジェクト同士が接続される構造的なリンクであり、制約と多重度によって参加するオブジェクトの数が定義される。
  • 依存: 供給者側の要素の変化が、依存する顧客に影響を与える可能性のある一方的な関係。
  • 🌳 汎化: 一般的なエンティティと特殊なエンティティの間で継承を実現する親子関係。
  • 🧩 実現: インターフェースtract では、一方のエンティティが責任を定義し、もう一方のエンティティがそれを実行します。これは、標準形式または省略形式で示されます。
  • 💠 構成と集合: 全体と部分の関係性。構成は全体を消滅させるが、集合は部分全体を生き残らせる。

UML関係の種類

UML関係とは何ですか?

UML における関係 構造的、行動的、またはグループ間のつながりを表すために使用されるping 関係性。これは、システム実行中に 2 つ以上のものが互いにどのように関連するかを説明するリンクとも呼ばれます。UML 関係の種類には、関連、依存関係、一般化、および実現があります。

詳しく勉強しましょう

UML クラス図の関係の種類

UML クラス図の関係

協会

これは、UML モデルの要素を接続するリンクのセットです。 また、その関係に参加しているオブジェクトの数も定義します。

依存関係

依存関係では、その名前が示すように、XNUMX つ以上の要素が相互に依存します。 この種の関係では、特定の要素に変更を加えた場合、他のすべての要素もその変更の影響を受ける可能性があります。

一般化

親子関係とも言います。 一般化すると、XNUMX つの要素は別の一般的なコンポーネントの特殊化になります。 代用することも可能です。 主に継承を表すために使用されます。

実現

UML の実現関係では、一方のエンティティはそれ自体では実装されない何らかの責任を表し、もう一方のエンティティはそれらを実装します。 この関係は主に次の場合に見られます。 インターフェースの頂点を体現しています。

協会

これは、オブジェクトがシステム内の別のオブジェクトに接続または関連付けられることを表す構造的な関係です。関連関係には、次の制約を適用できます。

  • {暗黙} – 暗黙の制約は、関係が明示的ではないことを指定します。 それはコンセプトに基づいています。
  • {順序付けられました} – 順序付き制約は、関連付けの一端にあるオブジェクトのセットが特定の方法であることを指定します。
  • {変更可能} – 変更可能な制約は、システム内のさまざまなオブジェクト間の接続を要件に応じて追加、削除、および変更できることを指定します。
  • {追加のみ} – アソシエーションの反対側にあるオブジェクトから新しい接続を追加できることを指定します。
  • {凍った} – XNUMX つのオブジェクト間にリンクが追加される場合、特定のリンクまたは接続でフリーズされた制約がアクティブになっている間はリンクを変更できないことを指定します。

関連プロパティを持つクラスを作成することもできます。 これはアソシエーション クラスと呼ばれます。

再帰的連想

再帰的関連付けは、UML の関連付け関係のサブタイプです。 再帰的関連付けでは、同じクラスのインスタンスを相互に関連付けることができます。 クラスのインスタンスはオブジェクトとも言われます。

再帰的関連付けは、同じクラスのオブジェクト内にリンクまたは接続が存在できることを示します。

クラスフルーツの例を考えてみましょう。 フルーツ クラスには、マンゴーとリンゴなどの XNUMX つのインスタンスがあります。 再帰的関連性は、マンゴーとリンゴは果物などの同じクラスのインスタンスであるため、それらの間にリンクが存在する可能性があると述べています。

有向関連

名前が示すように、有向関連付けは、関連付けクラス内のフローの方向に関連します。

有向関連付けでは、フローは有向です。 あるクラスから別のクラスへの関連付けは一方向にのみ流れます。

これは、矢印付きの実線を使用して示されます。

例:

サーバーとクライアントの間には有向関連付け関係があると言えます。 サーバーはクライアントのリクエストを処理できます。 このフローは一方向であり、サーバーからクライアントのみに流れます。 したがって、システムのサーバーとクライアント内に有向関連付け関係が存在する可能性があります。

依存関係

UML の依存関係を使用すると、特定のシステム内のさまざまなものがどのように相互に依存しているかを関連付けることができます。 依存関係は、相互に依存する UML のさまざまな要素間の関係を記述するために使用されます。

ステレオタイプ

  • "練る" – バインドは、指定されたパラメータまたは値を使用して、ソースがターゲットの場所でテンプレートを初期化できることを指定する制約です。
  • "派生する" – ソース オブジェクトの位置がターゲット オブジェクトから計算できることを表します。
  • 「友人」 – ソースがターゲット オブジェクト内で固有の可視性を持つことを指定します。
  • «インスタンス» – ターゲット分類子のインスタンスがソース オブジェクトであることを指定します。
  • «インスタンス化» – ソース オブジェクトがターゲット オブジェクトのインスタンスを作成できることを指定します。
  • "リファイン" – ソースオブジェクトが例外的な絶対値を持つことを指定しますtrac対象物よりも高い値。
  • "使用" – パッケージが UML で作成されるときに使用されます。 use ステレオタイプは、ソース パッケージの要素がターゲット パッケージ内にも存在できることを示します。 ソース パッケージがターゲット パッケージの一部の要素を利用することが説明されています。
  • "代わりの" – 実行時にクライアントがサプライヤーの代わりに使用できることを指定します。
  • "アクセス" – ソースパッケージがターゲットパッケージの要素にアクセスすることを指定します これはプライベートマージとも呼ばれます。
  • "輸入" – ターゲットがソース パッケージの要素を、ソース パッケージ内で定義されているのと同じようにインポートできることを指定します。 ターゲット。パブリック マージとも呼ばれます。
  • "許可する" – 宣言されたサプライヤーの可視性を問わず、ソース要素がサプライヤー要素にアクセスできることを指定します。
  • "伸ばす" – ターゲットがソース要素の動作を拡張できることを指定するのに役立ちます。
  • "含む" – 指定した場所にある別の要素の動作を含めることができるソース要素を指定できます。 (C/C++の関数呼び出しと同じ)
  • "なる" – ターゲットが、値と役割が異なるソースと類似していることを指定します。
  • "電話" – ソースがターゲット オブジェクト メソッドを呼び出せることを指定します。
  • "コピー" – ターゲット オブジェクトがソース オブジェクトのコピーである独立したものであることを指定します。
  • 「パラメータ」 ―サプライヤーは、クライアントの業務におけるパラメータの一つである。
  • "送信" ―クライアントとは、サプライヤーに何らかの特定されていないターゲットを送信する操作のことである。

ステートマシン間のステレオタイプ

  • "送信" – ソース操作がターゲット イベントを送信することを指定します。

一般化

これは、システム内に存在する一般的なエンティティと固有のエンティティとの間の関係です。

一般化関係では、オブジェクト指向の概念は次のように呼ばれます。 継承 実装できる。 一般化関係は、エンティティまたはモノとも呼ばれる XNUMX つのオブジェクト間に存在します。 一般化関係では、XNUMX つのエンティティが親であり、別のエンティティが子であると言われます。 これらのエンティティは、継承を使用して表現できます。

継承では、任意の親の子は、親オブジェクト内で指定されている機能にアクセス、更新、または継承できます。 子オブジェクトは、親オブジェクトの構造と動作を継承するだけでなく、その機能をそれ自体に追加できます。

このタイプの関係は、総称して一般化関係として知られています。

固定観念とその制約

  • "実装" – このステレオタイプは、ルールに違反することなく、親オブジェクトの構造と動作を継承することによって、子エンティティが親エンティティによって実装されていることを表すために使用されます。 注意: このステレオタイプは単一の 継承.

一般化関係には、すべての子エンティティが関係に含まれているかどうかを確認するための完全、不完全などの制約が含まれます。

実現

UML の実現関係では、一方のエンティティはそれ自体では実装されない何らかの責任を表し、もう一方のエンティティはそれらを実装します。 この関係は主に次の場合に見られます。 インターフェースの頂点を体現しています。

実現は次の XNUMX つの方法で表現できます。

  • 使い方 正規形
  • 年を使用して 省略された形式
UML での実現
UML での実現

上の図では、アカウント ビジネス ルールはインターフェイス IRuleAgent を実現します。

実現の種類

  1. 正規形式:UMLの実現関係において、正規形式はシステム全体のインターフェースを実現するために使用されます。インターフェースのステレオタイプを使用してインターフェースを作成し、実現関係を使用して特定のインターフェースを実現します。正規形式では、実現関係は大きな開いた矢印が付いた破線の有向線で表されます。上記の図では、インターフェースIruleagentは、Account Business Rulesというオブジェクトを使用して実現されています。
  2. 省略形: 実現 UMLクラス図 省略形を用いて表示することもできます。省略形では、インターフェースは円で表され、これはロリポップ表記とも呼ばれます。このインターフェースは、システム内部の何かを使用して実装されると、省略構造になります。上記の図では、インターフェース Iruleagent が省略形で表されており、acctrule.dll によって実装されています。

構成

これは標準の UML 関係ではありませんが、依然としてさまざまなアプリケーションで使用されています。

複合集計は、次のような特徴を持つ集計関係のサブタイプです。

  • これはオブジェクト間の双方向の関連付けです。
  • それは全体と部分の関係です。
  • コンポジットを削除すると、それに関連付けられている他のすべてのパーツが削除されます。

複合集約は、集約 (全体) の端に塗りつぶされた黒いひし形で装飾された二項関係として記述されます。

UML での構成

UML での構成

フォルダは、n 個のファイルを保持する構造です。フォルダは、その中にファイルを保存するために使用されます。各フォルダは、任意の数のファイルに関連付けることができます。コンピュータ システムでは、すべてのファイルは、ファイル編成システム内の少なくとも 1 つのフォルダの一部です。同じファイルが別のフォルダの一部になることもできますが、必須ではありません。フォルダからファイルが削除されると、フォルダは影響を受けませんが、その特定のファイルに関連するデータは破棄されます。フォルダに対して削除操作を実行すると、フォルダ内にあるすべてのファイルにも影響します。フォルダがシステムから削除されると、フォルダに関連付けられているすべてのファイルが自動的に破棄されます。

UML におけるこのタイプの関係は、複合集計関係として知られています。

アグリゲーション

An 凝集 UML における関連関係のサブタイプです。集約と合成はどちらも UML における関連関係のタイプです。集約関係は簡単に言うと「あるクラスのオブジェクトが別のクラスのオブジェクトを所有したりアクセスしたりできる」と説明できます。

集約関係では、ソース オブジェクトが破棄されても、依存オブジェクトは関係の範囲内に残ります。

車と車輪の例を考えてみましょう。 車が正しく機能するには車輪が必要ですが、車には車輪が常に必要というわけではありません。 バイク、自転車、その他の乗り物にも使用できますが、特定の車には使用できません。 ここで、車オブジェクトがなくても、車輪オブジェクトは意味がある。 このようなタイプの関係は、集約関係と呼ばれます。

よくあるご質問

多重度とは、あるクラスのインスタンスが別のクラスのインスタンスとリレーションシップでリンクできるインスタンスの数を表すもので、1、0..1、1..* などの値で表されます。例えば、1つのフォルダには0個または多数のファイルが含まれる場合があります。

UMLでは、関係の種類を示すために異なる線端記号を使用します。関連は実線、依存関係は中空の矢印、汎化は中空の三角形、実現は中空の三角形が付いた破線、集約または合成はひし形です。

関連性とは、オブジェクト同士が互いの存在を一定期間認識する構造的なつながりです。一方、依存関係はより弱く一時的な関係であり、一方の要素が他方の要素を利用するため、供給者の変更が顧客に及ぼす影響は一時的なものにとどまる可能性があります。

AIコード解析ツールは、クラスをスキャンし、オブジェクト間の参照関係に基づいて、関連性、依存関係、一般化、集約といった可能性のある関係性を提案できます。ただし、AIは間接的または動的な接続を誤って解釈する可能性があるため、エンジニアは提案内容を確認する必要があります。

はい。一部のAI図作成ツールは、クラスの平易な言葉による説明を読み込み、関連、汎化、構成リンクを含むクラス図のドラフトを生成します。ただし、出力はあくまで出発点であり、手動での検証が必要です。