目录
1、UML 定义
2、类图中每个类的构成
3、UML类图中箭头的含义
3.1、实线空心箭头
3.2、虚线空心三角箭头
3.3、 实线箭头
3.4、虚线箭头
3.5、尾部为空心菱形箭头 (也可没箭头)
3.6、尾部为实心菱形箭头 (也可没箭头)
4、结语
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 类图的结构,这样在后续的学习或工作中,遇到别人画的类图,起码能看懂是啥意思。我这里也是帮大家温故一下。