51
1 第第第第第第第第第第 7.1 第第 7.2 第第第第第 7.3 第第第第第第第第第第 7.3 第第第第第第 第 7 第 第第第第第第第第第

7.1 概述 7.2 系统 设计 过程度 7.3 不同设计用例实现方案 7. 3 精华设计模型

Embed Size (px)

DESCRIPTION

第 7 章 面向对象的设计方法. 7.1 概述 7.2 系统 设计 过程度 7.3 不同设计用例实现方案 7. 3 精华设计模型. 面象对向的设计目标 设计分类 面向对象设计与分析 面向对象设计的基本原理 面向对象设计层次图. 7.1 概述. 面象对向的设计目标: 对 面象对向的需求分析的无缝过度 设计模型包含以包图表示的软件体系结构图,以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图及用以描述流程化处理过程的活动图。. 面象对向的设计分类:产品设计和类设计. 产品设计: - PowerPoint PPT Presentation

Citation preview

Page 1: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 1 页北京理工大学计算机系

7.1 概述 7.2 系统设计过程度 7.3 不同设计用例实现方案 7.3 精华设计模型

第 7 章 面向对象的设计方法

Page 2: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 2 页北京理工大学计算机系

7.1 概述面象对向的设计目标设计分类面向对象设计与分析面向对象设计的基本原理面向对象设计层次图

面象对向的设计目标:对面象对向的需求分析的无缝过度设计模型包含以包图表示的软件体系结构图,以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图及用以描述流程化处理过程的活动图。面象对向的设计分类:产品设计和类设计

产品设计 :产品设计的目标是建立系统与外部实体,包括和用户、进程之间的有效交互。注重过程的体系结构、进程间的通信、用户界面及类 / 对象的存储。

类设计:系统内部类的定义和它们间的关系。包括类的架构、属性、方法特征标记和语义。不直接与外部系统交互。如图

Page 3: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 3 页北京理工大学计算机系

远程进程 用户界面

类 类

DBMS

远程文件内部结构

外部结构

数据处理软件的内部和外部结构图

Page 4: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 4 页北京理工大学计算机系

面向对象分析( OOA )与面向对象设计( OOD )有如下关系: 1 ) OOA 识别和定义的类和对象,是一些直接反映问题空间和系统任务的,而 OOD 识别和定义对象则是附加,反映需求一种实现(对话层、任务管理层、数据管理层)。 2 ) OOA 与 OOD 分 别 在 不 同 的 抽 象 层 次 上 进行。 OOA 是独立于程序设计语言的,属于较高层次的抽象。初步的 OOD 同样在很大程度上与语言无关,但详细OOD 则依赖于程序设计语言。

从非面向对象分析到面向对象设计,应将一个非面向对象的需求说明快速转变为面向对象分析模型。

面向对象设计与分析

Page 5: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 5 页北京理工大学计算机系

• 抽象(过程,数据)• 封装• 继承• 消息• 组织方法(对象和属性、类及成员、整体与部分)• 功能分类• 组装结构• 实例连接• 消息连接

面向对象设计的基础—— OOA 得出的概念和关系

Page 6: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 6 页北京理工大学计算机系

面向对象设计的基本原理 1 ) 指出对象及其属性 2 ) 指出可能适用于对象的服务 3 ) 说明对象及服务 4 ) 确定将为对象提供实现描述的详细设计问题 5 ) 细化面向对象分析的工作,找出子类、消息 特性和其它详尽的细节 6 ) 表示与对象属性关联的数据结构 7 ) 表示与每个服务关联的过程细节

Page 7: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 7 页北京理工大学计算机系

•划分子系统•并发性设计•任务管理设计•设计用例实现方案•用户界面设计•数据管理设计 •系统间通信设计 •使用设计模式

7.2 系统设计

系统设计活动:

Page 8: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 8 页北京理工大学计算机系

划分子系统

所有元素共享某些公共性质可能协同完成一个功能可能驻留在一个硬件产品中它们可能由相同的类管理资源

•子系统构成的是一种责任或服务划分子系统依据的基本概念原则:

•服务提供一组可标识的操作

•服务完成特定的功能

例如:字处理文件管理生成三维识图压缩数字图像等等

•服务是分层提供的,层次与处理的外界可视性相关

Page 9: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 9 页北京理工大学计算机系

层次划分示意图例子

表示层 服务 A 服务 B 服务 C

应用层 服务 X 服务 Y

服务 n

服务 Z

数据准备层 服务 I 服务 J

