87
UML UML 面面面面面面面面面面 面面面面面面面面面面 面面面面 面面面面 面面 面面 面面面面面面面面68668334 68668334 面面面面面面面面[email protected] [email protected]

UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

  • Upload
    isabel

  • View
    297

  • Download
    0

Embed Size (px)

DESCRIPTION

软件工程. UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: [email protected]. UML 面向对象的分析与设计. 统一建模面向对象分析方法概述 UML 静态建模 UML 动态建模. §1 UML 概述. 1 、 UML 概述 统一的建模语言 ( UML ) 已经在企业中广泛使用 它把 Booch 、 Rumbaugh 和 Jacobson 等各自独立的 OOA 和 OOD 方法中最优秀的特色组合成一个统一的方法。 在 UML 中用 5 种不同的视图来表示一个系统,这些视图从不同的侧面描述系统。 - PowerPoint PPT Presentation

Citation preview

Page 1: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

UMLUML面向对象的分析与设计面向对象的分析与设计

授课教师授课教师::李梁李梁联络电话:联络电话: 6866833468668334

电子邮件:电子邮件: [email protected]@cqit.com.cn

Page 2: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

UML 面向对象的分析与设计

•统一建模面向对象分析方法概述统一建模面向对象分析方法概述•UMLUML静态建模静态建模•UMLUML动态建模动态建模

Page 3: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

§1 UML 概述11 、、 UMLUML 概述概述• 统一的建模语言统一的建模语言 ((UMLUML)) 已经在企业中广泛使用已经在企业中广泛使用• 它把它把 BoochBooch 、、 RumbaughRumbaugh 和和 JacobsonJacobson 等各自独立的等各自独立的 OOOO

AA 和和 OODOOD 方法中最优秀的特色组合成一个统一的方法。方法中最优秀的特色组合成一个统一的方法。• 在在 UMLUML 中用中用 55 种不同的视图来表示一个系统,这些视种不同的视图来表示一个系统,这些视

图从不同的侧面描述系统。图从不同的侧面描述系统。• 每一个视图由一组图形来定义。每一个视图由一组图形来定义。① 用户模型视图用户模型视图 : :从用户角度来表示系统从用户角度来表示系统。它用。它用使用实使用实

例例 (use case)(use case) 来建立模型,用它来描述由用户方面的可来建立模型,用它来描述由用户方面的可用的场景。用的场景。

② 结构模型视图结构模型视图::从系统内部来看数据和功能性从系统内部来看数据和功能性。即对。即对静态结构静态结构 (( 类、对象和关系类、对象和关系 )) 模型化。模型化。

Page 4: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

③行为模型视图行为模型视图::这种视图表示了系统这种视图表示了系统动态和行动态和行为为。它还描述了在用户模型视图和结构模型视。它还描述了在用户模型视图和结构模型视图中所描述的图中所描述的各种结构元素之间的交互和协作各种结构元素之间的交互和协作。。

④实现模型视图实现模型视图::将系统的结构和行为表达成为将系统的结构和行为表达成为易于转换为实现的方式易于转换为实现的方式。。

⑤环境模型视图环境模型视图::表示系统实现表示系统实现环境的结构环境的结构和行和行为。为。

• 通常,通常, UMLUML 分析建模分析建模的着眼点放在的着眼点放在系统的用户系统的用户模型和结构模型模型和结构模型上,而上,而 UMLUML 设计建模设计建模的着眼点的着眼点则定位在则定位在行为模型行为模型、、实现模型实现模型和和环境模型环境模型上。上。

Page 5: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

2. 2. 标准建模语言标准建模语言 UMLUML 的内容的内容• UMLUML 是标准的建模语言,而不是标准的开发过程。是标准的建模语言,而不是标准的开发过程。• UMLUML 的定义包括的定义包括 UMLUML 语义和语义和 UMLUML 表示法两个部分。表示法两个部分。• UMLUML 语义:语义:描述基于描述基于 UMLUML 的精确元模型定义。元模型的精确元模型定义。元模型

为为 UMLUML 的的所有元素在语法和语义上提供了简单、一致、所有元素在语法和语义上提供了简单、一致、通用的定义性说明通用的定义性说明,使开发者能在语义上取得一致,,使开发者能在语义上取得一致,消除了因人而异的最佳表达方法所造成的影响。此消除了因人而异的最佳表达方法所造成的影响。此外外 UMLUML 还支持对元模型的扩展定义。还支持对元模型的扩展定义。

• UMLUML 表示法定义:表示法定义: UMLUML 符号的表示法符号的表示法,为开发者或开,为开发者或开发工具使用这些图形符号和文本语法为系统建模提发工具使用这些图形符号和文本语法为系统建模提供了标准。这些图形符号和文字所表达的是应用级供了标准。这些图形符号和文字所表达的是应用级的模型,在语义上它是的模型,在语义上它是 UMLUML 元模型的实例。元模型的实例。

Page 6: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

33 、、 UMLUML 分析与设计方法流程分析与设计方法流程

结构分析

结构设计

流程描述

分布描述

使用实例分析

子系统设计类设计

使用实例设计数据库设计数据库设计

结构评审结构评审

设计评审设计评审

Page 7: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

UMLUML 操作分析过程操作分析过程

使用实例图使用实例图

事件流事件流

脚本脚本

事务模型分析

相互作用图 ( 时序图 , 协同图 )相互作用图 ( 时序图 , 协同图 )

对象 & 类对象 & 类

对象图 , 类图对象图 , 类图

类分组类分组

封包图封包图

状态图状态图

构件图构件图

配置图配置图

面向对象分析

Page 8: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

44 、、 UMLUML 基本模基本模型型

Page 9: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

UMLUML 方法中的基本模型方法中的基本模型系统视图 使用图形 适用对象用户模型

使用实例图, 活动图 用户, 设计者,实现者, 测试者

结构模型

类和对象图, 状态图, 时序图,协同图, 活动图

设计者, 实现者

行为模型

状态图, 时序图, 协同图,活动图, 构件图, 配置图

实现者, 组装者

实现模型

构件图 实现者

环境模型

配置图 实现者, 组装者,测试者

Page 10: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

4.1 4.1 用例图:用例图:从用户角度描述系统功能,并指出各功能的从用户角度描述系统功能,并指出各功能的操作者。操作者。

4.2 4.2 静态图:静态图:包括类图、对象图和包图。包括类图、对象图和包图。• 类图类图描述系统中类的静态结构。定义系统中的类,类之描述系统中类的静态结构。定义系统中的类,类之

间的联系如关联、依赖、聚合,类的内部结构间的联系如关联、依赖、聚合,类的内部结构 (( 类的属类的属性和操作性和操作 )) 。。

• 对象图对象图是类图的实例,使用与类图完全相同的标识。是类图的实例,使用与类图完全相同的标识。• 包包由包或类组成,表示包与包之间的关系。包图用于描由包或类组成,表示包与包之间的关系。包图用于描

述系统的分层结构。述系统的分层结构。4.3 4.3 行为图:行为图:描述系统的动态模型和组成对象间的交互关描述系统的动态模型和组成对象间的交互关

系。系。

Page 11: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

• 状态图状态图描述类的对象所有可能的状态以及事件发生描述类的对象所有可能的状态以及事件发生时状态的转移条件。仅为那些有多个状态其行为受时状态的转移条件。仅为那些有多个状态其行为受外界环境的影响并且发生改变的类画状态图。外界环境的影响并且发生改变的类画状态图。

