UML矢印の説明


244

私は最近UMLを研究し、クラス間に通常の単純な矢印を使用して単純な図を描画していますが、それだけでは十分ではありません。他にもたくさんの矢印があります。一般化、実現など、図の読者にとって意味のあるものです。

各矢印を説明できる優れたリソースはありますか(通常、プレーン、ドット、ダイヤモンド塗り、ダイヤモンド)?

彼らのためにいくつかのコード例があればそれは最高でしょう。


4
私はこれを検討することを強くお勧めします:dzone.com/refcardz/getting-started-uml
三位一体

回答:


475

Visual Studio 2015のドキュメントからの説明は次のとおりです。

UMLクラス図:参照https : //msdn.microsoft.com/library/dd409437%28VS.140%29.aspx

UMLクラス図

5関連付け:2つの分類子のメンバー間の関係。

5a集約:共有された所有関係を表す関連付け。所有者ロールの AggregationプロパティはSharedに設定されています。

5b構成:全体的な関係を表す関連付け。 所有者ロールのAggregationプロパティはCompositeに設定されています。

9一般化:特定の分類子は、その定義の一部を一般的な分類子から継承します。一般的な分類子は、コネクタの矢印の端にあります。属性、関連付け、および操作は、特定の分類子によって継承されます。継承ツールを使用して、2つの分類子間の汎化を作成します。

パッケージ図

13インポート:パッケージ間の関係。1つのパッケージに別のパッケージのすべての定義が含まれていることを示します。

14依存性:矢印の端にある分類子が変更されると、依存分類子の定義または実装が変更される可能性があります。

実現関係

15実現:クラスは、インターフェースによって定義された操作と属性を実装します。継承ツールを使用して、クラスとインターフェース間の実現を作成します。

16実現:同じ関係の別の表現。ロリポップシンボルのラベルは、インターフェイスを識別します。

UMLクラス図:ガイドラインhttp : //msdn.microsoft.com/library/dd409416%28VS.140%29.aspx

関連付けのプロパティ

集約:これは、コネクタの一方の端にひし形として表示されます。これを使用して、集約ロールのインスタンスが他のインスタンスを所有または含んでいることを示すことができます。

ナビゲート可能:1つのロールに対してのみtrueの場合、ナビゲート可能な方向に矢印が表示されます。これを使用して、ソフトウェアのリンクおよびデータベース関係のナビゲート可能性を示すことができます。


汎化:汎化とは、特殊化または派生型が、一般または基本型の属性、操作、および関連付けを継承することを意味します。一般タイプは、関係の矢印の端に表示されます。

実現:実現とは、クラスがインターフェースによって指定された属性と操作を実装することを意味します。インターフェイスはコネクタの矢印の端にあります。

他にご不明な点がありましたらお知らせください。


1
いい参照ですが、私にとっては、Menu-> MenuItemはOrder-> OrderItemと同じリレーションシップを持っているため、両方ともコンポジションです。
Ignacio Soler Garcia 2013

4
つまり、注文アイテムは注文に属していて移動できないということですが、メニューアイテムは調整可能です-ユーザーはメニューアイテムの位置を変更できます。それが選ばれたソリューションです。何故なの?
Gangnus 14

@Gangnus、ありがとう。その説明は、長い間私を避けてきた違いを明らかにしました。
JMD 2015年

1
@JMD、注文アイテムも移動できます。複合集約は、UML仕様で次のように定義されています。複合集約は、一度に多くても1つの複合オブジェクトにパーツオブジェクトを含める必要がある強力な集約形式です。複合オブジェクトが削除されると、オブジェクトであるそのすべてのパートインスタンスが一緒に削除されます。部品オブジェクトは、(別の方法で許可されている場合)複合オブジェクトが削除される前に複合オブジェクトから削除される場合があるため、複合オブジェクトの一部としては削除されません。
www.admiraalit.nl

2
@aGerありがとう、トピックと画像のリンクを更新しました。
Estherファン-MSFT

153

ここに画像の説明を入力してください

ここに画像の説明を入力してください

これらの写真は理解できると思います。


これらの概念の一部は重複していませんか?AはBに依存します。AはBにアクセスできます。関連付けは常に依存関係であり、依存関係は常に関連付けではありませんか?
EresDev

この図では、実現が2回繰り返されていますが、絵は異なります。違いについて詳しく教えてください。
可変


13

私のお気に入りのUML「チートシート」は、Martin FowlerによるUML Distilledです。私が読んだのは、彼が推薦する唯一の本です。


1
興味深いことに、私はリファクタリングがかなり好きでした。それはあなたが意見を持っているものです。
djna 2009

はい、私はそれが少し明白であることを発見し、Javaへの集中が好きではありませんでした。また、他の本はごみだと言ってはいけません。

ファウラーの本には、本の表紙の内側にもチートシートがあります。特にあなたの次の質問が矢印がどの方向に行くかになるので、特に始めに本当に良いですか?
テッドジョンソン

12
「チートシート」では185ページは少し過剰に見えます。
cdyson37 2015


9

クイックリファレンスと明確で簡潔な例については、Allen HolubのUMLクイックリファレンスが優れています。

http://www.holub.com/goodies/uml/

(テーブルの最初の列に矢印とポインターの具体的な例がかなりあり、2番目の列に説明があります。)


私は彼の最初の例が好きで、ヒューが基本的に同じ行を徐々に増やしていくことを望んでいましたが、それは良い読み物です
killjoy


5

受け入れられた答えは言われています、それはいくつかの説明が欠けています。たとえば、単方向の関連付けと双方向の関連付けの違いは何ですか?提供されている例では、両方存在しています。(矢印の両方に「5」)

より完全な答えを探して、より多くの時間がある場合は、ここで徹底的な説明があります。


1

あなたがMOOCの人なら、ほとんどのUMLダイアグラムのすべてのインとアウトを教えることをお勧めする1つの無料コースは、Udacityからのこれです:https ://www.udacity.com/course/software-architecture -design--ud821


0

集計と構成は少し混乱します。ただし、コンポジションは集約のより強力なバージョンであると考えてください。どういう意味ですか?例を挙げましょう:(集合)1.教室と生徒を例にとります:この場合、それらの間の関係を分析しようとします。教室があり 、学生との関係を。つまり、教室は1人または複数の生徒で構成されます。Classroomクラスを削除しても、Studentsクラスを破棄する必要はありません。つまり、Studentクラスを個別に使用できます。

(作文)2.ページとブッククラスを見てください。この場合は、ページがある ページのコレクションは本を作る意味ブック、。bookクラスを削除すると、Pageクラス全体が破棄されます。つまり、ページのクラスを個別に使用することはできません。

このトピックについてまだ不明な点がある場合は、集計をより明確に説明しているこの短い素晴らしいビデオをご覧ください。

https://www.youtube.com/watch?v=d5ecYmyFZW0

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.