服务 m

服务 K

数据存储层 .....

....

.

....

.

....

.

外界可视性

C/S 形式P2P 形式

C/S 形式P2P 形式

C/S 形式P2P 形式 层的接口

层的接口

层的接口

划分子系统

Page 10: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 10 页北京理工大学计算机系

C/S 形式 (Client/Server) P2P 形式 (Peer-to-Peer)

客户 / 服务器 (Client/Server) 方式:客户请求服务,服务器承接服务并完成服务,返回服务结果。服务是被动的,客户是主动的。服务器不需要知道客户是谁,客户必须知道对应的服务器 , 呈现主从方式。对等服务 (Peer-to-Peer) 方式:每一方既是请求服务方也是接受服务方,都可以承接服务并可以请求服务,不分主从随需要扮演必要的角色 , 服务是双向流动的。

两种服务方式:划分子系统

Page 11: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 11 页北京理工大学计算机系

分层设计步骤:1) 建立分层标准 ---- 怎样的层次组合方式2) 确定层次数量 ---- 层次总的数量要适中3) 层次命名 ---- 封装具有一致运行和管理模式的服务并命名4) 建立各层的内部结构 ---- 组织层内的服务访问方式5) 定义层接口 ---- 定义各层的交互方式和消息模式6) 评审设计 ---- 保证层之间的低耦合7) 迭代精化以上过程

Page 12: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 12 页北京理工大学计算机系

并发性设计并发的概念 : 各事务独立运作,执行顺序无依赖关系。

同步的概念 : 各事务独立运作,但执行顺序相互制约。

对象都是并发存在的:对象是在系统中各自独立的进程,是并发存在的,它们可以在同一个机器空间,也可以被分配到不同的机器空间例如 :

SafeHome 系统中的:传感器对象

电话对象是相互独立的并发对象,它们的动作无依赖顺序,可同时活跃在系统中

控制面板对象

Page 13: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 13 页北京理工大学计算机系

并发性设计

一个控制线程中的并发对象操作:在实际应用中,一组顺序执行的序列有可能是由若干对象的操作构成的,而这些对象有可能被分配到不同的机器空间。

关于控制线程概念:一组顺序执行的序列

对象 A操作 ai

对象 B操作 bj

对象 C操作 ck

...操作 ai操作 bj操作 ck

...

机器 X

机器 Y

并发设计必须考虑 :机器 X 与 Y 之间的通讯处理开销及带来的成本 控制线程

Page 14: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 14 页北京理工大学计算机系

营业部计算机营业部计算机营业部计算机ATM 机器

并发性设计

ATM 机器

一个控制线程中的并发对象操作例子

ATM 机器 业务对象读密码操作

联营计算机业务对象分理对应营业部操作

营业部计算机

业务对象密码验证操作

控制线程: 读密码 分理对应营业部 密码验证

密码验证事务为非同步方式

密码验证事务为同步方式

.....

.....

Page 15: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 15 页北京理工大学计算机系

任务管理设计设计系统中分散的对象,组成为独立并发的任务(大粒度对象)任务管理设计步骤 :

• 确定任务的特征

• 定义任务中所关联的对象

•集成任务中所关联的对象

任务初始化方式任务优先级任务关键度

任务名 ---- 任务对象名称描述 ---- 任务目的叙述优先级 ---- 低级、中级和高级服务 ---- 任务的一组操作协调 ----调用方式通信 ----I/O 方式

Page 16: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 16 页北京理工大学计算机系

技术支撑方案的设计:( 1 )取决于目标软件系统对公共技术服务的需求;( 2 )取决于设计人员对软件技术手段的把握和选取。

设计技术支撑设施:包括在系统中,需要考虑的数据存储、安全性、远程登陆等内容。

技术支撑方案应该为多个用例的软实现提供技术服务。所以,它应该成为整个目标软件系统中全局性的公共技术平台。当用户需求发生改变时,技术支撑平台应具有良好的稳定性。

设计技术支撑方案

Page 17: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 17 页北京理工大学计算机系

数据持久存储服务 设计数据持久存储服务的目的,是将目标软件系统中依赖于系统运行环境的数据存取部分于其它部分相分离。这样,既有利于软件的扩充、移植和维护,又简化了软件设计、编码和测试的过程。数据持久存储服务的设计包括:( 1 )定义数据格式。根据目标软件系统对数据存储的要求,考虑持久存储介质的特性,设计数据的存储格式。( 2 )定义数据存取操作。数据持久存储服务至少包含数据的存储和读取两种操作。

