当前课程知识点:面向对象分析与设计 >  用例分析概述 >  控制类 >  控制类

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

控制类在线视频

控制类

下一节:用例行为和类的关系

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

控制类课程教案、知识点、字幕

同学们 今天我们继续讲授面向对象分析与设计的第十四讲——用例分析(二)

在上节课里边 我们介绍了用例分析 它的活动的目的

用例分析的步骤 第一步 补充用例规约

第二步 识别分析类 在识别分析类里边 我们介绍了分析类主要有三种

分别是边界类 实体类和控制类

上节课 我们已经介绍了如何来识别边界类以及实体类

那么这节课 我们接着来讲如何来识别控制类

什么是控制类呢

控制类描述了用例的行为是如何组织起来的

也就是说 控制类描述了用例行为里边的这些活动

是如何把它组织和管理的

一般来讲 对于一个用例来讲 我们可以把它识别定义一个控制类

比如说 通过一个控制类我们来组织协调我们之前的边界类实体类

来共同完成用例的行为

所以 对于普通的用例来讲 一个用例我们需要识别对应的一个控制类

当然也有意外情况 如果这个用例太复杂

也就是说它需要管理协调的边界类和实体类很多

它的控制逻辑很复杂

那么也有可能我们一个用例会定义两个或者更多的控制类

当然 我们后边也要讲 也有特殊情况

比如说这个用例的控制结构可能很简单

他只是简单地把实体类的数据提交或者转交给边界类

然后提交给最终的角色

如果这种情况下 我们的控制类可能不需要存在

那么我们可能不需要定义他的控制类

直接让边界类从实体类里获取数据就可以了

但是 多数情况下是从一个用例里边 我们定义一个控制类

当然 这个控制类的描述方式

我们可以看见是一个圆圈上面呢加了一个箭头

这当然是Rational rose独有的或者它自己定义的一种表示方式

那么从这张图中 我们可以看到

控制类在整个类图里边 它处于最核心的

比如说用流行话讲 在C位

我们可以看到边界类和它有关系 实体类和他有关系

它处于整个类图的中心位置

它来组合协调其它的这些类 共同来实现用例的行为

如何来找到这些控制类呢

我们可以从用例图里边来找

对于一个用例 我们来定义对应的一个控制类

那么刚才我们也讲了 如果是复杂的用例

我们需要定义两个或者更多的控制类

一般定义一个 这样的话我们可以总结一下

我们可以从一个用例图里边分别识别出它的分析类

那么分析类里边主要就包括有三类

边界类 实体类和控制类

对于边界类来讲 根据它所交互的角色的不同

又可以把它分为用户接口的边界类

设备的边界类和外部系统或者系统接口的边界类

在我们这个例子里边 我们是一个课程教学系统里边

我们识别出来的边界类分别有

跟用户交互的课程注册表单这样一个边界类

另外呢 需要访问课程目录遗留数据库

所以有一个边界类叫课程目录系统这样的一个边界类

第二个呢 就是实体类 我们说 实体类是用来储存信息的

在我们这个例子里边 实体类有学生 有课程计划还有开设课程

第三个呢 是控制类 用来组织协调管理其它类的

对于每个用例 我们可以定义一个控制类

所以这个例子里边 我们对于课程注册这个用例

我们定义了他的控制类就叫注册控制器这样一个控制类

在识别完分析类以后

我们还要进一步的把用例的行为分配给每一个分析类

比如说我们要定义每一个分析类的职责

如何来把用例的行为分配给每一个分析类呢

我们同样 还要从用例的事件流里边

在事件流里边 描述了这个用例的执行过程

所以我们从事件流里边要去识别对应的分析类

然后我们把用例的职责

也就是事件流里的定义的用例需要做的活动分配给对应的分析类

然后我们通过建模这个分析类的对象之间是如何相互协作的

我们一般采用时序图或者通讯图的方式来描述这些类和对象之间的协作模式

通过这样一种协作 我们就可以描述

整个用例的行为是如何通过这些分析类的对象

他们之间的交互来实现的

也就是说 我们把用例的行为来分配给对应的分析类

在分配职责的时候 我们有一些基本的原则或者叫指南

基本的指南来讲呢 对于边界类

我们把需要和角色通信的这些职责分配给边界类

也就是说 接触角色的输入的 数据的 或者说命令的这些

和像角色输出的命令和数据的都放在边界类里边

第二个 实体类 当然了

它的职责就是对数据的存储 管理和封装

都放在实体类里边

最后一个就是组织业务流程的

负责管理协调其它类之间的行为的

把这样一个职责分配给控制类

也就是说我们根据类的职责 分析类的类型

给它分配对应的职责

在分配的时候 我们说在面向对象的情况下

我们通常把数据和对数据的操作分配在同一个类里边

也就是说在一个类里边

有它所需要的的数据和对数据执行的职责或者操作

