当前课程知识点:面向对象分析与设计 >  需求概述 >  用例之间的关系 >  用例之间的关系

返回《面向对象分析与设计》慕课在线视频课程列表

用例之间的关系在线视频

下一节:用例建模

返回《面向对象分析与设计》慕课在线视频列表

用例之间的关系课程教案、知识点、字幕

同学们 上节课我们介绍了用例模型

用例模型是面向对象用来描述系统的功能需求的

用例模型中有两个核心元素角色和用例

角色用来描述和系统交互的任何外部事物

主要有用户设备以及交互的其他的软件系统

用例则描述了系统的行为 也就是功能需求

今天我们介绍角色之间的关系以及用例之间的关系

首先我们介绍角色之间的关系

角色之间的关系比较简单 只有一种泛化关系

这张用例图是一个销售系统的用例图

我们可以看到其中有两个角色

分别是顾客和销售代理商

有四个用例 查看产品 订购产品 接受付款和计算销售折扣

我们可以看到 顾客和销售代理商都可以执行和触发前面三个用例

而只有销售代理商可以收取销售折扣 可以执行第四个用例

在这张图中 两个角色之间有大量公共的可以执行的用例

这两个角色之间有很多公共的特性

因此 我们把它抽取定义一种抽象的角色

在右边的图中给它定义为采购者

而建立顾客 销售代理和这个抽象的采购者之间一种关系

也就是泛化关系 也称之为继承关系

那么有了这样一种泛化关系之后

我们就可以把左边的用例图简化为右边的用例图

之前两个角色可以公共执行的用例都是通过新定义的抽象角色采购者来执行

而之前的两个角色和采购者之间建立泛化关系之后

也都可以通过泛化关系来触发执行这三个用例

对于销售代理商来讲

可以通过采购者继承前面三个用例

还可以独立的去执行计算销售折扣这个特有的用例

建立泛化关系之后 基本用例可以继承抽象用例所执行的用例

每个用例还可以去执行它所独有的一些用例

下面我们介绍用例之间的关系

用例之间第一种关系也是泛化关系

这张图是一个商店销售的用例图

其中这个商店有两个产品 书和CD

所以我们对顾客定义了两个用例 分别是查找书和查找CD

我们发现查找书和查找CD有很多公共的特性

比如有公共的事件流 公共的关系等等

所以我们定义了一个抽象用例叫查找产品

查找书和查找CD都和查找产品之间建立了一种泛化关系

也可以称之为继承关系

有了继承关系之后我们可以看到

顾客可以查找产品 而书和CD都继承于查找产品

所以顾客就可以去查找书 也可以去查找CD

其次我们将查找书和查找CD中一些公共的

比如说公共的用例关系 扩展点 事件流 前置条件后置条件等等

全部定义在查找产品中

而把每个用例独有的部分定义在每个用例里面

比如说我们查找书的时候通常根据书的作者 出版商 出版时间来查找

而我们来查找CD时一般通过唱片商 演唱者 作曲者 作词者来查找

通过定义泛化关系之后

我们把用例的公共行为提取到抽象公共用例中

从而支持后面对软件的复用

子用例可以继承哪些公共行为

每个子用例可以从基本用例中继承它的关系

后面我们会学习用例之间的其他两种包含关系和扩展关系

可以继承扩展点 前置条件 后置条件以及事件流

除了继承外 子用例还可以在父用例的基础之上增加新的特性

比如增加新的关系 扩展点 前置条件后置条件以及事件流

还可以对父用例中的一些特性进行重写

有两种是不能进行重写的 第一个是关系

比如父用例中定义了用例和其他用例之间有包含关系

这种关系不能去掉 也不能将其修改为别的例如扩展关系

也不能去修改它的扩展点

但可以对父用例中的前置条件后置条件和事件流进行重写

用例之间的第二种关系我们称之为包含关系

这张用例图中 顾客可以执行三种用例 分别是

变更雇员信息 查看雇员信息和删除雇员信息

这三个用例执行中都需要首先找到当前需要变更查看或者删除的雇员

也就是说这三个事件流中有一个公共的查找雇员的一段事件

我们将这个公共部分提取出来定义一个新的用例

叫做查找雇员信息

这个用例我们称之为包含用例

这个用例和原来的三个基本用例之间就有了一个包含关系

有了这个包含关系之后 当每一次角色也就是顾客来执行基本用例时

比如说执行查看雇员信息 这个用例执行过程中

它就会触发自动执行这个包含用例 也就是查找雇员信息这个用例

而且有了包含用例的关系之后 我们发现

每一次基本用例的执行是离不开包含用例的