• 活动图活动图描述满足用例要求所要进行的活动以及活动描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活动。间的约束关系,有利于识别并行活动。

4.4 4.4 交互图:交互图:描述对象间的交互关系。描述对象间的交互关系。• 顺序图顺序图显示对象之间的动态合作关系,它强调对象显示对象之间的动态合作关系,它强调对象

之间消息发送的顺序,同时显示对象之间的交互。之间消息发送的顺序,同时显示对象之间的交互。强调时间和顺序强调时间和顺序

• 合作图合作图描述对象间的协作关系,合作图跟顺序图相描述对象间的协作关系,合作图跟顺序图相似,显示对象间的动态合作关系。除显示信息交换似,显示对象间的动态合作关系。除显示信息交换外,合作图还显示对象以及它们之间的关系。强调外,合作图还显示对象以及它们之间的关系。强调上下级关系上下级关系

Page 12: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

4.5 4.5 实现图实现图• 构件图构件图描述代码部件的物理结构及各部件之间的依描述代码部件的物理结构及各部件之间的依

赖关系。一个部件可能是一个资源代码部件、一个赖关系。一个部件可能是一个资源代码部件、一个二进制部件或一个可执行部件。它包含逻辑类或实二进制部件或一个可执行部件。它包含逻辑类或实现类的有关信息。现类的有关信息。

• 部件图部件图分析和理解部件之间的相互影响程度。分析和理解部件之间的相互影响程度。• 配置图配置图定义系统中软硬件的物理体系结构。它可以定义系统中软硬件的物理体系结构。它可以

显示实际的计算机和设备显示实际的计算机和设备 (( 用节点表示用节点表示 )) 以及它们之以及它们之间的连接关系,也可显示连接的类型及部件之间的间的连接关系,也可显示连接的类型及部件之间的依赖性。在节点内部,放置可执行部件和对象以显依赖性。在节点内部,放置可执行部件和对象以显示节点跟可执行软件单元的对应关系。示节点跟可执行软件单元的对应关系。

Page 13: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

4.6 UML4.6 UML 提出新的概念提出新的概念模板模板 (Stereotypes) (Stereotypes) 职责职责 (Responsibilities)(Responsibilities)扩展机制扩展机制 (Extensibility mechanisms)(Extensibility mechanisms)线程线程 (Thread s) (Thread s) 过程过程 (Processes)(Processes)分布式分布式 (Distribution) (Distribution) 并发并发 (Concurrency)(Concurrency)模式模式 (Patterns) (Patterns) 合作合作 (Collaborations)(Collaborations)活动图活动图 (Activity diagram) (Activity diagram) 细化细化 (Refinement)(Refinement)接口接口 (Interfaces) (Interfaces) 组件组件 (Com ponents)(Com ponents)

Page 14: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit
Page 15: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

§2 UML§2 UML 静态建模静态建模UMLUML 静态模型有:静态模型有:用户、结构、实现、环境模型(用户、结构、实现、环境模型(用例用例图、类图、对象图、包、构件图和配置图图、类图、对象图、包、构件图和配置图))

1. 1. 用例图用例图(1) (1) 用例模型用例模型 (Use case model)(Use case model)用例模型描述的是外部执行者用例模型描述的是外部执行者 (Actor)(Actor) 所理解的系统功所理解的系统功能。它将系统看作黑盒,从外部执行者的角度来理解系能。它将系统看作黑盒,从外部执行者的角度来理解系统,统,一个用例模型由若干个用例图描述一个用例模型由若干个用例图描述,用例图主要,用例图主要元素是元素是用例和执行者用例和执行者。。用例图是包括执行者、由系统用例图是包括执行者、由系统边界(一个矩形)封闭的一组用例,执行者和用例之边界(一个矩形)封闭的一组用例,执行者和用例之间的关联、用例间关系以及执行者的泛化的图。间的关联、用例间关系以及执行者的泛化的图。

Page 16: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

用例图

准备文件

交易

识别

申请贷款

"使用"

"使用"客户

银行职员

贷款经理

Page 17: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

(2) (2) 用例用例 (use case)(use case)• 一个用例是用户与计算机之间的一次典型交互作用。一个用例是用户与计算机之间的一次典型交互作用。

是系统执行的一系列动作是系统执行的一系列动作,,执行的结果能被执行者执行的结果能被执行者察觉到(察觉到(为参与者产生一个可观测的结果值)为参与者产生一个可观测的结果值)

• 用例名:简单名和路径名(包名用例名:简单名和路径名(包名 :::: 用例名用例名 ))• PackageNam::UsecaseNamePackageNam::UsecaseName • 用例特点:用例特点:用例用例捕获捕获某些用户某些用户可见的需求可见的需求,实现一,实现一

个个具体的用户目标具体的用户目标。用例由。用例由执行者激活执行者激活,并提供确,并提供确切的切的值给执行者值给执行者。用例可大可小,但它必须是对一。用例可大可小,但它必须是对一个具体的用户目标实现的个具体的用户目标实现的完整描述完整描述。。

Page 18: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

用例和类、接口一样是有用例和类、接口一样是有操作和属性操作和属性的,如果需要表的,如果需要表示出用例的操作或属性,我们可以用带有示出用例的操作或属性,我们可以用带有《《 use casuse casee 》》的矩形框(类元)表示。 的矩形框(类元)表示。

Page 19: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

(3) (3) 执行者执行者 (Actor)(Actor)执行者是指用户在系统中所扮演的角色(执行者是指用户在系统中所扮演的角色(执行者未执行者未必是人必是人)。)。

通信联系:通信联系:将执行者与用例连接到一起不带箭头的将执行者与用例连接到一起不带箭头的线段,表示两者之间线段,表示两者之间交换信息交换信息。执行者。执行者触发用例触发用例,,并并与用例进行信息交换与用例进行信息交换。。

单个执行者可与多个用例联系;反过来,一个用例单个执行者可与多个用例联系;反过来,一个用例可与多个执行者联系。可与多个执行者联系。

对同一个用例而言,不同执行者有着对同一个用例而言,不同执行者有着不同的作用不同的作用::他们可以从他们可以从用例中取值用例中取值,也可以,也可以参与到用例参与到用例中。中。

对一个大系统,要列出用例清单常常是十分困难。对一个大系统,要列出用例清单常常是十分困难。这时可这时可先列出执行者清单先列出执行者清单,再对每个执行者,再对每个执行者列出列出它的用例它的用例,问题就会变得容易很多。,问题就会变得容易很多。

Page 20: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

(4) (4) 使用和扩展使用和扩展 (Use and Extend)(Use and Extend) ::表示用例之间的表示用例之间的使用和扩展关系使用和扩展关系

扩展关系:扩展关系:当一个用例与另一个用例相似,但所做的当一个用例与另一个用例相似,但所做的动动作多一些作多一些,将,将多余部分扩展为一个用例多余部分扩展为一个用例,两用例间关,两用例间关系称为扩展关系系称为扩展关系

使用关系:使用关系:当有一大块相似的动作存在于几个用例,又当有一大块相似的动作存在于几个用例,又不想重复描述该动作,将不想重复描述该动作,将重复的部分分离为一个用例重复的部分分离为一个用例,,两用例间关系称为使用关系两用例间关系称为使用关系

