我是荔园微风,作为一名在IT界整整25年的老兵,在windows平台上进行面向对象编程开发时,UML真的是一个绕不过去的东西,尤其是其中的图,所以今天重点来讲讲UML中的13种图。
但问题是,类似文章很多,但由于表述过于深奥,很多读者莫名其妙,这里我要说明的是,我这篇文章绝对不会是讲深奥的东西,而是讲最实用的东西。本文的内容不仅对正在学习的大学生有帮助,还对使用C#编程的程序员有帮助。
UML在对于面向对象编程中,在Windows平台下,最典型的使用场景就是在C#编程和JAVA编程中,特别是开发业务应用系统中,用到的是最多。热门程度最高的时候就是2000年至2008年之间,一度是软件学院本科生学习的标配课程,是必学的。
在看13种图之前,要先要来看看常见的UML关系有哪些。在UML类图中,常见的有以下几种关系::
1.泛化(Generalization),
2.实现(Realization)
3.关联(Association)
4.聚合(Aggregation)
5.组合(Composition)
6.依赖(Dependency)
下面具体讲讲:
1. 泛化(Generalization)
【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。例如:猫科与老虎的继承关系。
【箭头指向】:带三角箭头的实线,箭头指向父类
2. 实现(Realization)
【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现.
【箭头指向】:带三角箭头的虚线,箭头指向接口
3. 关联(Association)
【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
【代码体现】:成员变量
【箭头及指向】:带普通箭头的实心线,指向被拥有者
上图中,老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生。
下图为自身关联:
4. 聚合(Aggregation)
【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。
聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
【代码体现】:成员变量
【箭头及指向】:带空心菱形的实心线,菱形指向整体
5. 组合(Composition)
【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。
组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。
【代码体现】:成员变量
【箭头及指向】:带实心菱形的实线,菱形指向整体
6. 依赖(Dependency)
【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖。例如:人依赖食物。可以有包含、扩展等关系。
【代码表现】:局部变量、方法的参数或者对静态方法的调用
【箭头及指向】:带箭头的虚线,指向被使用者
各种关系的强弱顺序:
泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
下面这张UML图,比较形象地展示了各种类图关系:
好,知道这几种关系后,接下来开始看13种UML图。
UML的13种图分为结构图(静态)和行为图(动态)两大类,这句话很重要。如下:
结构图:
1.类图;2.对象图;3.构件图;4.部署图;5.组合结构图;6.包图
行为图:
1.用例图;2.活动图;3.状态机图;4交互图(交互图又包括顺序图、通信图、交互概观图、定时图)
好,记住了吗,然后往下细看,我们一种图一种图来分析。
结构图:
1.类图,描述类、类的特性以及类之间的关系。
2.对象图,描述一个时间点上各个对象的快照。
3.构件图,描述一组构件间的依赖与连接。构件是一个模块化元素,隐藏了内部的实现,对外提供一组外部接口。
4.部署图,描述在各个节点上的部署,展示系统中软、硬件之间的物理关系。
5.组合结构图,用于显示分类器(类、构件、用例等)的内部结构。
6.包图,对语义联系紧密的事物进行分组。
行为图:
1.用例图,描述用例、参与者及其关系。利用图形描述系统与外部系统及用户的交互,用图形描述谁将使用系统,用户期望用什么方式与系统交互。
2.活动图,描述过程行为与并行行为。
3.状态机图,描述对象状态的转移。
4.1交互图(顺序图),这个图一定要重点记住,它还有一个名字叫序列图。这个很特别,一定要记住。描述对象之间的交互(消息的发送与接收),重点在于强调顺序,反映对象间的消息发送与接收。
4.2交互图(通信图),描述对象之间的交互,重点在于连接。
4.3交互图(交互概观图),属于一种顺序图与活动图的混合。
4.4交互图(定时图),描述对象之间的交互,重点在于给出消息经过不同对象的具体时间。
作者简介:荔园微风,1981年生,高级工程师,浙大工学硕士,软件工程项目主管,做过程序员、软件设计师、系统架构师,早期的Windows程序员,Visual Studio忠实用户,C/C++使用者,是一位在计算机界学习、拼搏、奋斗了25年的老将,经历了UNIX时代、桌面WIN32时代、Web应用时代、云计算时代、手机安卓时代、大数据时代、ICT时代、AI深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。