并发与同步控制服务 设计并发与同步控制服务的目的,是将目标软件系统中依赖于子系统运行环境的并发于同步控制部分和其它部分相分离,其它部分中有关并发与同步控制功能的实现均通过该服务来完成。

Page 18: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 18 页北京理工大学计算机系

数据管理设计

数据库系统的利用:通常,数据库系统可作为对象实体的管理工具。对象实体可以被数据库管理系统直接查询、插入、删除和修改。但对应属性的复杂操作需要方法的实现。

数据管理包括:管理对象属性和对应的属性操作

分离数据结构的操纵数据属性的操纵 高层需求

低层需求 数据库系统对应

类方法的实现数据管理设计方法:

Page 19: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 19 页北京理工大学计算机系

数据管理设计例如:

传感器文件 编号 类型 性能 ... ac-0013 ACPK 光敏感应 ... dc-0028 DCKH8 触点传导 ... ... ... ... ...

传感器属性的操纵

传感器结构的操纵

编号方法类型方法性能方法功能方法 ...各传感器实例 实现集

传感器类对应

对应 某数据库管理系统

Page 20: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 20 页北京理工大学计算机系

合约

系统间通信设计定义系统中服务之间的协作关系

系统中服务之间的协作关系:也叫做 “合约”包括:消息格式、访问的登记、注册权限合约的形式和内容:• 列出可被请求的服务• 制订合约履行的责任和操作• 建立合约表(协作表)• 协作图描述

客户子系统 服务器子系统

合约服务器子系统

合约服务器子系统

请求

请求请求

服务子系统之间协作模型

Page 21: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 21 页北京理工大学计算机系

建立合约表(协作表):

系统间通信设计

协作图描述例子:

约合 类型 协作者 类 操作 消息格式

控制面板 子系统 传感器

子系统

中心通信 子系统

•状态请求•赋值区域•测试状态•系统状态请求•警告周期状态检查的类型说明•请求警告通知•根据需求周期检查配置修改

在交互操作中,激活合约处理,查找协作表的合约来确定操作

Page 22: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 22 页北京理工大学计算机系

设计算法和数据结构类的属性和操作是对应的,所有的操作都会作用于属性

操作的类型:1 )对属性数据的直接操作。例如:加入、去除、格式化、判断选择2 )完成某算法步骤的操作3 )监控某对象,等待某控制事件出现的操作例如:•传感器类的“赋值”操作,将编号和类型赋给传感器的两个属性•系统类的“编程”操作,将电话号码、警告延迟、主人密码装入系统•系统类有“启动”和“关闭”系统的操作,将系统状态设为arm/disarm发消息给相关的设备对象

Page 23: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 23 页北京理工大学计算机系

使用设计模式在现代软件工程学中,设计要求尽量使用现有的设计模式设计模式的刻画包括:• 模式名字• 模式意图• 模式使用的条件、应对的问题和解决方案• 模式的类、责任和协作• 有效设计的原则• 例子和模板• 模式的交叉引用

设计模式的两种机制:继承 ----通过继承现存的设计模式,产生新的设计,原模式中的属性和操作也成为新模式中的一部分复合 ----通过聚合现存对象,以及现存的聚合模式,形成新的设计模式(黑盒方式)

黑盒方式是较好的模式复用方式

Page 24: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 24 页北京理工大学计算机系

用户界面设计的策略与步骤:( 1 )熟悉用户并对用户分类。( 2 )按用户类别分析用户的工作流程与习惯。( 3 )设计命令系统并进行优化。( 4 )设计用户界面的各种细节。( 5 )增加用户界面专用的类与对象。( 6 )利用快速原型演示,改进界面设计。

在需求分析阶段,要确定人机交互的属性和外部服务,而在设计阶段要给出有关人机交互的所有系统成分,包括用户如何操作系统、系统如何响应命令和系统显示信息的报表格式等。

用户界面设计

Page 25: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 25 页北京理工大学计算机系

面向对象的设计方法,采用基于 UML 的面向对象设计方法,将分析模型转换为设计模型。这一转换过程需要完成:( 1 )针对分析模型中的用例,设计实现方案;( 2 )设计技术支撑设施。支撑设施包括在系统中,需要考虑的数据存储、安全性、远程登陆等内容。( 3 )设计用户界面;( 4 )针对分析模型中的领域概念模型以及第( 2 )、( 3 )两个步骤引进新类,完整、精确地确定每个类的属性和操作,并完整地标示类之间的关系。

