我最近一直在学习UML,并且用普通的箭头在类之间绘制简单的图表,但我知道这还不够。还有很多其他类型的箭头:泛化、实现等等,这些对于图表读者来说都有特定的含义。
我能否得到每种箭头(普通箭头、实线箭头、虚线箭头、菱形填充箭头、菱形箭头)的解释呢?
最好能够附带一些代码示例。
以下是来自Visual Studio 2015文档的一些解释:
5: 关联: 两个分类器成员之间的关系。
5a: 聚合: 表示共享拥有关系的关联。所有者角色的聚合属性设置为共享。
5b: 组合: 表示整体部分关系的关联。所有者角色的聚合属性设置为组合。
9: 泛化: 特定分类器继承其定义的一部分来自一般分类器。一般分类器位于连接器的箭头端。特定分类器继承属性、关联和操作。使用继承工具在两个分类器之间创建泛化。
13: 导入: 包与包之间的关系,表示一个包包含另一个包的所有定义。
14: 依赖: 如果箭头末端的分类器发生变化,则其所依赖的分类器的定义或实现可能会改变。
15: 实现: 类实现了接口定义的操作和属性。使用继承工具在类和接口之间创建一个实现关系。
16: 实现: 相同关系的另一种呈现方式。棒棒糖符号上的标签标识了接口。
UML 类图:指南: http://msdn.microsoft.com/library/dd409416%28VS.140%29.aspx
关联属性
聚合: 在连接器的一端出现为菱形形状。您可以使用它来表示聚合角色拥有或包含其他实例。
可导航性: 如果只对一个角色为真,则会在可导航方向上出现箭头。您可以使用此功能来表示软件中的链接和数据库关系的可导航性。
泛化: 泛化意味着特定或派生类型继承了通用或基本类型的属性、操作和关联。一般类型出现在箭头末端。
实现: 实现意味着一个类实现了接口指定的属性和操作。接口位于连接器的箭头端。
如果您有更多问题,请让我知道。
一个非常好的备忘单 (http://loufranco.com/wp-content/uploads/2012/11/cheatsheet.pdf):
它覆盖了以下内容:
并提供了一些示例。
我最喜欢的UML“备忘单”是UML Distilled,作者是Martin Fowler。这是他的书中唯一一个我推荐阅读的。
为了快速参考以及清晰简洁的示例,Allen Holub的UML Quick Reference是非常出色的:
http://www.holub.com/goodies/uml/
(第一列的表格中有很多箭头和指针的具体示例,并在第二列中进行了描述。)
聚合和组合有点混淆。然而,可以认为组合是聚合的更强版本。这是什么意思呢?
我们来举个例子:
(聚合)
1.拿一个教室和学生为例:
在这种情况下,我们试图分析它们之间的关系。一个教室具有与学生的关系。这意味着教室由一个或多个学生组成。即使我们删除了教室类,学生类也不需要被破坏,这意味着我们可以独立使用学生类。