但是有时候也有特殊情况 比如说

多个类需要使用到相同的数据

在这种情况下 我们的设计方式 策略可以有以下几种

第一种 我们把这个数据分配给某个类

然后其它类需要和它共享

或者说使用到相同数据的其它类和这个类之间建立一种关联关系

通过关联关系 它去请求 运用到这个数据类里边去获取数据

第二种方式 我们可以去创建一个新的类

把数据交给这个新的类进行存储或者管理

那么所有需要访问这个数据的类都和新建的这个类之间建立关联关系

然后通过新建的这个类对数据进行访问和操作

那么最后一种方式呢 是把职责分配给控制类

然后增加控制类对这个数据的相应的操作职责

对于这个类的对象

我们需要采用时序图或者通信图来描述对象之间的协作关系

我们在这个时序图或者通信图里边 我们描述了它们是相互协作的

在通信图里边 我们会定义两个类的对象以及它们之间的消息方向

以及它所接收到的消息

我们注意到这个消息是有方向的

它从客户端到这个供应者之间进行请求

这里边是它的请求消息

根据这样一个请求消息 我们可以判断

供应者这个类的对象 它是需要负责接收到这个消息的

所以在供应者这个类的对象里边 它就有这样一个职责

来对它所接收到的消息进行处理

也就是说在供应者这个类里边

需要提供一个处理所接收到的消息

执行响应所接收到的消息的操作

这是我们教学管理系统里边的一个例子

我们描述了我们前边所识别出来的对应的一些分析类

以及以通信图的方式描述了这些类与对象之间的消息协作关系

在用例分析过程中 不是一次迭代完成的

对于复杂用例来讲 可能一次迭代并不能实现对这个用例的完整分析

我们可能需要有多次迭代

同样的 对于一个复杂的用例来讲

我们说事件流里边 它除了基本流

可能还有若干个可选流

而且这些可选流可能是交织在一起的

就像我们PPT里 最左边所绘制的

所以我们需要对基本流里边 在分析的时候

我们可能对每一个流 除基本流以外的每一个可选流

都要进行分析 然后绘制它的通信图或者时序图

来描述它的事件流是如何通过对象之间的交互来完成的

这个通信图呢

我们可以看见这个通信图和时序图它二者是等价的

但是它各自表现形式不一样

他各自又有自己的侧重点

对于通信图来讲 它重点描述一个对象会和哪些对象之间有关系

也就是说 在通信图上 我们可以清楚地看见

一个对象 它和其它哪些对象之间有关系

他们的关系模式是怎样的

所以在通信图里边 他可以描述

如果一个对象被修改了 那么和我相关的其它对象可能或者说有可能都会受到影响

所以通信图呢适合我们在设计阶段采用头脑风暴的方式

我们采用通信图的方式更容易进行用例的分析

而时序图是以时间为主轴 描述了用例对象之间它的相互传输的消息序列

时序图更好地帮助我们理解整个对象之间的交互流程

它是如何一步步发生的

时序图可以描述实时系统的一些实时约束

也可以描述复杂对象之间的一些交互流程

好了 我们今天呢 我们介绍了用例分析里的第三类分析类——控制类

然后我们描述了时序图和通信图来描述这些对象之间的协作来实现用例的行为

也就是说我们如何把用例行为分配给我们所识别的这些分析类

最后我们对比了通信图和时序图它二者之间的区别

谢谢大家

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

面向对象概述

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

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

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

统一软件开发(RUP)

-RUP软件开发模型的特点

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

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

面向对象建模

-四个基本原则

--四个基本原则

--四个基本原则

-对象和类

--对象和类

--对象和类

-类之间的关系

--类之间的关系

--类之间的关系

需求概述

-用例模型

--用例模型

--用例模型

-用例之间的关系

--用例之间的关系

--用例之间的关系

-用例建模

--用例建模

--用例建模

分析与设计概述

-分析与设计概述

--分析与设计概述

--分析与设计概述

架构分析

-架构分析基本概念

--架构分析基本概念

--架构分析基本概念

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

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

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

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

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

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

用例分析概述

-用例分析概述

--用例分析概述

--用例分析概述作业

-控制类

--控制类

--控制类

-用例行为和类的关系

--用例行为和类的关系

--用例行为与类的关系

识别设计类

-识别设计元素概述

--识别设计元素概述

--识别设计元素概述

-识别子系统及接口

--识别子系统和接口

--识别子系统及接口

描述运行态软件体系架构

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

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

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

描述分布式系统架构

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

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

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

用例设计

-用例设计描述

--用例设计描述

--用例设计描述

子系统设计

-子系统设计概述

--子系统设计概述

--子系统设计概述

类设计

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

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

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

-定义类状态

--定义类状态

--定义类状态

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

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

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

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

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

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

控制类笔记与讨论

也许你还感兴趣的课程:

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