7.3 不同设计用例实现方案

Page 26: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 26 页北京理工大学计算机系

用例描述及用例图

领域概念模型

设计用例实施方案

设计技术支撑方案

设计用户界面精化设计模型

体系结构图

用例实现图

类图其它(状态图、活动图等)

分析模型

设计模型

设计师

面向对象的软件设计过程

Page 27: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 27 页北京理工大学计算机系

交互图描述对象之间的动态合作关系以及合作过程中的行为次序。 交互图常常用来描述一个用例的行为,显示该用例中所涉及的对象以及这些对象之间的消息传递情况。 交互图有顺序图和合作图两种形式。

交互图:包括顺序图和合作图交互图:包括顺序图和合作图

Page 28: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 28 页北京理工大学计算机系

顺序图顺序图:用来描述对象之间动态的交互关系,着重表现对象间:用来描述对象之间动态的交互关系,着重表现对象间消息传递的时间顺序。消息传递的时间顺序。UMLUML 的消息类型:的消息类型:(( 11 )简单消息()简单消息( Simple MessageSimple Message ):):用简单抽象的函数表示用简单抽象的函数表示对象之间的信息传播。一般情况下,可以把简单消息看做同步对象之间的信息传播。一般情况下,可以把简单消息看做同步消息。消息。(( 22 )同步消息()同步消息( Synchronous MessageSynchronous Message ):):对象发出的消息,对象发出的消息,必须等待消息处理过程结束,才能进行后续操作。必须等待消息处理过程结束,才能进行后续操作。(( 33 )异步消息()异步消息( Asynchronous MessageAsynchronous Message ):):对象发出的消息对象发出的消息,不必等待消息处理过程结束,即可进行后续操作。,不必等待消息处理过程结束,即可进行后续操作。(( 44 )返回消息()返回消息( Return MessageReturn Message ):):所发送消息的处理过程所发送消息的处理过程结束后的返回结果。结束后的返回结果。 辅助参见书辅助参见书 233233 页图页图

Page 29: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 29 页北京理工大学计算机系

合作图合作图:用于描述相互合作的对象间的交互关系和链接关系。

顺序图强调消息交互的时间序,而合作图则强调交互对象间的静态链接关系。

在合作图中,消息的内容包含名称、参数、返回值以及序列号,返回值和序列号都是可选的。

辅助参见书辅助参见书 234234 页页图图

合作图中最常用的消息执行顺序的编号方案有两种: 顺序法:用简单编号方案,从 1 开始,由小到大,顺序排列。 层次法:用小数点制编号方案,此时常常要求表示系统号、子系统号和模块号。 UML使用了小数点方案。

Page 30: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 30 页北京理工大学计算机系

边界类、实体类和控制类边界类:用于描述目标软件系统于外部环境之间的交互。通常在下面部分可能出现边界类:( 1 )界面接口。包括人机交互接口、输入 /输出接口。( 2 )外部接口。系统与外部系统、外部设备之间的数据传递和互操作。( 3 )环境隔离。系统与数据管理、运行环境、网络服务等保持独立的部分。实体类:表示目标软件系统中具有持久意义的信息项及其操作。通常只提供系统接口操作,并不涉及到系统业务逻辑流程。如异常事件、数据读写等。

控制类:用于协调、控制其它类共同完成用例规定的功能或行为。

Page 31: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 31 页北京理工大学计算机系

交互图的用例:订货系统(1)订单提交窗口对象发送“ prepare” 消息给订单对象。

(2)订单对象发送“ prepare” 消息给订单上的每个订单项对象。 (3) 每个订单项检查其对应的仓库货物:

◆ 如果检查结果为真,则订单项对象从对应的仓库货物中减去所订购的数量;◆ 否则,仓库要求一次新的进货。

Page 32: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 32 页北京理工大学计算机系

订货系统的顺序图[needsToRecorder=“true”] new

创建交付货物

[check=“true”] new

返回进货货物