如果没有包含用例 基本用例的执行是不完整的 是没有办法完成的

因此 在基本用例和包含用例中 我们可以看到

基本用例离不开包含用例 基本用例依赖包含用例

所以我们可以看到

包含关系本质上是在依赖关系的基础上扩展的

而且它的箭头是从基本用例指向包含用例的

下面我们介绍最后一种用例之间的关系 扩展关系

这张图是一个图书管理系统的用例图

它有个角色管理员 有三个用例分别是借书 还书和查找书

其中管理员执行还书用例的时候 通常情况下 用例可以执行结束

但是有些特殊情况 比如说你的书超期了或者说书损坏了

那么这种时候图书管理员就会对你进行罚款

所以我们定义了一个新的用例 称之为罚款用例

而罚款用例和还书用例之间建立一种关系 我们称之为扩展关系

有了扩展关系 当图书管理员在执行基本用例还书的时候

如果说扩展条件满足或者说执行到扩展点

也就是我们刚刚所说的超期或者书损坏

那么就会触发执行扩展用例 罚款

因此我们可以看到

扩展用例不是在基本用例每次执行的是都必然会执行

而是在基本用例执行到某个扩展点之后才会触发

扩展关系和我们之前介绍的包含关系是有区别的

我们进行一个对比分析

在包含关系中 我们定义包含用例

主要是为了把多个用例中的公共行为抽取出来定义为包含用例

然后建立基本用例和它之间的包含关系

建立包含关系之后 基本用例本身就不再完整

基本用例的每一次执行都离不开包含用例

而扩展关系则是在基本用例执行的某个扩展点

某个特殊条件下 才会触发和执行扩展用例

而基本用例本身是独立完整的 是可以独立执行结束的

这一点是和包含关系不同的

在设计用例图时 我们可以通过这一点来判断

是不是每次基本用例的执行都必须要执行到后面的用例

如果执行到就是包含关系

反之只有在基本用例执行到某个特殊情况下才会触发后面的用例

那它们就是扩展关系

同学们 今天我们有关用例的关系就介绍到这里

谢谢大家

面向对象分析与设计课程列表:

面向对象概述

-软件开发过程中的主要问题和好的解决方法

--软件开发过程中的主要问题和好的解决方法

--软件开发过程中的主要问题和好的解决方法

统一软件开发(RUP)

-RUP软件开发模型的特点

--RUP软件开发模型的特点

--RUP软件开发模型的特点

面向对象建模

-四个基本原则

--四个基本原则

--四个基本原则

-对象和类

--对象和类

--对象和类

-类之间的关系

--类之间的关系

--类之间的关系

需求概述

-用例模型

--用例模型

--用例模型

-用例之间的关系

--用例之间的关系

--用例之间的关系

-用例建模

--用例建模

--用例建模

分析与设计概述

-分析与设计概述

--分析与设计概述

--分析与设计概述

架构分析

-架构分析基本概念

--架构分析基本概念

--架构分析基本概念

-定义模型的高层组织结构

--定义模型的高层组织结构

--定义模型的高层组织结构

-确定分析机制、确定关键概念、创建用例实现

--确定分析机制、确定关键概念、创建用例实现

--确定分析机制、确定关键概念、创建用例实现

用例分析概述

-用例分析概述

--用例分析概述

--用例分析概述作业

-控制类

--控制类

--控制类

-用例行为和类的关系

--用例行为和类的关系

--用例行为与类的关系

识别设计类

-识别设计元素概述

--识别设计元素概述

--识别设计元素概述

-识别子系统及接口

--识别子系统和接口

--识别子系统及接口

描述运行态软件体系架构

-描述运行态软件体系架构

--描述运行态软件体系架构

--描述运行态软件体系架构

描述分布式系统架构

-描述分布式系统架构概述

--描述分布式系统架构概述

--描述分布式系统架构概述

用例设计

-用例设计描述

--用例设计描述

--用例设计描述

子系统设计

-子系统设计概述

--子系统设计概述

--子系统设计概述

类设计

-创建初始设计类、定义类操作方法

--创建初始设计类、定义类操作方法

--创建初始设计类、定义类操作方法

-定义类状态

--定义类状态

--定义类状态

-定义类之间的依赖关系、关联关系以及多重性设计

--定义类之间的依赖关系、关联关系以及多重性设计

--定义类之间的依赖关系、关联关系以及多重性设计

-定义类的泛化关系、解决用例冲突、非功能性需求

--定义类的泛化关系、解决用例冲突、非功能性需求

--定义类的泛化关系、解决用例冲突、非功能性需求

用例之间的关系笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。