web-dev-qa-db-ja.com

クラス図で矢印は何を意味していますか?

UMLクラス図の矢印の意味を理解しようとする助けが必要です。具体的には、この複合図です。単純な線(クラスから別の線へ)と矢印(継承矢印ではなく、黒い線を指す)の違いは何ですか?

UML Class Diagram

8
John Smith

画像についてより詳しく説明するために、画像に番号を付けました。うまくいけば、これが私の文章をより明確にするのに役立ちます。

Annotated Class Diagram

ここで実際に使用されている行には、関連(1)、構成(4-> 2)、継承(3)の3つのタイプがあります。

ClientBookComponentの間など、2つのクラスを結ぶ実線は、単なる関連関係です。これは、クラスが知っている(おそらくメソッドへの引数として受け取るのと同じように)か、または別のクラス(おそらくインスタンス変数として)を持っていることを示すためによく使用されます。装飾がない場合、または両端に矢印がある場合、関係は双方向です。2つのクラスは関係を共有し、互いについて知っています。図の1行目など、場合によっては、関係に方向性があります。 ClientクラスはBookComponentについて知っているが、BookComponentにはClientがないか、または知っていないため、その逆は当てはまりません。多重度やクラスの役割など、関連関係に表示できる他の注釈もあることに注意してください。

次の行は、BookCompositeBookComponentに接続する行です。これは、ClientBookComponentの間の線によく似た関連付けです。ただし、2と4のラベルを付けたポイントの注釈は、関係に関する追加情報を追加します。ポイント1の線、ポイント2の矢印は同じことを意味します。BookCompositeBookComponentインスタンスを認識しますが、その逆(方向関係)は認識しません。ポイント4の注釈は、集約関係を示しています。BookCompositeは、BookComponentのコレクションです。ただし、これは強力な関係ではないため(強い構成関係と同様)、集計はBookComponentBookCompositeの外側の場所を示すことができることを示します(BookCompositeBookComponentを持つ必要はありません)。

注目すべき点は、方向の関連付けを示すために使用される矢印は、通常、この画像に示すように黒一色の矢印ではないことです。私は通常、画像に表示されているものよりもvに近い白抜きの矢印として表示されます。

最後に、3というラベルの付いた点は、質問で述べた継承関係です。

UMLモデリングの詳細に興味がある場合は、 ML Distilled を購入することをお勧めします。 Martin Fowlerによる優れた本で、クラス、シーケンス、オブジェクト、パッケージ、デプロイメント、ユースケース、ステートマシン、アクティビティ、コミュニケーション、複合構造、コンポーネント、コラボレーション、相互作用の概要、およびタイミング図をカバーしています。

13
Thomas Owens

あなたの写真はいくつかの異なる関係を示しています。

ClientクラスとBookComponentクラスの間の関係は、包含関係です。つまりクライアントにはBookComponentのインスタンスが含まれます。

BookCompositeとBookComponentには2つの関係があります。開いた矢印は汎化関係です(つまり、BookComponentはBookCompositeを一般化します。または、BookCompositeはBookComponentから特殊化/派生します)。テールにダイヤモンドが付いたクローズドアロヘッドは集合体です。つまり、BookCompositeにはBookComponentのコレクションが含まれています。ダイヤモンドが満たされていないという事実も重要です。これは、含まれているBookComponentsのライフサイクルが、含まれているBookCompositeのライフサイクルに関連付けられていないことを意味します。アグリゲーションの代わりに入力された場合はコンポジションであり、BookCompositeが破棄された場合はBookComponentsも同様に破棄されます

3
Michael Brown