[check=“false"] remove()

needsToRecorder()回授

订单提交窗口 订单项 仓库货物

对象check() 条件

订单prepare()

消息 迭代* prepare()

对象的生命线

Page 33: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 33 页北京理工大学计算机系

2*:prepare()

对象消息

3:check()4:[check==false]remove()

7:[check==true]new

1:prepare()

:订单提交窗口

:订单

: 交付货物

电视栏目 :订单项

5:needsToRecorder()

时序号

回授

:购进货物6:new

电视库存 :仓库货物

简单编号方案的合作图

Page 34: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 34 页北京理工大学计算机系

小 结 顺序图突出对象的执行时序,合作图能更清楚地表示对象之间的静态连接关系。 交互图擅长显示对象之间的合作关系,尽管它并不对这些对象的行为进行精确定义。如要描述一个用例中几个对象协同工作的行为时,交互图是一种有力的工具。 虽然交互图能清楚地显示消息机制,但当消息中有太多的条件或循环时,交互图就失去其简明性。交互图仅适用于条件判断和循环不太多的时序过程。 当行为比较简单时,交互图比较好;当行为比较复杂时,则应使用活动图。 如果想描述跨越多个用例的单个对象的行为,应当使用状态图。如果想描述跨越多个用例或多个线程的复杂行为,则应使用活动图。 最基本的选择原则是用哪种图更简明清楚则选用哪种图。“越简明,价值越大”。

Page 35: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 35 页北京理工大学计算机系

对设计模型的精化需考虑如下任务:( 1 )以顶层架构图为基础,精华目标软件系统的体系结构;( 2 )精化类之间的关系;( 3 )精化类的属性和操作;( 4 )针对具有明显状态转换特征的类,设计状态图;( 5 )针对比较复杂的类方法,设计活动图。

精化设计:就是对已经完成的静态结构模型(顶层框架图、类图)和动态行为模型(交互图)进行分析和优化,以生成高质量的设计模型。

7.4 精华设计模型

状态图 状态图有多种形式,以基于 David Harel 的状态表方法在 OO 技术中最为流行。状态图描述系统对象的动态行为,一般描述一个特定对象在其生命周期中的所有可能状态以及由于各种事件的发生而引起的状态转移。

Page 36: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 36 页北京理工大学计算机系

状态语法和转移语法状态语法和转移语法 状态之间的转移可带有标注,由三部分组成 (每一部分都可省略 ),其语法为: 事件名 [条件 ] / 动作名 状态图中的状态包含一个活动,由两部分组成 (每一部分也都可省略 ),其语法为: do / 活动名 动作与活动都是一种过程,都由订单对象中的方法来实现,但动作与转移关联,处理较快且不会被中断;活动与状态关联,处理时间较长且可以被事件中断。

Page 37: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 37 页北京理工大学计算机系

状态的转移条件状态的转移条件 转移中的事件表示输入条件:一个非真即假的逻辑判断。当且当条件为“真”时才发生转移。 当状态中的活动完成后,且当相应的输入事件发生时,转移才会发生;如转移上没有标明引发转移的事件,则表示状态中的活动一旦完成,转移立即发生。 在下例中,从检查状态出来三个转移,而且都标有条件。

Page 38: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 38 页北京理工大学计算机系

实例:订单对象的状态图实例:订单对象的状态图

[all items checked &&all items available]

收到货物[all items available] 发货

活动

do/initiatedelivery

发货状态/get first item

[all items checked &&some items not in stock]

取下一项[not all items checked]

开始

do/checkitem

检查状态

收到货物[some items not in stock] 转移

状态回授等待状态 已发货 状态

事件名 [条件 ]/ 动作名

do/ 活动名

Page 39: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 39 页北京理工大学计算机系

转移条件的互斥性转移条件的互斥性 对于一个给定状态,只能产生一个转移。因此从相同状态出来的、事件相同的几个转移条件是互斥的。 图中列出了从检查状态引出的三个条件。

如没有检查完所有项,则取下一项并回到检查状态继续检查。 如已检查完所有项,且都有足够的货物,则转移到发货状态。 如已检查完所有项,但有一些项缺货,则转移到等待状态。

Page 40: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 40 页北京理工大学计算机系

状态图的基状态状态图的基状态表示法表示法

do/checkitem

检查状态

等待状态

取消状态

do/initiatedelivery

发货状态

已发货 状态

取消状态

do/initiatedelivery

发货状态do/check

item

检查状态

等待状态

已发货 状态

发货状态基状态名

Page 41: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 41 页北京理工大学计算机系

并发状态并发状态图图

起点

拒绝 状态

已发货状态

取消 状态

终点

已确认状态付款确认 状态

等待 状态发货 状态检查 状态

Page 42: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 42 页北京理工大学计算机系

并发状态图并发状态图 (( 续续 )) 并发状态图由两个或多个并发子图组成,每个子图叫作一个并发段。在任何时刻,一个对象的状态是每个并发段中各取一个状态的组合。当对象离开并发段后,它又恢复成一个单一的状态。 如果并发子图中的一个状态首先完成,它将首先转入下一个状态。但是,如果异常事件发生,则进入唯一的异常状态。 当一个对象有几个相互独立的行为时,并发状态图可以方便地刻画它的行为。但一个对象的并发行为不应太多;如果太多,应将其状态图分细。

Page 43: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 43 页北京理工大学计算机系

精化体系结构精化体系结构继承关系:一个类的所有信息能被另一个类所共享的机制,就是继承。

基类

派生类 1 派生类 2

继承关系

-属性+方法

-属性+方法

-属性+方法

Page 44: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 44 页北京理工大学计算机系

依赖关系:用以描述两个模型元素(类、组合、用例等)之间的语义上的连接关系。类 B类 A

依赖关系-属性+方法

-属性+方法<<友元 >>

精化体系结构精化体系结构

精化体系结构精化体系结构关联关系:表示消息传递通道在整个对象的生命周期中稳定存在,它是依赖关系的强化。

车人-属性+方法

-属性+方法拥有1..* 0..*被拥有

关联关系

Page 45: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 45 页北京理工大学计算机系

聚集关系:表示消息传递通道在整个对象的生命周期中稳定存在,它是依赖关系的强化。

聚集关系

窗口

文本框 列表框

-属性+方法

-属性+方法-属性+方法

按钮-属性+方法

菜单-属性+方法

包含

0..* 0..* 0..* 0..*

精化体系结构精化体系结构

Page 46: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 46 页北京理工大学计算机系

构成关系构成关系:构成关系是聚集关系:构成关系是聚集关系的强化。的强化。整体类

部件类 1 部件类 2

1 1

1…n 1…n

构成关系

精化体系结构精化体系结构精化类之间的关系精化类之间的关系

在已获取的类图的基础上,研究类之间的关系:( 1 )根据连接的语义强度,将它们精确地判定为 UML的依赖、关联、聚合或构成关系之一。( 2 )确定连接的方向及参与连接的类的对象之间的数量对应关系。( 3 )根据软件重用的要求及软件结构简洁化、清晰化的要求,优化类之间的关系。

Page 47: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 47 页北京理工大学计算机系

精化类之间的关系 精化类之间的关系 例一 例一

EmploymentHistory

company employee

beginDate()

endDate()

-属性

-属性+方法-属性+方法

1..n 1..nemployer employee

company employee-属性+方法

-属性+方法

EmploymentHistorybeginDate()

endDate()

-属性

1..n1..n

1 1

精化

Page 48: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 48 页北京理工大学计算机系

精化类之间的关系精化类之间的关系 例二例二

Telephone+ dial()

+ hangup()

+ transmitVoice()

- dialTone

Fax+ dial()

+ hangup()

+ transmitVoice()

+ sendFax()

+ recvFax()

- dialTone

- mode

设 计 模 型 中 的 类

被 重 用 的 类

commMachine+ dial()

+ hangup()

+ transmitVoice()

- dialTone

Fax+ sendFax()

+ recvFax()

- mode

Telephone

公 共 父 类

Page 49: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 49 页北京理工大学计算机系

活动图基本概念活动图基本概念

从概念层看,活动表示需要由人或计算机来完成的任务。图中描述了“人找饮料喝”这一过程。 从说明层或实现层看,活动表示类中的方 法。图中描述了名字为“人”的对象类中一个关于“找饮料喝”的方法。

来源 : 活动图主要来源于 Jim Odell 的事件图、SDL 状态建模技术和 Petri 网技术。

活动图的核心符号是活动,通过连接将活动组成活动图。

Page 50: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 50 页北京理工大学计算机系

活活动动图图示示例例

[没有可口可乐 ]判定活动

[找到可 口可乐 ]

活动

[找到咖啡 ][没有咖啡 ]

同步条件找饮料

将咖啡放到 过滤器中 取一听可口可乐加水到容器中 取出咖啡杯

熄灭咖啡炉 点燃咖啡炉

把过滤器放到咖啡炉上

冲调咖啡终点

喝饮料倒咖啡

判断条件

Page 51: 7.1  概述   7.2  系统 设计 过程度   7.3   不同设计用例实现方案   7. 3   精华设计模型

第 51 页北京理工大学计算机系

活动的活动的元模型元模型 活动的元模型基于 SADT 技术,它包含五个元 素: 输入,输出,支持,控制和活动。

活 动

控 制

输 入 输 出

支 持