在下面的这篇文章中,将讲解我们平常常用的一种面向对象的画图方法,即统一建模语言UML(Unified Modeling Language)。
接下来开始进行讲解。
一、UML的含义
- 标准的建模语言(具有语言的规范)
- 促进沟通(各种图示表达规范)
- 支持系统构建(正向工程,反向工程)
二、UML的主要内容
1、UML的概念模型
UML具有一个完整的概念模型,提供了一套完整、全面的表达方法,其主要元素包括:①UML的基本构造块;②支配这些构造块如何放在一起的规则;③一些运用于整个UML的公共机制。
2、UML概念模型图例
UML概念模型 $ \begin{cases} 基本构造块\begin{cases} 事物:结构事物、行为事物、分组事物、注释事物 \\ 关系:依赖、关联、泛化、实现 \\ 图:用例图、类图、对象图、包图、交互图等 \end{cases} \\ 规则 \\ 公共机制\begin{cases} 规格说明 \\ 修饰 \\ 通用划分 \\扩展机制 \end{cases} \end{cases} $
下面依据概念模型中的这三大类进行一一讲解。
三、UML的基本构造块
在UML中可以将词汇划分为3中构造块,即3类词汇或基本元素:事物、关系和图。
1、UML中的事物
(1)UML中的四种事物
事物是对模型中最具有代表性的成分的抽象,可分为结构事物、行为事物、分组事物和注释事物。
1)结构事物
通常是模型的静态部分,描述概念的物理元素。主要有以下五种结构事物:
- 类
(class)
:与面向对象方法中类的概念一致。 - 接口
(interface)
:描述了一个类或构件的一个服务的操作集。 - 用例
(use case)
:代表了一个系统功能,是对一组动作序列的描述,系统执行这些动作将产生一个对特定的参与者(即系统用户)有价值而且可观察的结果。 - 构件
(component)
:描述的是系统中的软件物理事物。 - 节点
(node)
:是在运行时存在的物理元素,表示了一种可计算的资源。
2)行为事物
行为事物主要有:状态、交互。
3)分组事物
分组事物主要有:包。
4)注释事物
注释事物主要有:注解。
(2)UML中各种事物的图示法
依据上面对四种事物的描述,下面给出UML中各种事物的图示。
2、UML中的四种关系
UML中的四种关系是:依赖、关联、泛化、实现。
(1)依赖
两个模型元素中,有一个是独立的,一个是非独立的,独立的模型元素发生改变,会影响非独立的模型元素。
用带箭头的虚线来表示依赖关系。
如图所示:
(2)关联
关联是一种结构化的关系,指两个模型元素有联系。双向关联用一条实线来表示。
注意:关联关系有多重度,主要有: 0
、 1
、 0..1
、 0..*
、 1..*
。
如图所示:
值得注意的是,关联中有两种特殊的关联关系:组合和聚合。
如果是组合和聚合类型,则再加一个棱形符号。
如下图所示:
(3)泛化
是一般与特殊的关系,也就是继承的关系。用实线加空心三角号来表示。
如图所示:
(4)实现
实现关系是,一种模型元素保证另外一种模型元素的执行,该关系主要用在接口中。用一条实线来表示。
如图所示:
讲到这里,以下再给出一张完整的图来回顾这四种关系。
3、UML中的图形(五大类十种图)
(1)用例图
1)用例图的定义
用例图从用户角度描述系统功能,并指出各功能的操作者。
用例图显示若干角色或执行者 (actor)
以及这些角色与系统提供的用例之间的连接关系。用例图定义的是系统的功能需求。
2)用例图的基本构成
- 用例;
- 角色;
- 角色之间的关系(如果有,主要是泛化);
- 角色和用例之间的关系(单向关联或双向关联);
- 用例和用例之间的关系(包含、扩展、泛化)。
3)元素与元素之间的关系
include:
- include(包含关系),当两个或多个用例中共用一组相同的动作,可以将其抽出来作为一个独立的子用例,供多个基用例所共享。
- 基用例并非一个完整的用例,所以必须和子用例一起使用才够完整。
- include关系在用例图中使用带箭头的虚线表示(在线上标注
<<include>>
),箭头从基用例指向子用例。
extend:
- extend(扩展关系),对基用例的扩展,基用例是一个完整的用例,即使没有子用例的参与,也可以完成一个完整的功能。
- extend的基用例中将存在一个扩展点,只有当扩展点被激活时,子用例才会被执行。
- extend关系在用例图中使用带箭头的虚线表示(在线上标注
<<extend>>
),箭头从子用例指向基用例。
子用例和基用例的关系:
(泛化关系)子用例将继承父用例的所有结构、行为和关系。也就是说在任何使用基用例的地方都可以用子用例来代替。
(泛化关系)在用例图中使用空心的箭头表示,箭头方向从子用例指向基用例。
4)图示
(2)静态图:类图、对象图、包图
1)类图
①定义: 类图(class diagram)描述系统所有涉及到的类以及类和类之间的关系。
②类图的基本构成:
- 类(类名、属性和方法);
- 类和类之间的关系(依赖、关联、泛化、实现)。
2)对象图
①定义: 对象图是类图的实例,几乎使用与类图完全相同的标识,但两者之间又有一定的差别,如下图例所示。
②图例:
(3)行为图:状态图、活动图
1)状态图
①定义: 状态图(state chart diagram)描述系统涉及到的某个对象的所有状态以及状态和状态之间转换的事件。
②状态图的基本构成:
- 状态(圆角矩形);
- 状态的起点、终点;
- 状态之间转换的事件;
- 注解(有时会有)。
③图例:
2)活动图
①定义: 活动图(activity diagram)描述满足用例功能需求所要进行的活动以及活动间的约束关系。
②活动图的基本构成:
- 活动(注意符号与状态不同);
- 活动的起点、终点(终点有时有多个);
- 活动之间用箭头连接;
- 判定(有时会有,棱型框);
- 同步条(表示活动的分叉或汇合,包括水平、垂直两种);
- 泳道(表示活动的不同职责)。
③图例:
(4)交互图:顺序图、协作图
1)顺序图
①定义: 顺序图显示对象之间的动态合作关系。。
②顺序图的基本构成:
- 对象;
- 生命线(对象正下方的虚线,表示对象在一段时期内的存在) ;
- 窄矩形条(表示对象被激活,说明对象正在执行某种操作);
- 交互的消息(有顺序之分,消息其实就是接收对象的操作方法);
- 注解(有时会有);
- 可以转换成协作图。
③图例:
2)协作图
①定义: 协作图(callobaration diagram)和顺序图的作用一样,反映的也是动态协作。
②协作图的基本构成:
- 对象;
- 实线(对象之间的连接线,注意没有箭头) ;
- 交互的消息(有顺序之分,消息其实就是接收对象的操作方法);
- 注解(有时会有);
- 可以转换成顺序图。
③图例:
(5)实现图:构建图、部署图
1)构件图
**①定义:**描述代码构件的物理结构以及各构件之间的依赖关系。
②构件图的基本构成: 构件。
③图例:
2)部署图
①定义: 系统中硬件的物理体系结构。
②部署图的基本构成:
- 三维立方体表示部件;
- 节点名称位于立方体上部。
③图例:
四、写在最后
到这里,关于软件工程的体系知识就讲解结束啦!后面将会继续更新一些实践的内容。敬请期待!
🙋🙋🙋
同时,有不理解或有误的地方也欢迎评论区评论或私信我交流~
- 关注公众号 星期一研究室 ,不定期分享学习干货,学习路上不迷路~
- 如果这篇文章对你有用,记得点个赞加个关注再走哦~