UML箭头说明


243

我最近一直在研究UML,并在类之间使用普通的普通箭头绘制简单的图,但是我知道这还不够。还有许多其他箭头:概括,实现等,它们对图阅读器有意义。

有没有很好的资源可以解释每个箭头(普通,普通,点缀,菱形,菱形)?

如果它将为他们提供一些代码示例,那将是最好的。


4
我强烈建议您考虑一下:dzone.com/refcardz/getting-started-uml
trinity

Answers:


475

以下是Visual Studio 2015文档中的一些解释:

UML类图:参考https : //msdn.microsoft.com/library/dd409437%28VS.140%29.aspx

UML类图

5关联:两个分类器的成员之间的关系。

5a集合:表示共享所有权关系的关联。所有者角色的 Aggregation属性设置为Shared

5b组成:表示整个部分关系的关联。 所有者角色的Aggregation属性设置为Composite

9通用化:特定分类器从通用分类器继承其定义的一部分。通用分类器位于连接器的箭头端。属性,关联和操作由特定分类器继承。使用继承工具创建两个分类器之间的概括。

包装图

13导入:程序包之间的关系,指示一个程序包包含另一个程序包的所有定义。

14相关性:如果更改了箭头末端的分类器,则相关分类器的定义或实现可能会更改。

实现关系

15实现:该类实现接口定义的操作和属性。使用继承工具在类和接口之间创建实现。

16实现:相同关系的替代表示。棒棒糖符号上的标签标识界面。

UML类图:准则http : //msdn.microsoft.com/library/dd409416%28VS.140%29.aspx

协会的性质

聚合:这在连接器的一端显示为菱形。您可以使用它来指示处于聚合角色的实例拥有或包含另一个实例。

可导航:如果仅对一个角色为true,则在可导航方向上会出现一个箭头。您可以使用它来指示软件中链接和数据库关系的可导航性。


概括:通用化是指专门化类型或派生类型继承通用或基本类型的属性,操作和关联。常规类型显示在关系的箭头末端。

实现:实现是指一个类实现接口指定的属性和操作。接口位于连接器的箭头端。

如果您还有其他问题,请告诉我。


1
很好的参考,但对我来说Menu-> MenuItem具有与Order-> OrderItem相同的关系,因此它们都是Compositions。
Ignacio Soler Garcia 2013年

4
两者都仅表示该订单项属于某个订单并且不能移动,而菜单项可以调整-用户可以更改菜单项的位置。这是选择的解决方案。为什么不?
Gangnus 2014年

@Gangnus,谢谢。这种解释澄清了很长一段时间以来我一直无法理解的差异。
JMD

1
@JMD,订单项也可以移动。在UML规范中,组合聚合定义如下:组合聚合是一种很强的聚合形式,它要求一次将一个对象最多包含在一个复合对象中。如果删除了一个复合对象,则与此对象一起删除的所有作为对象的部分实例。在删除复合对象之前,可以从复合对象中删除部件对象(在允许的情况下),因此不能作为复合对象的一部分删除。
www.admiraalit.nl

2
@aGer谢谢,我已经更新了主题和图像链接。
Esther Fan-MSFT

153

在此处输入图片说明

在此处输入图片说明

我认为这些图片是可以理解的。


这些概念中的一些不是重叠的吗?A依赖B。A可以访问B。关联不是总是依赖关系,而依赖不是总是关联关系吗?
EresDev

在该图中,重复实现两次,但是伪装不同。请您详细说明区别吗?
变数


13

我最喜欢的UML“备忘单”是Martin Fowler的UML Distilled。这是我推荐的他读过的唯一一本书。


1
有趣的是,我非常喜欢重构。您对此有意见吗?
djna,2009年

是的,我发现一切都显而易见,并且不喜欢Java。另外,请不要以我的回答说他的其他书籍是垃圾。

福勒的书的书皮内侧也有一张备忘单。确实非常适合入门,尤其是当您的下一个问题是箭头的方向时?
泰德·约翰逊

12
185页对于“备忘单”来说似乎有点多余!
cdyson37


9

对于快速参考和清晰简洁的示例,Allen Holub的UML快速参考非常出色:

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

(表的第一列中有很多箭头和指针的特定示例,第二列中有描述。)


我喜欢他的第一个例子,并希望他能与基本知识保持一致,但这是一个很好的阅读
killjoy 18/09/29

6

一个非常容易理解的描述是yuml的文档,其中包含类图,用例和活动的示例。


在此列表中,可能是最适合傻瓜的UML;注意:此站点还允许您免费绘制自己的UML(5)。
killjoy18年

5

被接受的答案是说,它缺少一些解释。例如,单向关联和双向关联有什么区别?在提供的示例中,两者存在。(箭头均为5)。

如果希望找到更完整的答案并有更多时间,这里有一个详尽的解释。



0

集合和组成有点混乱。但是,认为类似的组合是聚合的更强版本。那是什么意思?让我们举个例子:(集合)1.上教室和学生:在这种情况下,我们尝试分析他们之间的关系。一间教室 一个与学生的关系。这意味着教室由一个或多个学生组成。即使我们删除了课堂班,学生班也不需要销毁,这意味着我们可以独立使用学生班。

(组成)2.看一下页面和Book Class。在这种情况下,页面就是 本书,这意味着页面的集合构成了这本书。如果删除book类,则整个Page类将被销毁。这意味着我们不能单独使用页面的类。

如果您仍然不清楚这个话题,请观看这​​段简短的精彩视频,它更清楚地说明了汇总。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.