扩展与使用都是从几个用例中扩展与使用都是从几个用例中抽取那些公共的行为抽取那些公共的行为并放并放入一个单独用例中,而这个用例被其他几个用例使用入一个单独用例中,而这个用例被其他几个用例使用或扩展。但使用和扩展的目的是不同的。或扩展。但使用和扩展的目的是不同的。

Page 21: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

(5) (5) 用例模型的获取用例模型的获取获取执行者:获取执行者:用户回答一些问题的答案来识别执行者用户回答一些问题的答案来识别执行者。。

谁使用系统的主要功能谁使用系统的主要功能 (( 主要使用者主要使用者 )) 。。谁需要系统支持他们的日常工作。谁需要系统支持他们的日常工作。谁来维护、管理使系统正常工作谁来维护、管理使系统正常工作 (( 辅助使用者辅助使用者 )) 。。系统需要操纵哪些硬件。系统需要操纵哪些硬件。系统需要与哪些其它系统交互,包含其它计算机系系统需要与哪些其它系统交互,包含其它计算机系统和其它应用程序。统和其它应用程序。

对系统产生的结果感兴趣的人或事物。对系统产生的结果感兴趣的人或事物。获取用例:获取用例:对每个执行者提出问题以获取用例。对每个执行者提出问题以获取用例。

执行者要求系统提供哪些功能执行者要求系统提供哪些功能 (( 执行者需要做什执行者需要做什么么 )?)?

执行者需要读、产生、删除、修改或存储的信息有执行者需要读、产生、删除、修改或存储的信息有哪些类型。哪些类型。

Page 22: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

必须提醒执行者的系统事件有哪些必须提醒执行者的系统事件有哪些 ?? 或者执行者必或者执行者必须提醒系统的事件有哪些须提醒系统的事件有哪些 ?? 怎样把这些事件表示成怎样把这些事件表示成用例中的功能用例中的功能 ??

为了完整地描述用例,还需要知道执行者的某些典为了完整地描述用例,还需要知道执行者的某些典型功能能否被系统自动实现型功能能否被系统自动实现 ??

还有一些不针对具体执行者问题还有一些不针对具体执行者问题 (( 即针对整个系统即针对整个系统的问题的问题 )) ::

系统需要何种输入输出系统需要何种输入输出 ?? 输入从何处来输入从何处来 ?? 输出到何输出到何处处 ??(( 尚不知道执行者是什么 尚不知道执行者是什么 ))

当前运行系统当前运行系统 (( 也许是一些手工操作而不是计算机也许是一些手工操作而不是计算机系统系统 )) 的主要问题的主要问题 ??

• 对一个十人年的项目来说,大约要对一个十人年的项目来说,大约要 8080 个左右的用例个左右的用例

Page 23: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit
Page 24: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

客户

检查订货状况

填订单

下订单

建立信用记录

销售员

发货员

管理员

电话订购系统

Page 25: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

销售员

提供客户数据 订购产品 安排付款

下订单

调阅产品目录

<<extends>><<extends>><<extends>>

<<extends>>

Page 26: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

课程目录系统学生 教授

计费系统登记员

选择教授课程登记课程

登录系统

完成课程登记

Page 27: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

2.2. 类图、对象图和包(结构模型)类图、对象图和包(结构模型)(1) (1) 类图类图 (Class Diagram)(Class Diagram)• 类图类图描述类和类之间的静态关系。它显示了信息的描述类和类之间的静态关系。它显示了信息的结结

构和行为构和行为。类图是定义其它图的基础。在类图的基础。类图是定义其它图的基础。在类图的基础上,状态图、合作图等进一步描述了系统其他方面的上,状态图、合作图等进一步描述了系统其他方面的特性。特性。

(2) (2) 类和对象类和对象 (Object) (Object) 对象、类、类属性、操作对象、类、类属性、操作类的名称类的名称

属性属性属性 属性 :: 数据类型数据类型属性 属性 :: 数据类型 数据类型 = = 初值初值操作操作操作操作 (( 参数表参数表 ):): 结果类型结果类型

类的属性语法:类的属性语法:可见性 属性名 :类型 可见性 属性名 :类型 == 缺省值 缺省值  {{ 约束特约束特性性 }}

Page 28: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

主动类

Page 29: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

• 可见性:可见性: Public Public "+""+" 、、 Private Private "-""-" 和和 Protected Protected "#""#"• 类型:类型:基本数据类型(基本数据类型( NN 、、 DD 、、 LL )、自定义的类型)、自定义的类型• 约束特性:约束特性: {{ 只读只读 }}• 操作语法:操作语法:可见性 操作名 可见性 操作名 (( 参数表参数表 ) ) :返回类型 :返回类型 {{ 约约

束特性束特性 } } • 主动类(主动类( ActiveActive ):):有“主观能动性”类为主动类;与有“主观能动性”类为主动类;与

参与者的动作特性密切相关。参与者的动作特性密切相关。(3) (3) 关联(关联( AssociationAssociation )关系:)关系:两个类之间存在某种语义两个类之间存在某种语义上的联系。上的联系。

Page 30: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

• 关联的方向(导航:关联的方向(导航: NavigabilityNavigability ):):表示该关联单表示该关联单方向被使用,分方向被使用,分单向关联和双向关联单向关联和双向关联

• 角色:角色:关联两头的关联两头的类以某种角色参与关联类以某种角色参与关联。没有标出。没有标出角色名,隐含地用类的名称作为角色名。角色名,隐含地用类的名称作为角色名。

• 角色多重性角色多重性 (Multiplicity)(Multiplicity) ::表示可以有多少个对象表示可以有多少个对象参与该关联。“参与该关联。“ *”*” :: 00 ~∞,“~∞,“ 1”1” :: 1..1 1..1

Page 31: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

• 关联类:关联类:一个关联可能要一个关联可能要记录一些信息记录一些信息,使用引入一,使用引入一个关联类来记录。个关联类来记录。

关联名关联名类类 11类类 11 类类 22类类 22

关联类名关联类名关联类名关联类名

属性属性属性属性

操作操作操作操作

角色 1 角色 2

Page 32: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit
Page 33: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

限定关联

类类 11 类类 22限定词限定词关联名称关联名称

角色 1 角色 2

聚合、导航和个体数目

混合聚合混合聚合 ,, 双向导航双向导航

0..*

0..1

0..*

整体 整体 类名类名

部分部分 类名类名 22部分部分 类名类名 11

聚合聚合 ,, 单向导单向导航航

0..1

Page 34: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

超类超类超类超类

子类 1子类 1 子类子类 22

操作操作

子类子类 22

操作操作

抽象类抽象类

操作操作

抽象类抽象类

操作操作

一般化 -特殊化关系

Page 35: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit
Page 36: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

持有人

财产

人 金融机构

信贷银行 银行

抵押本金利率到期

*

*{有序}

**

*

借方 债权人

房屋

Page 37: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

(5) (5) 依赖依赖 (dependency)(dependency) 关系关系(虚线)(虚线)• 有两个元素有两个元素 XX 、、 YY ,如果修改元素,如果修改元素 XX 的定义可能会引起的定义可能会引起

对另一个元素对另一个元素 YY 的定义的修改,则称元素的定义的修改,则称元素 YY 依赖依赖 (Depen(Dependency)dency) 于元素于元素 XX 。即一个事物为了达到某个目的,而采。即一个事物为了达到某个目的,而采用一种依赖方式依赖于被依赖事物。用一种依赖方式依赖于被依赖事物。

