如果你看不懂别人画的 UML 类图,看这一篇文章就够了
1、UML 定义
统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。UML 是面向对象设计的建模工具,独立于任何具体程序设计语言。
可以帮助我们表示软件的结构:不同的模块、类和对象如何相互交互,以及它们之间的关系是什么。
UML 经常与面向对象的设计结合使用,但它具有更广泛的适用范围。
在 UML 中,我们可以定义系统的结构和行为,并且可以通过图表可视化全部或者部分模型。有两种类型的图表:
结构图用于表示系统的结构。有许多类型的结构图,但我们只讨论类图。对象图、包图和组件图均类似于类图。
行为图用于描述系统的行为。交互图是行为图的子集,用于描述系统的不同组件之间的控制流和数据流。在行为图中,顺序图广泛用于面向对象的设计中。
类图是面向对象设计和开发阶段中使用最多的图类型。
类图是一种结构图,用于说明类的结构及类之间的关系。
如图 1-1 所示:
图 1-1
类图用于描叙类在应用程序中的结构非常有用。大多数时候,仅仅查看结构就足以了解类如何交互,但有时这还不够。
那么这个时候,我们可以使用行为图和交互图,其中顺序图用于描叙类和对象的交互。让我们使用顺序图来显示 Car 对象和 Vehicle 对象如何在继承和多态示例中进行交互,如图 1-2 所示:
图 1-2
2、类图中每个类的构成
类图中,每个类由 3 个部分组成,上面的是类名,中间的是属性,下面的是方法。
属性和方法可以用修饰符修饰:
加号(+)表示 public;
减号(-)表示 private;
井号(#)表示 protected
3、UML 类图中箭头的含义
3.1、实线空心箭头
含义: 泛化=继承泛化是一种一般与特殊、一般与具体之间关系的描述,具体描述建立在一般描述的基础之上,并对其进行了扩展。
3.2、虚线空心三角箭头
含义: 实现
实现是一种类与接口的关系,表示类是接口所有特征和行为的实现,在程序中一般通过类实现接口来描述。
3.3、 实线箭头
含义: 关联
表示类与类之间的联接,它使一个类知道另一个类的属性和方法,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的。java 中一个类的全局变量引用了另一个类,就表示关联了这个类,A 类的属性引用了 B 类。
3.4、虚线箭头
含义: 依赖
是一种使用的关系,即一个类的实现需要另一个类的协助。java 中,方法参数需要传入另一个类的对象,就表示依赖这个类。如图中所示 A 类中的方法参数需要传入 B 类的对象。
3.5、尾部为空心菱形箭头 (也可没箭头)
含义: 聚合
上图中的 Car 类与 Engine 类就是聚合关系(Car 类中包含一个 Engine 类型的成员变量)。由上图我们可以看到,UML 中聚合关系用带空心菱形和箭头的直线表示。
聚合关系强调是“整体”包含“部分”,但是“部分”可以脱离“整体”而单独存在。比如上图中汽车包含了发动机,而发动机脱离了汽车也能够单独存在。
3.6、尾部为实心菱形箭头 (也可没箭头)
含义: 组合
组合关系与聚合关系间的最大不同在于:这里的“部分”脱离了“整体”便不复存在。
4、结语
在 UML 类图中,常见的就是六种关系:泛化(Generalization),实现(Realization),关联(Association),依赖(Dependency),聚合(Aggregation),组合(Composition)。
这篇文章主要想帮助大家了解一下 UML 类图的结构,这样在后续的学习或工作中,遇到别人画的类图,起码能看懂是啥意思。我这里也是帮大家温故一下。
版权声明: 本文为 InfoQ 作者【跟着飞哥学编程】的原创文章。
原文链接:【http://xie.infoq.cn/article/faf6f4abcba73a094f7be379d】。文章转载请联系作者。
评论