我最近一直在学习UML,并在类之间用普通的箭头绘制简单的图,但我知道这还不够。还有很多其他的箭头:概括,实现等等,这些对图表读者有意义。
是否有一个很好的资源可以解释每个箭头(普通,普通,虚线,钻石填充,钻石)?
这将是最好的,如果它将为他们提供一些代码示例。
我最喜欢的UML“小抄”是Martin Fowler的UML蒸馏。这是我读过的唯一一本推荐他的书。
以下是Visual Studio 2015文档中的一些解释:
UML类图:参考: https://learn.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2015/modeling/uml-class-diagrams-reference
5: 协会:两个分类器成员之间的关系。 5: 聚合:表示共享所有权关系的关联。的 owner角色的Aggregation属性被设置为共享。 5 b: 作文:表示整体-部分关系的关联。< >强聚合 owner角色的属性被设置为复合 9: 泛化:特定分类器从一般分类器继承部分定义 分类器。通用分类器位于连接器的箭头端。属性、关联和 操作由特定的分类器继承。使用继承工具创建一个
5: 协会:两个分类器成员之间的关系。
5: 聚合:表示共享所有权关系的关联。的 owner角色的Aggregation属性被设置为共享。
5 b: 作文:表示整体-部分关系的关联。< >强聚合 owner角色的属性被设置为复合
9: 泛化:特定分类器从一般分类器继承部分定义 分类器。通用分类器位于连接器的箭头端。属性、关联和 操作由特定的分类器继承。使用继承工具创建一个
13: 进口:包之间的关系,表示一个 .包包含另一个包的所有定义 14: 依赖:依赖分类器的定义或实现可能会改变,如果 修改箭头端分类器 .输出说明
13: 进口:包之间的关系,表示一个
14: 依赖:依赖分类器的定义或实现可能会改变,如果 修改箭头端分类器
15: 实现:类实现接口定义的操作和属性。 使用继承工具在类和接口之间创建一个实现 16: 实现:相同关系的另一种表示。标签上的 . .
15: 实现:类实现接口定义的操作和属性。 使用继承工具在类和接口之间创建一个实现
16: 实现:相同关系的另一种表示。标签上的
UML类图:指南: http://msdn.microsoft.com/library/dd409416%28VS.140%29.aspx
关联的属性 聚合:在连接器的一端显示为菱形。你可以用它来 表示聚合角色的实例拥有或包含其他角色的实例 是通航:如果只有一个角色为真,则在可导航方向上出现一个箭头。你可以使用 这表示软件中链接和数据库关系的可导航性
关联的属性
聚合:在连接器的一端显示为菱形。你可以用它来 表示聚合角色的实例拥有或包含其他角色的实例
是通航:如果只有一个角色为真,则在可导航方向上出现一个箭头。你可以使用 这表示软件中链接和数据库关系的可导航性
泛化意味着专门化或派生类型继承属性, 操作,以及一般类型或基本类型的关联。一般类型出现在箭头处 .关系结束 实现:实现意味着类实现了属性和指定的操作 接口。 .接口位于连接器箭头端
实现:实现意味着类实现了属性和指定的操作 接口。
如果你还有其他问题,请告诉我。
Allen Holub的《UML quick reference》非常优秀,它提供了清晰简洁的示例,便于快速参考:
http://www.holub.com/goodies/uml/
(在表的第一列中有相当多关于箭头和指针的具体示例,在第二列中有描述。)
一个非常容易理解的描述是yuml的文档,其中有类图、用例和活动的示例。
一个不错的小抄(http://loufranco.com/wp-content/uploads/2012/11/cheatsheet.pdf):
它涵盖了:
并提供了一些示例。
被接受的答案,它缺少一些解释。 例如,单向关联和双向关联之间的区别是什么?在提供的示例中,两个做都存在。(箭头中都是5)
如果想要一个更完整的答案,并且有更多的时间,在这里是一个彻底的解释。
我认为这些图片是可以理解的。
如果你更喜欢MOOC,我推荐一门免费的课程,它教你大多数UML图的所有进出,这门课程来自Udacity: https://www.udacity.com/course/software-architecture-design--ud821
如果你对这个话题仍然不清楚,请观看这个精彩的短视频,它更清楚地解释了聚合。
https://www.youtube.com/watch?v=d5ecYmyFZW0