• 一个小孩一个小孩 (( 依赖事物依赖事物 )) 没有获取食物能力,他生存就是没有获取食物能力,他生存就是依赖于他的父母依赖于他的父母 (( 被依赖事物被依赖事物 )) 对他的抚养对他的抚养 (( 依赖方式依赖方式))

• 在类中,依赖由各种原因引起,如:一个类向另一个类在类中,依赖由各种原因引起,如:一个类向另一个类发消息;一个类是另一个类的数据成员;一个类是另一发消息;一个类是另一个类的数据成员;一个类是另一个类的某个操作参数。如果一个类的界面改变,它发出个类的某个操作参数。如果一个类的界面改变,它发出的任何消息可能不再合法。的任何消息可能不再合法。

• 依赖的形式可能是多样的,依赖关系有不同的变体:依赖的形式可能是多样的,依赖关系有不同的变体:<1><1> 抽象抽象 (abstraction)(abstraction) :从一个对象中提取一些特性:从一个对象中提取一些特性,并用类方法表示。,并用类方法表示。

<2><2> 绑定绑定 (binding)(binding) :为模板参数指定值,以定义一个:为模板参数指定值,以定义一个新的模板元素。新的模板元素。

Page 38: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

<3><3> 组合组合 (combination)(combination) :对不同类或包进行性质相:对不同类或包进行性质相似融合。似融合。

<4><4> 许可许可 (permission)(permission) :允许另一个对象对本对象的:允许另一个对象对本对象的访问。访问。

<5><5> 使用使用 (usage)(usage) :声明使用一个模型元素需要用到:声明使用一个模型元素需要用到已存在的另一个模型元素,这样才能正确实现使用已存在的另一个模型元素,这样才能正确实现使用者的功能者的功能 (( 包括调用、实例化、参数、发送包括调用、实例化、参数、发送 )) 。。

<6><6> 跟踪跟踪 (trace)(trace) :声明不同模型中元素的之间的存:声明不同模型中元素的之间的存在一些连接。在一些连接。

<7><7> 访问或连接访问或连接 (access)(access) :允许一个包访问另一个包:允许一个包访问另一个包的内容。的内容。

<8><8> 调用调用 (call)(call) :声明一个类调用其他类的操作的方:声明一个类调用其他类的操作的方法。法。

<9><9> 导出导出 (derive)(derive) :声明一个实例可从另一个实例导:声明一个实例可从另一个实例导出。出。

<10><10> 友员友员 (friend)(friend) :允许一个元素访问另一个元素:允许一个元素访问另一个元素,不管被访问的元素的具有可见性。,不管被访问的元素的具有可见性。

Page 39: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

<11><11> 引入引入 (import)(import) :允许一个包访问另一个包的内:允许一个包访问另一个包的内容并被访问组成部分增加别名。 容并被访问组成部分增加别名。

<12><12> 实例实例 (instantitate)(instantitate) :关于一个类的方法创建:关于一个类的方法创建了另一个类的实例声明。了另一个类的实例声明。

<13><13> 参数参数 (parameter)(parameter) :一个操作和它参数之间关系:一个操作和它参数之间关系<14><14> 实现实现 (realize)(realize) :说明和其实之间的关系:说明和其实之间的关系<15><15> 精化精化 (refine)(refine) :声明具有两个不同语义层次上:声明具有两个不同语义层次上的元素之间的映射。的元素之间的映射。

<16><16> 发送发送 (send)(send) :信号发送者和信号接收者之间关:信号发送者和信号接收者之间关系 系

(6)(6) 类图的抽象层次和细化类图的抽象层次和细化 (Refinement)(Refinement) 关系关系• 概念层概念层 (Conceptual)(Conceptual) 类图:类图:应用领域中的概念。需求应用领域中的概念。需求

分析阶段,应独立于实现它的软件和程序设计语言。分析阶段,应独立于实现它的软件和程序设计语言。• 说明层说明层 (Specification)(Specification) 类图类图:描述软件的接口部分:描述软件的接口部分

,而不是软件的实现部分。接口可能因为实现环境、,而不是软件的实现部分。接口可能因为实现环境、运行特性或者用户的不同而具有多种实现运行特性或者用户的不同而具有多种实现

Page 40: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

• 实现层:实现层:只有在实现层只有在实现层 (Implementation)(Implementation) 才真正有类才真正有类的概念,并且揭示软件的实现部分。是大多数人最常的概念,并且揭示软件的实现部分。是大多数人最常用的类图。 用的类图。

• 细化:细化:表示对事物更详细一层的描述。两个元素表示对事物更详细一层的描述。两个元素 AA 、、BB 描述同一件事物,它们的区别是抽象层次不同,若描述同一件事物,它们的区别是抽象层次不同,若元素元素 BB 是在元素是在元素 AA 的基础上的更详细的描述,则称元的基础上的更详细的描述,则称元素素 BB细化了元素细化了元素 AA ,或称元素,或称元素 AA 细化成元素细化成元素 BB。。

• 细化的图形表示:细化的图形表示:由元素由元素 BB 指向元素指向元素 AA 的一头为的一头为空心空心三角的虚线。三角的虚线。

(7) (7) 约束约束 (Constraint)(Constraint) :表示规则。:表示规则。• "{}""{}" 中的一个表达式,表示一个永真的逻辑陈述。程中的一个表达式,表示一个永真的逻辑陈述。程

序设计语言中,由断言序设计语言中,由断言 (Assertion)(Assertion) 来实现。来实现。(8)(8) 对象图、对象和链对象图、对象和链• 对象图与类图具有相同的表示形式。对象图可以看作对象图与类图具有相同的表示形式。对象图可以看作

是类图的一个实例。对象是类的实例;对象之间的链是类图的一个实例。对象是类的实例;对象之间的链(Link)(Link) 是类之间的关联的实例。是类之间的关联的实例。

Page 41: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

(9) (9) 包包 (package)(package) ::是将许多类集合成一个更高层次的是将许多类集合成一个更高层次的单位,形成一个高内聚、低耦合的类的集合。单位,形成一个高内聚、低耦合的类的集合。

• 不仅是类,不仅是类,任何模型元素都运用包的机制任何模型元素都运用包的机制。最有用的。最有用的和强调最多的启发性原则就是和强调最多的启发性原则就是依赖依赖。 。

Page 42: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

• 包图包图主要显示类的包以及这些包之间的依赖关系。有主要显示类的包以及这些包之间的依赖关系。有时还显示包和包之间的继承关系和组成关系。时还显示包和包之间的继承关系和组成关系。

• 包的依赖和继承包的依赖和继承• 包主要元素:包主要元素:其他包、类、接口、构件、节点、协作其他包、类、接口、构件、节点、协作

、用例和图。、用例和图。(10)(10) 注解注解 (note)(note) ::附加定义性告诉被注解对象的性质附加定义性告诉被注解对象的性质、特征、用途等。、特征、用途等。

(11)(11) 使用类图的建议使用类图的建议• 不要试图使用所有的符号。不要试图使用所有的符号。从简单的开始,例如,类从简单的开始,例如,类

、关联、属性和继承等概念。有些符号仅用于特殊的、关联、属性和继承等概念。有些符号仅用于特殊的场合和方法中,只有当需要时才去使用。场合和方法中,只有当需要时才去使用。

• 根据项目开发的不同阶段,用正确的观点来画类图。根据项目开发的不同阶段,用正确的观点来画类图。分析阶段,画概念层类图;软件设计时,画说明层类分析阶段,画概念层类图;软件设计时,画说明层类图;考察某个特定的实现技术时,应画实现层类图。图;考察某个特定的实现技术时,应画实现层类图。

• 不要为每个事物都画一个模型,应该把精力放在关键不要为每个事物都画一个模型,应该把精力放在关键的领域。的领域。最好只画几张较为关键的图,经常使用并不最好只画几张较为关键的图,经常使用并不断更新修改。断更新修改。

Page 43: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

包图年个

控制器

微软窗口

基本图形

窗口系统

窗口核心

基本图形核心

图形核心

图组件见、、、

编辑器

图组件见、、、

Page 44: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

• 使用类图的最大危险是过早地陷入实现细节。使用类图的最大危险是过早地陷入实现细节。应该将重点放在概念层和说明层。应该将重点放在概念层和说明层。

• 模型和模型中的元素是否有清楚的目的和职责模型和模型中的元素是否有清楚的目的和职责(OOD(OOD 中系统功能最终是分配到每个类的操作上中系统功能最终是分配到每个类的操作上实现的,这个机制叫职责分配实现的,这个机制叫职责分配 )) 。。

• 模型和模型元素的大小是否适中。过于复杂的模型和模型元素的大小是否适中。过于复杂的模型和模型元素是很难生存的,应将其分解成模型和模型元素是很难生存的,应将其分解成几个相互合作的部分。几个相互合作的部分。

Page 45: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit
Page 46: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

3. 3. 构件图构件图 (Component diagram)(Component diagram) 和配置图和配置图 (Deployment (Deployment diagram) diagram) 实现模型及环境模型实现模型及环境模型

• 构件图和配置图显示系统实现时的一些特性,包括构件图和配置图显示系统实现时的一些特性,包括源源代码的静态结构代码的静态结构和和运行时刻的实现结构运行时刻的实现结构。构件图显示。构件图显示代码本身的结构代码本身的结构,配置图显示系统,配置图显示系统运行时刻的结构运行时刻的结构。 。

(1)(1) 构件图:构件图:显示软件构件之间的依赖关系。一般来说显示软件构件之间的依赖关系。一般来说,软件构件就是,软件构件就是一个实际文件一个实际文件,可以是源代码文件、,可以是源代码文件、二进制代码文件和可执行文件等。可以用来显示编译二进制代码文件和可执行文件等。可以用来显示编译、链接或执行时构件之间的依赖关系。、链接或执行时构件之间的依赖关系。

(2)(2) 配置图:配置图:描述系统描述系统硬件的物理拓扑结构硬件的物理拓扑结构以及在此结以及在此结构上构上执行的软件执行的软件。配置图可以显示计算结点的拓扑结。配置图可以显示计算结点的拓扑结构和通信路径、结点上运行的软件构件、软件构件包构和通信路径、结点上运行的软件构件、软件构件包含的逻辑单元含的逻辑单元 (( 对象、类对象、类 )) 等。配置图常常用于帮助等。配置图常常用于帮助理解理解分布式系统分布式系统。。

Page 47: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

构件图的组合

主要类对象

执行客户端程序

公共对象

处理窗口对象

公共对象

主要类对象

处理窗口对象图形库

Page 48: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

构件分布图

Joe's机器

计划者

管理驱动器

日程表___

《数据库》会议数据库

预定

Page 49: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

配置图:主机与外围设备

“TCP/IP”网络

A 个人计算机

B 个人计算机

应用主机 数据库主机

图形显示

Page 50: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

(3)(3) 结点结点 (Node)(Node)• 结点结点 (Node)(Node) ::代表一个代表一个物理设备以及其上运行的软件物理设备以及其上运行的软件

系统系统,如一台,如一台 UnixUnix 主机、一个主机、一个 PCPC 终端、一台打印机终端、一台打印机、一个传感器等。节点是一种类元,可以有属性。、一个传感器等。节点是一种类元,可以有属性。

• 位置位置 (Location)(Location) 定义:定义:一个运行时实体在环境中的物一个运行时实体在环境中的物理放置,如分布式环境中的对象或分栏。在理放置,如分布式环境中的对象或分栏。在 UMLUML 中,中,位置是分散的,位置的单位是节点。位置是分散的,位置的单位是节点。

• 节点名称的定义:节点名称的定义:节点标识节点标识 ++ 节点的类型的标识。节点的类型的标识。

(4)(4) 接口接口 (Connection)(Connection)• 结点之间的连线表示系统之间进行交互的通信路径。结点之间的连线表示系统之间进行交互的通信路径。

接口是描述类或构件的一个接口是描述类或构件的一个服务的操作服务的操作。。• 接口的名称:接口的名称:一是带有关键字《一是带有关键字《 interfaceinterface 》的》的矩形矩形

表示,接口支持的操作在操作分栏中。 表示,接口支持的操作在操作分栏中。 • 接口第二种表示是以小圆圈,接口第二种表示是以小圆圈,接口的名称位于接口的名称位于小圆圈小圆圈

的下方。圆圈符号用实线与支持接口的类或其他元素的下方。圆圈符号用实线与支持接口的类或其他元素相连,它还可以连向高层的容器,如包。 相连,它还可以连向高层的容器,如包。

Page 51: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit
Page 52: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit
Page 53: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

§3 UML§3 UML 动态建模动态建模UMLUML 动态模型有:状态图、顺序图、合作图、活动图动态模型有:状态图、顺序图、合作图、活动图1. 1. 消息消息• 对象间的交互是通过对象间消息的传递来完成的。对象间的交互是通过对象间消息的传递来完成的。

当一个对象调用另一个对象中的操作时,即完成了当一个对象调用另一个对象中的操作时,即完成了一次消息传递。当操作执行后,控制便返回到调用一次消息传递。当操作执行后,控制便返回到调用者。对象通过相互间的通信者。对象通过相互间的通信 (( 消息传递消息传递 )) 进行合作,进行合作,并在其生命周期中根据通信的结果不断改变自身的并在其生命周期中根据通信的结果不断改变自身的状态状态。 。

• 简单消息简单消息 (Simple Message) (Simple Message) 表示简单的控制流。表示简单的控制流。用于描述控制如何在对象间进行传递,而不考虑通用于描述控制如何在对象间进行传递,而不考虑通信的细节。信的细节。

Page 54: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

• 同步消息同步消息 (Synchronous Message) (Synchronous Message) 表示表示嵌套的控制嵌套的控制流流。操作的调用是一种典型的同步消息。调用者发。操作的调用是一种典型的同步消息。调用者发出消息后必须等待消息返回,只有出消息后必须等待消息返回,只有当处理消息的操当处理消息的操作执行完毕后作执行完毕后,调用者才可继续执行自己的操作。,调用者才可继续执行自己的操作。

• 异步消息异步消息 (Asynchronous Message) (Asynchronous Message) 表示异步控制表示异步控制流。当调用者发出消息后流。当调用者发出消息后不用等待消息的返回即可不用等待消息的返回即可继续执行自己的操作继续执行自己的操作。异步消息主要用于描述实时。异步消息主要用于描述实时系统中的并发行为。系统中的并发行为。

Page 55: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

2. 2. 状态图状态图 (State Diagram)(State Diagram)• 状态图用来描述一个特定对象的所有可能状态及其引状态图用来描述一个特定对象的所有可能状态及其引

起状态转移的事件。起状态转移的事件。状态图表示单个对象在其生命周状态图表示单个对象在其生命周期中的行为。期中的行为。一个状态图包括一系列的状态以及状态一个状态图包括一系列的状态以及状态之间的转移。之间的转移。

(1)(1) 状态:状态:状态是对象执行了一系列活动的结果状态是对象执行了一系列活动的结果。当某。当某事件发生后,对象的状态将发生变化。状态图中定义事件发生后,对象的状态将发生变化。状态图中定义的状态有:的状态有:初态、终态、中间状态、复合状态初态、终态、中间状态、复合状态。其中,。其中,初态是状态图的起始点,而终态则是状态图的终点。初态是状态图的起始点,而终态则是状态图的终点。一个状态图只能有一个初态,而终态则可以有多个。 一个状态图只能有一个初态,而终态则可以有多个。

• 一个状态可以进一步地细化为多一个状态可以进一步地细化为多个子状态个子状态,我们将可,我们将可以进一步细化的状态称作以进一步细化的状态称作复合状态复合状态。。

• 子状态之间有“或关系”和“与关系”两种关系。子状态之间有“或关系”和“与关系”两种关系。

Page 56: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

• 或关系说明在或关系说明在某一时刻仅可到达某一时刻仅可到达一个子状态。一个子状态。一个处一个处于行驶状态的汽车,在于行驶状态的汽车,在 "" 行驶行驶 "" 复合状态中有向前和向复合状态中有向前和向后两个不同的子状态,某一时刻汽车要么前,要么后后两个不同的子状态,某一时刻汽车要么前,要么后

• 与关系说明复合状态中在与关系说明复合状态中在某一时刻可同时到达多个子某一时刻可同时到达多个子状态状态 (( 称为并发子状态称为并发子状态 )) 。 。

Page 57: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

电梯

在一楼 上升

停滞下降

回到一楼

回一楼

想要到达楼层

向下

向上

想要到达楼层

向上

电梯调度時程

开始

(2)(2) 转移转移•状态图中状态之间带状态图中状态之间带箭头的连线箭头的连线被称为转移。转移被称为转移。转移上标出触发转移的事件表达式。上标出触发转移的事件表达式。未标明事件未标明事件,表示在,表示在源状态的内部源状态的内部活动执行完毕后自动触发转移活动执行完毕后自动触发转移。。

Page 58: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

选择课程

初开化do:创建表单初开化表单

挂起do 30:等待 秒

选主修课do:接受课程增加记录

选主修课do:接受课程增加记录

提交do:提交表单用

于处理

保存do:保存表单

H

输入课程

挂起

恢复

输入课程

输入课程

QUI T

Page 59: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

登记

打开do:登记学生添加学生记录

添加学生设置学生取消

课程

结束学生登记

添加学生初开化

撤消

完成登记

未分配

结束学生登记

关闭do:通知其他学生该课程已登记

创建学生花名册

Page 60: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

3. 3. 顺序图顺序图 (Sequence Diagram) (Sequence Diagram) 时序图时序图• 顺序图用来描述顺序图用来描述对象之间动态的交互关系对象之间动态的交互关系,着重体现,着重体现

对象间消息传递的对象间消息传递的时间顺序时间顺序。顺序图存在两个轴:。顺序图存在两个轴:水水平轴表示不同的对象平轴表示不同的对象,,垂直轴表示时间垂直轴表示时间。顺序图中的。顺序图中的对象用一个带有垂直虚线的矩形框表示,并标有对象对象用一个带有垂直虚线的矩形框表示,并标有对象名和类名。名和类名。垂直虚线是对象的生命线垂直虚线是对象的生命线,用于,用于表示在某表示在某段时间内对象是存在段时间内对象是存在的。对象间的通信通过在对象的的。对象间的通信通过在对象的生命线间画消息生命线间画消息来表示。消息的箭头指明消息的类型。来表示。消息的箭头指明消息的类型。

• 顺序图中的消息可以是信号顺序图中的消息可以是信号 (Signal)(Signal) 、操作调用或类、操作调用或类似于似于 C++C++ 中的中的 RPC(RemoteProce dure Calls)RPC(RemoteProce dure Calls) 和和 JavaJava中的中的 RMI(Remote Method Invocation)RMI(Remote Method Invocation) 。当收到消息。当收到消息时,接收对象立即开始执行活动,即对象被激活了。时,接收对象立即开始执行活动,即对象被激活了。通过在对象生命线上显示一个细长矩形框来表示激活。通过在对象生命线上显示一个细长矩形框来表示激活。

Page 61: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

学生 选课表单打开

显示课程表

课程登记管理器 课程目录 课程

取课程列表取课程列表

4 2选择 门主课 门选修课

把课程加入计划添加学生

{ 4 }重复 门课

Page 62: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

• 消息可以用消息名及参数来标识消息可以用消息名及参数来标识。消息也可带有顺。消息也可带有顺序号,但较少使用。消息还可带有条件表达式,表示序号,但较少使用。消息还可带有条件表达式,表示分支或决定是否发送消息。如果用于表示分支,则每分支或决定是否发送消息。如果用于表示分支,则每个分支是相互排斥的,即在某一时刻仅可发送分支中个分支是相互排斥的,即在某一时刻仅可发送分支中的一个消息。的一个消息。

• 在顺序图的左边可以有说明信息在顺序图的左边可以有说明信息,用于说明消息发,用于说明消息发送的时刻、描述动作的执行情况以及约束信息等。一送的时刻、描述动作的执行情况以及约束信息等。一个典型的例子就是用于说明一个消息是重复发送的。个典型的例子就是用于说明一个消息是重复发送的。另外,可以定义两个消息间的时间限制。另外,可以定义两个消息间的时间限制。

• 一个对象可以通过发送消息来创建另一个对象,当一一个对象可以通过发送消息来创建另一个对象,当一个对象被删除或自我删除时,该对象用个对象被删除或自我删除时,该对象用 "X""X" 标识。标识。

• 当一个操作直接或间接调用自身时,即发生了当一个操作直接或间接调用自身时,即发生了递归递归。。产生递归的消息产生递归的消息总是同步消息总是同步消息,返回消息应是,返回消息应是一个简一个简单消息单消息。。

Page 63: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

顺序图:打电话访客 交换机 远程交换机 访客

拿起话筒

蜂鸣音

拨号码

...

铃响信号 铃响

铃响停止信号

拿起话筒

铃响停止

<10

d

e

a

b

c

{b-a<1}

{e-d<5}

{c-b<10}

路径

Page 64: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

顺序图:打印打印驱动器 打印机 队列计算机

输出文件

打印机空闲

打印机忙

打印输出文件

输出文件 入队列

Page 65: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

4. 4. 合作图合作图 (Collaboration Diagram)(Collaboration Diagram)• 合作图用于描述合作图用于描述相互合作的对象间的交互关系和链接相互合作的对象间的交互关系和链接

关系关系。虽然顺序图和合作图都用来描述对象间的交互。虽然顺序图和合作图都用来描述对象间的交互关系,但侧重点不一样。关系,但侧重点不一样。顺序图着重体现交互的时间顺序图着重体现交互的时间顺序,合作图则着重体现顺序,合作图则着重体现交互对象间的静态链接关系。交互对象间的静态链接关系。

• 链接关系:链接关系:类似于类似于类图中的联系类图中的联系 (( 但但无多重性无多重性标志标志 )) 。。通过在对象间的链接上标志带有消息串的消息通过在对象间的链接上标志带有消息串的消息 (( 简单、简单、异步或同步消息异步或同步消息 )) 来表达对象间的消息传递来表达对象间的消息传递

• 消息流:消息流:在合作图的链接线上,可以用带有消息串的在合作图的链接线上,可以用带有消息串的消息来描述对象间的交互。消息的箭头指明消息的流消息来描述对象间的交互。消息的箭头指明消息的流动方向。消息串说明要发送的消息、消息的参数、消动方向。消息串说明要发送的消息、消息的参数、消息的返回值以及消息的序列号等信息。 息的返回值以及消息的序列号等信息。

Page 66: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

合作图:打印

打印机忙存储输出文件

输出文件队列

计 算 机

打印机空闲打印输出文件 打 印 机打印驱动器

输出文件

Page 67: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

• 例:我们下班回家这件事,人例:我们下班回家这件事,人 (( 假如是我假如是我 )) 就是一个就是一个对象,我们来考察一下几个状态:对象,我们来考察一下几个状态:1.1. 到下班时间了,收拾东西准备回家到下班时间了,收拾东西准备回家 (( 不考虑加班不考虑加班 )) 。。2.2. 开始等电梯。开始等电梯。3.3. 到了楼下。(发现没带家里钥匙,上楼拿)到了楼下。(发现没带家里钥匙,上楼拿)4.4. 上楼。上楼。5.5. 去公交等车。去公交等车。6.6. 乘公共汽车去菜场。乘公共汽车去菜场。7.7. 买菜买菜8.8. 回到家回到家

• 那么事件呢?那么事件呢?1.1. 下班时间到了下班时间到了 (( 准备下班准备下班 )) 。。2.2. 电梯到电梯到 (( 上电梯上电梯 ))3.3. 电梯到楼下电梯到楼下 (( 下电梯下电梯 ))3.3. 发现没有家里钥匙发现没有家里钥匙 (( 去拿钥匙去拿钥匙 )) 。。4.4. 自己要乘公共汽车到了自己要乘公共汽车到了 (( 上车上车 )) 。。5.5. 公共汽车到站公共汽车到站 (( 下车下车 )) 。。6.6. 忽然想起家里没菜忽然想起家里没菜 (( 去买菜去买菜 )) 。 。

Page 68: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

• 名称:名称:就是名字,状态的名字。就是名字,状态的名字。• 进入进入 // 退出动作:退出动作:对象本身的一个操作,比如在电梯对象本身的一个操作,比如在电梯里是一个状态的话,哪我们进电梯和出电梯就是状里是一个状态的话,哪我们进电梯和出电梯就是状态态 ------ 在电梯里在电梯里 ------ 的进入的进入 // 退出动作。退出动作。

• 内部转换:内部转换:如我们在去等电梯的时候发现钥匙没带,如我们在去等电梯的时候发现钥匙没带,此时我们不用在等电梯的以后状态是再有事件触发,此时我们不用在等电梯的以后状态是再有事件触发,在准备下班的状态上我们就去拿钥匙了,对于对象本在准备下班的状态上我们就去拿钥匙了,对于对象本身,前后两次的根本状态不一样,一个是有钥匙,一身,前后两次的根本状态不一样,一个是有钥匙,一个是没有钥匙。个是没有钥匙。

• (( 子状态子状态 ) ) ::如果我们描述该对象在电梯里说话,抽如果我们描述该对象在电梯里说话,抽烟(一般电梯不许)等状态时,该状态就是该对象状烟(一般电梯不许)等状态时,该状态就是该对象状态态 ------ 在电梯里在电梯里 ------ 状态的子状态。状态的子状态。

• (( 延迟事件延迟事件 ) ) ::现在不立即产生的事件,该事件是在现在不立即产生的事件,该事件是在一段时间以后才产生的事件。一段时间以后才产生的事件。

Page 69: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

5. 5. 活动图活动图 (Activity Diagram)(Activity Diagram)• 活动图描述活动图描述操作操作 (( 类的方法类的方法 )) 的行为的行为,或描述,或描述用例和用例和

对象内部的工作过程对象内部的工作过程。活动图是由。活动图是由状态图变化而来的状态图变化而来的,,它们各自用于不同的目的。活动图它们各自用于不同的目的。活动图依据对象状态的变依据对象状态的变化来捕获动作化来捕获动作 (( 将要执行的工作或活动将要执行的工作或活动 )) 与动作的结与动作的结果。活动图中果。活动图中一个活动结束后将立即进入下一个活动一个活动结束后将立即进入下一个活动(( 在状态图中状态的变迁可能需要事件的触发在状态图中状态的变迁可能需要事件的触发 )) 。 。

授权收费

Page 70: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

活动图:磁盘

屏幕显示磁盘已满信息

屏幕显示打印机状况信息

建立日志文件删除打印信息

磁盘满

磁盘未满

输出文件

打印输出文件

Page 71: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

• 活动和转移:活动和转移:一项操作可以描述为一系列相关的活动一项操作可以描述为一系列相关的活动。。活动仅有活动仅有一个起始点一个起始点,但可以,但可以有多个结束点有多个结束点。一个活。一个活动可以顺序地跟在另一个活动之后,这是简单的动可以顺序地跟在另一个活动之后,这是简单的顺序顺序关系关系。如果在活动图中使用一个。如果在活动图中使用一个菱形的判断标志菱形的判断标志,则,则可以表达条件关系,判断标志可以有可以表达条件关系,判断标志可以有多个输入和输出多个输入和输出转移转移,但在活动的运作中仅触发其中的一个输出转移。,但在活动的运作中仅触发其中的一个输出转移。

• 泳道:泳道:活动图告诉你发生了什么,但没有告诉你活动图告诉你发生了什么,但没有告诉你该项该项活动由谁来完成活动由谁来完成。这意味着活动图没有描述出各个活。这意味着活动图没有描述出各个活动由哪个类来完成。动由哪个类来完成。泳道将活动图的逻辑描述与顺序泳道将活动图的逻辑描述与顺序图、合作图的责任描述结合起来。图、合作图的责任描述结合起来。泳道用泳道用矩形矩形框来表框来表示示

• 对象:对象:对象可以作为活动的输入或输出,对象与活动对象可以作为活动的输入或输出,对象与活动间的输入间的输入 //输出关系由输出关系由虚线箭头虚线箭头来表示。来表示。

• 信号:信号:在活动图中可以表示信号的发送与接收,分别在活动图中可以表示信号的发送与接收,分别用发送和接收标志来表示。发送和接收标志也可与对用发送和接收标志来表示。发送和接收标志也可与对象相连,用于表示消息的发送者和接收者。 象相连,用于表示消息的发送者和接收者。

Page 72: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

检验员显示

测量测值更新显示

初始化

Page 73: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

咖啡因

酿造咖啡

流出咖啡

开机

提炼

Page 74: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

6. 6. 四种图的运用四种图的运用• 为帮助理解类而画它的状态图。为帮助理解类而画它的状态图。状态图描述跨越多状态图描述跨越多个用例的单个对象的行为个用例的单个对象的行为,而不适合描述多个对象,而不适合描述多个对象间的行为合作。为此,常将状态图与其它技术间的行为合作。为此,常将状态图与其它技术 (( 如如顺序图、合作图和活动图顺序图、合作图和活动图 )) 组合使用。组合使用。

• 顺序图和合作图适合描述单个用例中几个对象的行顺序图和合作图适合描述单个用例中几个对象的行为为

• 顺序图突出对象间交互的顺序,而顺序图突出对象间交互的顺序,而合作图的布局方合作图的布局方法能更清楚地表示出对象之间静态法能更清楚地表示出对象之间静态的连接关系。的连接关系。

• 当行为较为简单时,顺序图和合作图是最好的选择。当行为较为简单时,顺序图和合作图是最好的选择。• 但当行为比变复杂时,这两个图将失去其清晰度。但当行为比变复杂时,这两个图将失去其清晰度。因此,如果想显示跨越因此,如果想显示跨越多用例或多线程的多用例或多线程的复杂行为,复杂行为,可考虑使用可考虑使用活动图活动图。。

• 顺序图和合作图仅适合描述对象之间的合作关系,顺序图和合作图仅适合描述对象之间的合作关系,而不适合对行为进行精确定义,如果想描述跨越多而不适合对行为进行精确定义,如果想描述跨越多个用例的单个对象的行为,应当使用状态图。 个用例的单个对象的行为,应当使用状态图。

Page 75: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

产品订货系统案例产品订货系统案例 ((订单获取子系统和订单处理子系统订单获取子系统和订单处理子系统 ))

Page 76: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit
Page 77: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit
Page 78: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit
Page 79: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit
Page 80: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit
Page 81: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

商业商业 MISMIS11 、基本需求、基本需求• 它是一个商业支持系统;它是一个商业支持系统;• 采购员采购所需的商品;采购员采购所需的商品;• 保管员将采购的商品登记入库;保管员将采购的商品登记入库;• 调拨员将库存商品调拨到相应的销售部门;调拨员将库存商品调拨到相应的销售部门;• 销售部门销售商品;销售部门销售商品;• 统计部门核算商场经营状况;统计部门核算商场经营状况;• 系统能运行于通用的技术环境系统能运行于通用的技术环境 (( 如如 UnixUnix 、、 WindowsWindows

等等 )) 中,具有良好的图形用户界面中,具有良好的图形用户界面• 系统容易维护,便于功能扩充 。系统容易维护,便于功能扩充 。22 、用例分析、用例分析• 先确认商业先确认商业 MISMIS 中的角色有销售人员、库存人员、采中的角色有销售人员、库存人员、采购人员、辅助人员和分析人员。在此基础上,确认用购人员、辅助人员和分析人员。在此基础上,确认用例。商业例。商业 MISMIS 的用例有订货采购、库存管理、商品销的用例有订货采购、库存管理、商品销售、统计分析、系统维护售、统计分析、系统维护 (( 包括增加商品、取消商品、包括增加商品、取消商品、制作标签、价格变更、取消或更新标签制作标签、价格变更、取消或更新标签 )) 。 。

Page 82: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit
Page 83: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

• 用文字用文字 (( 或活动图或活动图 )) 对每个用例进行需求说明,更具对每个用例进行需求说明,更具体地描述该用例与角色的交互。体地描述该用例与角色的交互。

• 例订货采购用例的需求说明如下:例订货采购用例的需求说明如下:• 如果是新商品:如果是新商品: aa 、新商品登记;、新商品登记; bb 、采购进货;、采购进货; cc 、、登记入库 。登记入库 。

• 如果商品库存不足:如果商品库存不足: aa 、采购进货;、采购进货; bb 、登记入库。、登记入库。33 、特定领域分析、特定领域分析• 确定商业确定商业 MISMIS 中的特定领域类为商品、保质商品、非中的特定领域类为商品、保质商品、非保质商品、物品、销售、订货、库存、厂商,并使用保质商品、物品、销售、订货、库存、厂商,并使用类图来描述系统领域类及其关系。类图来描述系统领域类及其关系。

• 使用使用 UMLUML 中的任何一种动态图中的任何一种动态图 (( 如顺序图、活动图、如顺序图、活动图、合作图、状态图合作图、状态图 )) 描述领域类的动态行为描述领域类的动态行为

Page 84: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit
Page 85: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

44 、设计、设计• 设计阶段的任务是通过综合考虑所有的技术限制,以设计阶段的任务是通过综合考虑所有的技术限制,以

扩展和细化分析阶段的模型。设计的目的是指明一种扩展和细化分析阶段的模型。设计的目的是指明一种易转化成代码的工作方案,是对分析工作的细化,即易转化成代码的工作方案,是对分析工作的细化,即进一步细化分析阶段所提取的类进一步细化分析阶段所提取的类 (( 包括其操作和属性包括其操作和属性 )) ,,并且增加新类以处理诸如数据库、用户接口、通信、并且增加新类以处理诸如数据库、用户接口、通信、设备等技术领域的问题。设备等技术领域的问题。

• 设计阶段可以分为两个部分:设计阶段可以分为两个部分:结构设计是高层设计,结构设计是高层设计,其任务是定义包其任务是定义包 (( 子系统子系统 )) ,包括包间的依赖性和主,包括包间的依赖性和主要通信机制。我们希望得到尽可能简单和清晰的结构,要通信机制。我们希望得到尽可能简单和清晰的结构,各部分之间的依赖尽可能的少,并尽可能的减少双向各部分之间的依赖尽可能的少,并尽可能的减少双向的依赖关系。的依赖关系。

• 第二部分是详细设计,细化包的内容,使编程人员得第二部分是详细设计,细化包的内容,使编程人员得到所有类的一个足够清晰的描述。同时使用到所有类的一个足够清晰的描述。同时使用 UMLUML 中的中的动态模型,描述特定情况下这些类的实例之间的行为动态模型,描述特定情况下这些类的实例之间的行为。。

Page 86: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

55 、结构设计、结构设计• 包实际上是一些类的集合。包实际上是一些类的集合。类图中包括有助于用户从类图中包括有助于用户从技术逻辑中分离出应用逻辑技术逻辑中分离出应用逻辑 (( 领域类领域类 )) ,从而减少它,从而减少它们之间的依赖性。这就是软件结构设计强调的模块间们之间的依赖性。这就是软件结构设计强调的模块间的高聚合、低偶合的原则。在商业的高聚合、低偶合的原则。在商业 MISMIS 中,存在以下中,存在以下包包 (( 或子系统或子系统 )) ::

• 用户接口包:用户接口包:用户接口类允许用户访问系统数据和加用户接口类允许用户访问系统数据和加入新数据。在商业对象中,用户接口包跟商业对象包入新数据。在商业对象中,用户接口包跟商业对象包合作,调用商业对象的操作,实施数据的检索和插入。合作,调用商业对象的操作,实施数据的检索和插入。

• 商业对象包:商业对象包:包括来自分析阶段的特定领域类。在设包括来自分析阶段的特定领域类。在设计阶段,详细设计这些类,以完整定义他们的操作,计阶段,详细设计这些类,以完整定义他们的操作,支持对数据库的存取。所以,所有商业对象类必须继支持对数据库的存取。所以,所有商业对象类必须继承数据库包中的类。承数据库包中的类。

• 数据库包:数据库包:为商业对象包中的类提供服务,便于永久为商业对象包中的类提供服务,便于永久存储。存储。

• 实用包:实用包:包含系统其他包要使用的服务。 包含系统其他包要使用的服务。

Page 87: UML 面向对象的分析与设计 授课教师 : 李梁 联络电话: 68668334 电子邮件: iliang@cqit

• 预习内容:预习内容:第十一章第十一章• 作业:作业: