Download presentation
Presentation is loading. Please wait.
1
软件建模精要 面向对象软件建模技术
2
第1章 软件建模概论 1.1 软件模型 1.2 面向对象方法基础
3
第1章 软件建模概论 1.1 软件模型 软件模型的概念 软件模型的内容
4
1.2.1 软件模型的概念 ● 软件模型: 通过一定的形式和方法用来描述软件的模型。 ● 软件建模:建立软件模型的过程被称为软件建模。
可行性研究与计划 需求分析 设计 编码 运行维护 测试 定义 阶段 开 发 阶 段 维护阶段 瀑布模型
5
1.2.2 软件模型的内容 业务模型 也叫领域模型,描述软件所要服 务的业务领域的业务状况和业务 关系。
6
业务模型 需求模型 描述软件向用户所能够提供的 外在特性,包括软件的目标、 功能、性能等。
7
1.2.2 软件模型的内容
8
1.2.2 软件模型的内容
9
1.2.2 软件模型的内容 软件的实现方案。 包括软件的实现结构,构件, 文件等。
10
1.2.2 软件模型的内容
11
一、对象 对象 1.2 面向对象的基本概念 1、对象的概念 对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。
对象既可以描述客观存在的事物,也可以表示由人主观构造的抽象观念。 汽车 灯泡 扳手 农村 共产主义 对象
12
2、对象在三个世界中的含义 汽车 灯泡 扳手 农村 客观世界: (客观事物) 主观世界: (概念) 软件世界: (对象) 共产主义
13
3、软件中的对象及性质 软件中对象由一组属性和操作组成。
14
例如: 3、软件中的对象及性质 Java编写的 “雇员对象”程序 Public class Employee
{ private String name; private EmployeeDate birthDate; private EmployeeDate hireDate; public Employee(Sting name,int bYYYY, int bMM, int bDD, int hYYYY, int hMM,int hDD) { this.name = name; birthDate = new EmployeeDate(bYYYY,bMM,bDD); hireDate = new EmployeeDate(hYYYY,hMM,hDD); } public String to String() { return name+” birthday:”+ birthDate.toString()+ “hired:”+hireDate.toString(); 雇员 雇员姓名 雇员出生日期 雇佣日期 雇员( ) 雇员对象
15
二、类 1、类的概念 类用来描述具有相同性质的一组对象。
1.2 面向对象的基本概念 二、类 1、类的概念 类用来描述具有相同性质的一组对象。 汽车 灯泡 扳手 农村 共产主义 类
16
2、类的表示 增加学生( ) 删除学生( ) 学校 校名: Name 地址: String 电话: Number 类名 属性 操作
17
三、封装 1、封装的概念 封装是把某些可以独立存在的内容封裹起来,构成一个整体,并把内部细节隐藏起来,仅向外部提供可以提供的外在描述。
1.2 面向对象的基本概念 三、封装 1、封装的概念 封装是把某些可以独立存在的内容封裹起来,构成一个整体,并把内部细节隐藏起来,仅向外部提供可以提供的外在描述。
18
对象封装是把对象的属性和操作结合成一个独立的系统单位,并隐藏对象的内部细节,向外部提供对象的接口。
2、对象的封装 对象封装是把对象的属性和操作结合成一个独立的系统单位,并隐藏对象的内部细节,向外部提供对象的接口。 在类的外部不能访问 在类的外部可以访问 私有 公有 类 封装
19
① 保护对象: 3、对象封装的作用 防止用户直接存取对象的内部细节。 ② 保护客户:
对象内部细节变化,接口不变,并不影响用户对对象的使用和访问。
20
1.2 面向对象的基本概念 四、继承 1、继承的概念 继承描述一般事物与特殊事物之间的关系,特殊事物可以直接继承一般事物的属性。 花
21
四、继承 2、面向对象中的继承 继承:子类(特殊事物)无需定义,就可以直接继承父类(一般事物)的属性和操作。
1.2 面向对象的基本概念 四、继承 2、面向对象中的继承 继承:子类(特殊事物)无需定义,就可以直接继承父类(一般事物)的属性和操作。
22
1.2 面向对象的基本概念 3、继承的类型 ①单继承:子类只能继承一个父类; ②多继承:子类可以继承多个父类。
23
五、多态 1、多态的概念 多态描述子类在继承父类的属性和操作时,根据子类的特点,赋予子类的特殊性。
1.2 面向对象的基本概念 五、多态 1、多态的概念 多态描述子类在继承父类的属性和操作时,根据子类的特点,赋予子类的特殊性。
24
1.2 面向对象的基本概念 六、消息 消息是一个对象向另外一个对象发出的服务请求。消息一般包括提供服务的对象标识,操作名,输入信息,输出信息等。
25
小结 ● 第1章 软件建模概论 1.1 软件模型 1.1.1 软件模型的概念 1.1.2 软件模型的内容 ● 1.2 面向对象的基本概念
第1章 软件建模概论 1.1 软件模型 1.1.1 软件模型的概念 1.1.2 软件模型的内容 ● 1.2 面向对象的基本概念 ● —— 重要知识点
26
第2章 UML概述 2.1 关于UML 2.2 UML的构成
27
第2章 UML概述 2.1 关于UML UML的含义 UML的发展历史 UML和程序设计语言的关系
28
2.1.1 UML的含义 UML: Unified Modeling Language 统一建模语言. ① 作用: 建立软件模型 ② 建模语言: 提供交流的词汇和规则 ③ 可视化: 通过标准图符构成图形来描述模型 ④ 建模语言而非编程语言 ⑤ 通用标准: 成为软件建模的标准语言,并且在其他领域也得到应用。
29
2.1.2 UML的发展历史 UML 2.0 UML 1.4 UML 1.3 UML 1.1 工业化 标准 UML 1.0 集成
Booch ´91 Booch ´93 Unified Method 0.8 UML 1.0 OMT - 2 OMT - 1 OOSE UML 0.9 & 0.91 95年 96.1 到 96.10 ´ OMG Standard Other methods 向上 ´96.12 UML Partners UML 1.1 工业化 标准 集成 多种方法 What's UML 29
30
UML UML的创建人: Rumbaugh Booch Jacobson (朗伯夫) (布奇) (雅各布森)
(朗伯夫) (布奇) (雅各布森) UML之父 IBM Rational部门首席科学家 现代语言学家 OMT方法 Booch方法 OOSE方法 UML
31
2.2 UML的构成 第2章 UML概述 2.2.1 概述 2.2.2 UML的基本语言要素 2.2.3 UML的语义规则
概述 UML的基本语言要素 UML的语义规则 UML的公共机制
32
2.2.1 UML构成概述 ●基本语言组成 语言的构成成分,包括: 作为建模语言,UML由以下几部分构成: 要素,关系,图
●基本语言组成 语言的构成成分,包括: 要素,关系,图 ●语义规则: 语言的语法和语义规则 ●公共机制: 规范说明,语言扩展等
33
UML的构成 图 基本语言构成 语义 规则 要素 结构: (共7种) 行为: (消息, 状态) 分组: (包) 注释: (注释) 关系 依赖
关联 泛化 实现 类图, 对象图, 用例图, 顺序图, 协作图, 状态图, 活动图, 构件图, 部署图 命名 范围 可见性 完整性 执行 规范说明 修饰 通用划分 扩展机制(版型, 标记值,约束) 通用(或公共)机制 2.2.2 UML基本语言要素
34
2.2.2.1 UML语言中的要素 ●结构: 语言的静态构成要素,有7种 UML语言的基本构成要素,包括四类:
●行为: 语言的动态构成要素,表示事物 的变化和状态 ●分组: 对模型中事物分组组织的要素 ●注释: 对模型中事物标注和解释
35
结构: UML语言的静构成要素,包括7种: 类: 描述一组具有相同性质的对象。 接口: 描述一个类或一个构件的服务操作集。
1 结构 结构: UML语言的静构成要素,包括7种: 类名 类: 描述一组具有相同性质的对象。 属性 操作 接口: 描述一个类或一个构件的服务操作集。 类名 属性 操作 主动类: 对象至少拥有一个进程或线程,能启动控制活动。
36
1 结构 用例: 描述一组动作序列,参与者通过它能够完成一定的功能。 协作: 描述一组动作序列的实现。 构件: 描述软件系统的构成件。 结点: 一个基本计算单元,可以是一个物理结点,客户机或服务器。
37
行为: UML的动态构成要素,包括2种: 消息: 一组对象之间为完成某一项任务而进行的一系列消息交换的行为说明。
2 行为 行为: UML的动态构成要素,包括2种: 消息: 一组对象之间为完成某一项任务而进行的一系列消息交换的行为说明。 状态: 一个对象或一个交互在生命期内响应事件所经历的状态序列。
38
3 分组 分组: UML对模型的组织要素。 包: UML用包来对模型进行分组组织,一个包中包括若干个相关的模型元素。
39
4 注释 注释: 解释模型元素的要素。 注释:对模型中的元素进行解释。
40
UML中的关系 关系: UML定义的模型元素之间的关系,包括四种: 关联 泛化 依赖 实现
41
1 关联 关联: 本指事物之间存在的固有的牵连关系,在UML中,是对具有共同结构特征、关系和语义的对象或实例之间的链接描述。 表示:一条实线
教学 教师 学生
42
2 泛化 泛化: 在UML中,描述事物之间的一般和特殊关系。特殊事物具有并继承一般事物的特性。 表示:一条带空心三角形箭头的实箭线 例子:
超类 子类 家具 沙发
43
3 依赖 依赖: 两个要素之间的因果关系,其中一个要素(独立要素)发生变化会影响另外一个要素(依赖要素)的语义。 表示:一条虚箭线 依赖要素
(果) 独立要素 (因) 依赖于 教师 课表 授课
44
4 实现 实现: 描述类元之间的语义关系,表示说明和实现间的关系。一种是接口与实现它的类和构件;另一种是用例和实现它们的协作。 表示:一条带空心三角形箭头的虚箭线。 说明 实现 接口 用例 协作 类
45
UML中的图 UML共定义了9种图: ●用例图 ●状态图 ●类图 ●活动图 ●对象图 ●构件图 ●顺序图 ●部署图 ●协作图
46
1 用例图 用例:是外部可见的一个系统功能单元。 作用:描述一组用例,参与者及其它们之间的关系,是外部用户所能观察到的系统功能的模型图。用于需求建模。
47
2 类图 作用:描述一组类之间的关系。用于对应用领域中的概念以及与系统实现有关的内部概念建模。
48
3 对象图 作用:描述一组对象之间的关系。它是对象类图的一个实例,表示在某一时刻系统对象的状态、对象之间关系的状态以及对象行为静态方面的状态。
49
4 顺序图 作用:描述一个交互,表示了对象之间传送消息的时间顺序。
50
5 协作图 作用:描述一个交互,强调对象与对象之间的消息传递。
51
6 状态图 作用:描述一个对象所处的状态及其变化,是一个类对象所可能经历的所有历程的模型图。
52
7 活动图 作用:描述执行算法的工作流程中涉及的活动,是对人类组织的现实世界中的工作流程建模。
53
8 构件图 作用:描述一组构件及其关系,用于为系统的构件建模。
54
9 部署图 作用:描述一组节点及其关系,允许评估分配结果和资源分配。节点是一组运行期间的系统资源,如计算机、数据库、设备或存储器。
55
2.2.3 UML的基本语义规则 UML有一套规则,这些规则描述了一个结构良好的模型看起来应该象什么。一个结构良好的模型应该在语义上是前后一致的,并且与所有的相关模型协调一致。 UML的基本语义规则有: ●命名 ●范围 ●可视性 ●完整性 ●执行
56
UML的构成 结构事物: (共7种) 行为事物: (交互, 状态机) 分组事物: (包) 注释事物: (注释) 事物 依赖 关联 泛化 实现
基本语言要素 关系 命名 范围 可视性 完整性 执行 类图, 对象图, 用例图, 顺序图, 协作图, 状态图, 活动图, 构件图, 部署图 图 语义 规则 规范说明 修饰 通用划分 扩展机制(版型, 标记值,约束) 通用机制
57
2.2.3 UML的基本语义规则 1)命名 规定对要素、关系、图命名。 例如:student 为一个类的名字 2)范围 给一个名字特定含义的语境。 例如:属性name:string 3)可视性 规定外界对该名字识别和使用的范围。 三种:public:公共 + protected:保护 # private:私用 -
58
2.2.3 UML的基本语义规则 4)完整性 保证事物正确、一致地相互联系。 例如:一个对象出现在不同的图中时,如何保证其一致性。 5)执行 运行或模拟动态模型的含义是什么。
59
2.2.4 UML的通用机制 通用机制:通过与具有公共特征的模式取得一致性,使模型更为简单和协调。 UML的通用机制有: ●规格说明 ●修饰
●对应划分 ●扩展机制
60
UML的构成 结构事物: (共7种) 行为事物: (交互, 状态机) 分组事物: (包) 注释事物: (注释) 事物 依赖 关联 泛化 实现
基本语言要素 关系 命名 范围 可视性 完整性 执行 类图, 对象图, 用例图, 顺序图, 协作图, 状态图, 活动图, 构件图, 部署图 图 语义 规则 规格说明 修饰 对应划分 扩展机制(版型, 标记值,约束) 通用机制
61
2.2.4 UML的通用机制 1)规格说明 UML对每一个元素都有确定的图形表示符号,但对该图形符号还有语法、语义的文字说明。 例如:Actor:参与者,UML表示为:
62
2.2.4 UML的通用机制 2)修饰 图形符号表示一个元素的主要特征,此外,可以加上修饰,表示该元素的特征。 例如:矩形框表示一个类,有类名,属性,操作等。但也可增加“可视性” 等修饰。 可视性
63
2.2.4 UML的通用机制 例如,类-对象,用例-具体用例 ② 接口-实现 3)对应划分(通用划分)
指元素/元素实例、接口/实现这样的划分方法。 ① 抽象-实例 例如,类-对象,用例-具体用例 ② 接口-实现 接口表示约定,实现表示对约定的实施
64
2.2.4 UML的通用机制 4)扩展机制 UML提供了一种绘制软件蓝图的标准语言,为了表示出各种领域的各种模型在不同时刻所有可能的细微差别,以受控方法扩展该语言。 ① 版型(构造型) 用来扩展UML的词汇,增加语言元素; 或者划分某一种元素的不同类型。 形式:《扩展描述》 例1,把“包” 构造为“subsystem(子系统)”类型。
65
2.2.4 UML的通用机制 4)扩展机制 例2,参与者是一个版型化的类,其版型为《Actor》。
66
2.2.4 UML的通用机制 4)扩展机制 ② 标记-值 标记-值用来规定模型元素的特性。通常把标记与值用等号相连,放在花括号中,放在模型元素后面。 形式: {标记=值} 例如,{院校=云南大学}指出类student是云南大学的学生。 student {院校=云南大学}
67
2.2.4 UML的通用机制 4)扩展机制 ③ 约束 约束规定所约束的模型元素的某个条件或命题必须为真,否则模型无效。约束也用{ }描述。 形式: {约束条件} 例如,{子集}指出领导属于成员的子集。 人 学会 * 成员 * 1 领导 * {子集}
68
【UML支持工具】 ■Rational Rose(商业版IBM开发UML建模工具) ■Visio(商业版微软开发通用建模工具)
■Visual Paradigm for UML(免费中文社群版) ■Archware (免费自主研发UML建模工具) ■StarUML(免费英文UML建模工具)
69
小结 2.2.1 概述 ● 2.2.2 UML的基本语言要素 ● 第2章 UML概述 2.1 UML概述 2.1.1 UML的含义
● —— 重要知识点
70
第3章 用例及用例图 3.1 用例 3.2 参与者 3.3 用例之间的关系 3.4 用例图 3.5 发现用例
71
3.1 用例 1. 用例的概念 用例(use case): 表示参与者与系统的一次交互过程。 2.用例的表示 用例用椭圆表示
72
3. 用例的特点 ① 用例用于描述系统的功能,这个功能是外部使用者看到的系统功能,不反映功能的实现方式。 储蓄系统 √ 开户 存款 取款 转帐
73
3. 用例的特点 ② 用例描述用户提出的一些可见需求,对应一个具体的用户目标。
3. 用例的特点 ② 用例描述用户提出的一些可见需求,对应一个具体的用户目标。 储蓄系统 √ 开户 存款 取款 转帐 √ × 数据上传
74
3. 用例的特点 ③ 用例反映系统与用户的一次交互过程,应该具有交互的信息的传递。
3. 用例的特点 ③ 用例反映系统与用户的一次交互过程,应该具有交互的信息的传递。 帐户,密码,金额数 取款 确认信息,帐户余额
75
3. 用例的特点 ④ 用例是对系统功能的描述,属于需求建模。 取款 用例的动态事件流 a 通过读卡机,储户插入ATM卡
b ATM系统从卡上读取银行ID、帐号、并验证帐号。 c 储户键入密码,系统检验密码。 d 储户按确认键,输入取款金额。 e ATM把帐号和取款金额传递给银行系统,取回帐户余额。 f ATM输出现金,并显示帐户余额。 d ATM记录事务到日志文件。
76
总结 用例的特点 ② 用例描述用户提出的一些可见需求,对应一个具体的用户目标。
① 用例用于描述系统的功能,这个功能是外部使用者看到的系统功能,不反映功能的实现方式。 ② 用例描述用户提出的一些可见需求,对应一个具体的用户目标。 ③ 用例反映系统与用户的一次交互过程,应该具有交互的信息的传递。 ④ 用例是对系统功能的描述,属于需求建模。
77
3.2 参与者 1. 参与者的概念 参与者(actor)是外部需要与系统交互的事物。也被称为活动者。 2.参与者的三种类型
①. 人:客户,读者,库管员 ②. 设备:计算机,磁盘,读卡机等 ③. 外部系统:上层系统等
78
3. 参与者的表示 参与者可以表示为下面三种形式。
79
3.3 用例之间的关系 用例之间可以具有以下几种关系: ①. 关联关系 ②. 泛化关系 ③. 包含关系 ④. 扩展关系
80
1. 关联关系 参与者与用例之间是关联关系,表示参与者与用例之间具有使用,交互信息的关联。
81
2. 泛化关系 参与者与参与者之间,用例与用例之间存在一般与特殊的关系。
82
3. 包含关系 两个用例之间,一个用例(基本用例)的行为包含了另外一个用例(包含用例)的行为。
包含关系用依赖关系的<<include>>构造型来表示,箭头指向被包含的用例。
83
4. 扩展关系 扩展关系表示基本用例在扩展点要增加新的行为或功能,以扩展到新用例。
扩展关系用依赖关系的<<extend>>构造型来表示,箭头指向被扩展的用例。
84
5.用例图中的关系及解释 关系 解释 图 参与者与用例之间的关系 关联 表示参与者与用例之间的交互,通信途径。
(关联有时候也用带箭头的实线来表示,这样的表示能够显示地表明发起用例的是参与者。) 用例之间的关系 包含 箭头指向的用例为被包含的用例,称为包含用例;箭头出发的用例为基用例。包含用例是必选的,如果缺少包含用例,基用例就不完整;包含用例必须被执行,不需要满足某种条件;其执行并不会改变基用例的行为。 《include》 扩展 箭头指向的用例为被扩展的用例,称为扩展用例;箭头出发的用例为基用例。扩展用例是可选的,如果缺少扩展用例,不会影响到基用例的完整性;扩展用例在一定条件下才会执行,并且其执行会改变基用例的行为。 参与者之间或用例之间的关系 泛化 发出箭头的事物“is a”箭头指向的事物。泛化关系是一般和特殊关系,发出箭头的一方代表特殊的一方,箭头指向的一方代表一般一方。特殊一方继承了一般方的特性并增加了新的特性。 《extend》
85
3.4 用例图 用例图可以作为整个系统开发过程中的开发依据,指导和驱动其他模型。 1. 用例图的作用
用例图用来描述软件需求模型中的系统功能,通过一组用例可以描述软件系统能够给用户提供的功能。 用例图可以作为整个系统开发过程中的开发依据,指导和驱动其他模型。
86
2. 用例图的形式
89
3.5 用例的描述 自然语言 内容: 用例的目标 用例是怎么启动的 参与者和用例之间的消息是如何传送的 用例中除了主路径外,其它路径是什么
用例结束后的系统状态 其它需要描述的内容
90
模板 描述项 说明 用例名称 用例的用途 标识符* 唯一,在文档别处可引用 用例描述 简单描述 参与者表 与此用例相关的参与者列表 优先级
数字越小,优先级越高。以此决定用例开发的顺序 状态* 进行中、等待审查、通过审查或未通过审查 前置条件 条件列表,访问用例之前应得到满足 后置条件 条件列表,访问用例之后得到满足 基本操作流 描述用例中各项工作正常进行是用例工作方式 可选操作流 描述变更工作方式、出现异常所遵循的工作路径 被泛化用例表 该用例的特化用例列表 被包含用例表 该用例所包含用例列表 被扩展用例表 该用例的扩展用例列表 修改历史记录* 关于用例的修改时间、原因和修改人信息等 问题* 与此用例开发相关的问题列表 决策* 关键决策列表 频率* 参与者访问该用例的频率
91
取款用例描述实例 ●用例:取款 ●参与者:储户 ●操作流: ① 通过读卡机,储户插入ATM卡 ② ATM系统从卡上读取银行ID、帐号、并验证帐号。 ③ 储户键入密码,系统检验密码。 ④储户按确认键,输入取款金额。 ⑤ATM把帐号和取款金额传递给银行系统,取回确认信息和帐户余额。 ⑥ ATM输出现金,并显示帐户余额。 ⑦ATM记录事务到日志文件。
92
3.6 发现用例 发现用例的一般方法: ① 找出系统外部参与者,确定系统边界和范围。 ② 确定各参与者所期望的系统行为。
③ 把这些系统行为命名为用例。 ④ 确定各用例之间的关系(泛化,包含,扩展)。 ⑤ 绘制用例图。 ⑥ 编制用例说明。 ⑦ 对异常流程确定单独用例。 ⑧ 优化用例图,解决用例之间的冲突和重复。
93
某学校网上选课系统的用例分析 案例: 学生通过客户机浏览器进入系统,选择课程:可以查询课程,选择课程,支付课程费用。
管理员通过系统管理界面进入系统,建立本学期要开设的各种课程,将课程信息保存到系统中,并可以对课程进行改动和删除。 学生通过客户机浏览器进入系统,选择课程:可以查询课程,选择课程,支付课程费用。
94
● ① 找出系统外部参与者,确定系统边界和范围。
95
② 确定各参与者所期望的系统行为。 ● 管理员: 增加课程 修改课程 删除课程 学生: 查询课程 选择课程 网上付费
96
① 找出系统外部参与者,确定系统边界和范围。
② 确定各参与者所期望的系统行为。 ③ 把这些系统行为命名为用例。 ●
97
● ④ 确定各用例之间的关系(泛化,包含,扩展)。
98
● ⑤ 绘制用例图。
99
● ⑥ 编制用例说明。 ① 管理员选择进入管理界面,用例开始。 ● 用例:增加课程 ●参与者:管理员 ●操作流:
② 系统提示输入管理员密码。 ③ 管理员输入密码。 ④ 系统检验密码。 A1:密码出错。 ⑤ 进入管理界面,系统显示当前所建立的全部课程信息。 ⑥ 管理员选择增加课程,管理员输入新课程信息。 ⑦系统验证是否与已有课程冲突。 A2:有冲突。 ⑧系统添加新课程,并提示添加成功。 ⑨系统回到管理主界面,显示所有课程,用例结束。
100
⑦ 对异常流程确定单独用例。 ⑧ 优化用例图,解决用例之间的冲突和重复。 ●
101
小结 ● 3.2.2 参与者的类型 ● 第3章 用例和用例图 3.1 用例 ● 3.3 用例之间的关系 3.1.1 用例的概念
第3章 用例和用例图 3.1 用例 3.1.1 用例的概念 3.1.2 用例的表示 3.1.3 用例的特点 3.2 参与者 3.2.1 参与者的概念 ● 参与者的类型 ● 参与者的表示 ● 参与者之间的关系 ● 3.3 用例之间的关系 3.3.1 关联关系 3.3.2 泛化关系 3.3.3 包含关系 3.3.4 扩展关系 ● 3.4 用例图 3.4.1 用例图的作用 3.4.2 用例图的形式 ● 3.5 用例的描述 ● 3.6 发现用例 ● —— 重要知识点
102
? 1、下面说法错误的是: A 泛化表示一般和特殊的关系 B 用例之间存在泛化关系 C 参与者之间存在泛化关系
问题: 1、下面说法错误的是: A 泛化表示一般和特殊的关系 B 用例之间存在泛化关系 C 参与者之间存在泛化关系 D 参与者和用例之间存在泛化关系
103
? 2、下面说法错误的是: A 参与者是与所建立系统交互的人或物 B 参与者可以是人,也可以是其他系统
问题: 2、下面说法错误的是: A 参与者是与所建立系统交互的人或物 B 参与者可以是人,也可以是其他系统 C 参与者是系统的一部分,是用例图的重要组成部分 D 参与者之间存在泛化关系
104
第4章 类图及对象图 4.1 类的定义 4.2 类的关系 4.3 类图 4.4 对象图 4.5 几个特殊问题
105
第4章 类图及对象图 4.1 类的定义 类的概念 类的属性 类的操作 类的类型
106
4.1.1 类的概念 1. 类的定义 类(class): 具有相似结构、行为和关系的一组对象。 2.类的表示 类名 属性 操作
107
3.类的其他几种表示形式 ① 简化表示 学生 ② 缩略表示 实体类 界面类 控制类
108
4.类名 ① 名词或名词短语(动词或动词短语表示控制类) 例如:人,桌子,图形,汇总
② 尽可能用明确、简短,业务领域中事物的名称,避免使用抽象、无意义的名词 例如:帐户,订单,事物 ③ 用英文,第1个字母大写 例如:Shape, Person, CheckingAccdount ④ 可分为简单类名,带路径类名 例如: CheckingAccdount Banking::CheckingAccdount
109
? 问题: 1、指出下面命名有问题的的类。
110
4.1.2 类的属性 1. 属性的含义 属性(attribute): 描述类所表示事物的静态性质。 2.属性的格式
[可见性]属性名[:类型][‘[ ’多重性[次序]‘]’][=初始值][{特性}]
111
4.1.2 类的属性 1. 属性的含义 属性(attribute): 描述类所表示事物的静态性质。 2.属性的格式
[可见性]属性名[:类型][‘[ ’多重性[次序]‘]’][=初始值][{特性}] 第1个英文单词首字母小写,其它单词首字母大写 contactName credintLimit isPrepaid
112
4.1.2 类的属性 1. 属性的含义 属性(attribute): 描述类所表示事物的静态性质。 2.属性的格式
[可见性]属性名[:类型][‘[ ’多重性[次序]‘]’][=初始值][{特性}] 该属性对外部实体的显现程度. 可见public : + 受限protected: # 私有private : -
113
4.1.2 类的属性 1. 属性的含义 属性(attribute): 描述类所表示事物的静态性质。 2.属性的格式
[可见性]属性名[:类型][‘[ ’多重性[次序]‘]’][=初始值][{特性}] 属性的数据类型: 字符串:String 日期:Date 布尔:Boolean 整型:int
114
4.1.2 类的属性 1. 属性的含义 属性(attribute): 描述类所表示事物的静态性质。 2.属性的格式
[可见性]属性名[:类型][‘[ ’多重性[次序]‘]’][=初始值][{特性}] 表示属性值的取值的多寡,以及有序性: 例如: name:String[0..1] 表示属性”name”可能无值,也可能仅有一个值. points:Point[2..* ordered] 表示有两个或多个值,有序
115
4.1.2 类的属性 1. 属性的含义 属性(attribute): 描述类所表示事物的静态性质。 2.属性的格式
[可见性]属性名[:类型][‘[ ’多重性[次序]‘]’][=初始值][{特性}] 表示属性初始所取的值: 例如: #visibility:Boolean=false 表示属性”visibility”初始取”false”
116
4.1.2 类的属性 1. 属性的含义 属性(attribute): 描述类所表示事物的静态性质。 2.属性的格式
[可见性]属性名[:类型][‘[ ’多重性[次序]‘]’][=初始值][{特性}] 表示属性约束说明: 例如: #visibility:Boolean=false{读写} 表示属性”visibility”可读,写
117
? 1、指出下面属性名的含义。 问题: +姓名:String=“黎明” #出生日期:Date=1999-10-21
-年薪:float=12.01{R/W}
118
4.1.3 类的操作 1. 操作的含义 操作(operation): 描述类所表示事物的动态性质。 2.操作的格式
[可见性]操作名[(参数列表):返回类型][{特性}]
119
4.1.3 类的操作 1. 操作的含义 操作(operation): 描述类所表示事物的动态性质。 2.操作的格式
[可见性]操作名[(参数列表):返回类型][{特性}] 第1个英文单词首字母小写,其它单词首字母大写 close() creditRecording()
120
4.1.3 类的操作 1. 操作的含义 操作(operation): 描述类所表示事物的动态性质。 2.操作的格式
[可见性]操作名[(参数列表):返回类型][{特性}] 该操作对外部实体的显现程度. 可见public : + 受限protected: # 私有private : -
121
4.1.3 类的操作 1. 操作的含义 操作(operation): 描述类所表示事物的动态性质。 2.操作的格式
[可见性]操作名[(参数列表):返回类型][{特性}] 该操作的输入参数,可以为空. 例如: #create() +hide() -ttachXWindow(xwin:Xwindow)
122
4.1.3 类的操作 1. 操作的含义 操作(operation): 描述类所表示事物的动态性质。 2.操作的格式
[可见性]操作名[(参数列表):返回类型][{特性}] 该操作的返回值的类型. 例如: +display():Location
123
? 问题: 1、指出下面操作名的含义。 +设置姓名(String:name) +获取名字():String +创建一本书()
124
4.1.4 类的类型 边界类位于系统与外界的交界处,承担系统与外界的信息功能.
1.边界类(界面类) 边界类位于系统与外界的交界处,承担系统与外界的信息功能. 边界类处在用例图中,参与者与用例的关联处,可以根据用例图发现边界类。
125
实体类可以从现实中存在的客观事物,以及需要持久存放的信息两方面来发现。
2.实体类 实体类对应着现实中的客观实物,用来保存信息,一般对应着数据表、文件等。 实体类可以从现实中存在的客观事物,以及需要持久存放的信息两方面来发现。
126
一个用例中最少会有一个控制类,用来控制用例中的事件顺序,也可以在多个用例之间协调用例之间的联系。
3.控制类 控制类承担着事务处理,控制调控的控制作用。 一个用例中最少会有一个控制类,用来控制用例中的事件顺序,也可以在多个用例之间协调用例之间的联系。
127
例子:订货系统
129
第4章 类图及对象图 4.2 类之间的关系 关联 聚集和组合 泛化 依赖
130
4.2.1 关联 1. 关联的定义 ●关联的通俗含义 表示事物之间的一种牵连式的固有联系。 例如: 关联
131
4.2.1 关联 1. 关联的定义 ●关联的本质含义 关联(association): 模型元素之间的一种语义联系,它是对具有共同的结构特性、行为特性、关系和语义的链接的描述。 关联可以分为单向关联,双向关联。 单向关联 双向关联
132
2.关联的特性 ① 关联名 关联名 ★如果关联关系已经清楚,就无需关联名
133
★如果关联名与角色名相同,则不标出角色名
2.关联的特性 ② 关联的角色 关联的角色 ★如果关联名与角色名相同,则不标出角色名
134
2.关联的特性 ③ 关联的多重性 0..1 : 0或1 0..n ,0..* : 0或多 1 1..n : 1到多 * : 0到多
关联的角色 ③ 关联的多重性 关联的多重性 0..1 : 或1 0..n ,0..* : 0或多 1 1..n : 到多 * : 到多
135
通过关联类描述关联的属性,操作,及其它信息。
2.关联的特性 ④ 关联类 通过关联类描述关联的属性,操作,及其它信息。 关联类
136
例如,“帐户”不能同时与“人”和“公司”有关联。
2.关联的特性 ⑤ 关联的约束 通过约束加强关联的含义。 例如,“帐户”不能同时与“人”和“公司”有关联。 约束
137
例如,“文件目录”通过“文件名”来与具体的文件对象进行关联。
2.关联的特性 ⑥ 限定关联 通过限定符来规定关联的限定关系。 例如,“文件目录”通过“文件名”来与具体的文件对象进行关联。 “银行”通过“帐户”与具体的“人”对象进行关联。 限定关联
138
3.关联的种类 ① 一元(自返)关联 ② 二元关联
139
3.关联的种类 ③ 多元关联 三元关联
140
关联一定指的是类中对象与类中的对象之间的连接对应关系。
4.对关联须注意的一个问题 关联一定指的是类中对象与类中的对象之间的连接对应关系。 类图 对象图
141
? 问题: “班级”和“班长”两个类之间存在管理关系,一个班级仅可以有一个班长,一个班长只能是一个班级的班长,标出这两个类的关系。
142
? 问题: “班主任”和“学生”两个类之间存在管理关系,一个班主任仅可以管理一个班的学生,一个班的学生,只能由一个班主任来管理,标出这两个类的关系。
143
答案1: 答案2: 答案3:
144
4.2.2 聚集和组合 1. 聚集 聚集(aggregation): 表示类之间一种松散的整体与部分的组成关系,是一种特殊的关联。 表示
例子
145
4.2.2 聚集和组合 2. 组合 组合(composition): 表示类之间一种紧密的整体与部分的组成关系,也是一种特殊的关联。 表示
例子
146
4.2.2 聚集和组合 3. 聚集与组合的区别 ① 聚集松散,组合紧密; ② 一个部分事物对象可以属于多个聚集对象,但一个部分事物对象仅能属于一个组合对象; ③ 聚集的对象生命周期可以不同,但组合对象则是同存同亡。
147
? 问题: 1、计算机由CPU、内存、软盘、硬盘、显示器、键盘、鼠标组成,用类图表示这种关系。
148
2、举出一个具有聚集关系的类图的例子。
149
4.2.3 泛化 1. 泛化的含义 泛化(generalization): 表示事物之间的一般与特殊的关系。也可以称为继承关系。 泛化关系除了表示类与类之间的关系之外,还可以表示参与者、用例、包、构件、接口等建模元素之间的关系。
150
4.2.3 泛化 2. 泛化的表示 表示 例子
151
例子:
152
4.2.4 依赖 1. 依赖的含义 依赖(dependency): 表示两个元素X、Y,如果X的变化必然导致Y的变化,则称Y依赖X。 依赖关系不仅限于类,用例、包、构件之间都可以存在依赖关系。
153
4.2.4 依赖 2. 依赖的表示 表示 例子
154
? 问题: 下面几个模型图中,( )能够正确地表示出“一个雇员最多有一个经理,经理可以管理多个雇员,也可以不管理一个雇员”这样的意思。
155
? 问题: 下面对类之间关系的描述,( )是正确的。 A 聚集关系中的部分只属于一个整体; B 组合关系中的部分可能属于整体;
下面对类之间关系的描述,( )是正确的。 A 聚集关系中的部分只属于一个整体; B 组合关系中的部分可能属于整体; C 关联是表示对象之间的关系; D 泛化是表示对象之间的关系。
156
第4章 类图及对象图 4.3 类图 类图的概念 类图的抽象层次 建立类图
157
4.3.1 类图的概念 类图(Class Diagram): 是由类,相关建模元素,及其关系构成的图,用来描述类之间的静态关系。 类图在系统中处在核心位置。也是UML中最为重要的一种图。
160
4.3.2 类图的抽象层次 在系统的不同开发阶段,类图可以具有不同的抽象程度。随着开发的深入,类图应该越来越详细、具体。 可以分为:概念层,逻辑层,实现层。 概念层 逻辑层 实现层
161
4.3.3 建立类图 建立类图的一般步骤: ① 研究分析问题领域,确定系统需求; ② 确定类,明确类的含义和职责,确定类的属性和操作;
③ 确定类之间的关系。关联,泛化,聚集,组合,依赖; ④ 调整和细化类及其关系,解决重复和冲突; ⑤ 绘制类图,并增加相应说明。
162
4.4 对象图 1、对象图的概念: 对象图表示一组对象及其它们之间的联系。 对象是系统的详细状态在某一时刻的快照,通
常用来表示复杂类图的一个实例。 2、说明: ① 对象图并不在任何时间必须; ② Rose2003不支持对象图。
163
类图 对象图
164
第4章 类图及对象图 4.5 几个特殊问题 对象类和抽象类 派生属性和派生关联
165
4.5.1 对象类和抽象类 ① 对象类 可以实例化为对象的类。我们前面所提的例子都属于对象类。 ② 抽象类
不能直接产生实例的类。抽象类的类名一般被写成为斜体。
166
4.5.2 派生属性和派生关联 派生属性和派生关联的概念 可以从其它属性或关联计算推演得到的属性和关联。 在派生的名字前面加/,以示区别。
派生容易产生不一致,应注意。 派生属性 派生关联
167
1、类图是用来描述系统资源和要素相互之间的静态结构关系。
注意点: 1、类图是用来描述系统资源和要素相互之间的静态结构关系。 注意类图和用例图之间的区别!
168
2、类可以优化,一个复杂类可以分解为多个简单类。
注意点: 2、类可以优化,一个复杂类可以分解为多个简单类。
169
例如:
170
3、描绘类图时,应根据所要表现的应用需要来提取要素,绘制类图。
注意点: 3、描绘类图时,应根据所要表现的应用需要来提取要素,绘制类图。
171
例如: 描述企业与个人雇佣关系的类图。 方法1: 方法2:
172
方法3:
173
小结 ● 4.1 类的定义 4.1.4 类的类型 4.4 对象图 ● 4.2 类之间的关系 4.2.1 关联 4.5 几个特殊问题 ●
第4章 类图和对象图 ● 4.1 类的定义 4.1.1 类的概念 4.1.2 类的属性 4.1.3 类的操作 4.1.4 类的类型 ● 4.2 类之间的关系 4.2.1 关联 4.2.2 聚集和组合 4.2.3 泛化 4.2.4 依赖 ● 4.3 类图 4.3.1 类图的概念 4.3.2 类的抽象层次 4.3.3 建立类图 4.4 对象图 4.4.1 对象图的概念 4.4.2 对象图的作用 4.5 几个特殊问题 4.5.1 对象类和抽象类 4.5.2 派生属性和派生关联 ● —— 重要知识点
174
? 1、下面正确的说法是: A 对象表示客观中存在的实物 B 类是对象的实例 C 类是具有相同属性和操作的对象的集合 D 对象也就是类
问题 : 1、下面正确的说法是: A 对象表示客观中存在的实物 B 类是对象的实例 C 类是具有相同属性和操作的对象的集合 D 对象也就是类
175
? 问题: 2、下面说法正确的是: A 抽象类是对类的抽象 B 抽象类是对对象的抽象 C 对象类是指类的对象 D 对象类是具有对象实例的类
176
? 3、下面说法正确的是: A 关联表示两个类之间的关系 B 关联表示两个类中对象之间的链接关系 C 组合表示事物之间的一般和特殊关系
问题: 3、下面说法正确的是: A 关联表示两个类之间的关系 B 关联表示两个类中对象之间的链接关系 C 组合表示事物之间的一般和特殊关系 D 泛化表示事物之间的整体与部分关系
177
第5章 交互图 5.1 概述 5.2 顺序图 5.3 协作图 5.4 顺序图与协作图比较
178
第5章 交互图 5.1 概述 1 交互图的概念 2 交互图的类型 3 交互图的作用
179
1 交互图的概念 交互图(interaction): 用来描述对象之间,以及对象与参与者之间的动态协作关系以及协作过程中行为次序的图形文档。 2.交互图的类型 顺序图,协作图 3 交互图的作用 分析为了实现一个用例的功能所参与的对象,以及这些对象相互之间的动态消息联系。
180
第5章 交互图 5.2 顺序图 顺序图的概念 顺序图的样式和元素 消息 建立顺序图
181
1. 顺序图的概念 顺序图(sequence diagram): 用来描述为了完成确定事务,对象之间按照时间消息交互的顺序关系。
2. 顺序图样式和元素 消息 对象 生命线 控制焦点
182
2. 顺序图样式和元素 ① 对象及命名 ● 对象名:类名 :类名 对象名
183
2. 顺序图样式和元素 ① 对象的命名 ● ② 生命线 表示对象存在的时间,对象下面一条虚线表示。 对象生命线
184
2. 顺序图样式和元素 ① 对象的命名 ② 生命线 表示对象存在的时间,对象下面一条虚线表示。 ③ 控制焦点
小矩形,表示这个时间对象将执行操作。 ● 控制焦点
185
2. 顺序图样式和元素 ① 对象的命名 ② 生命线 表示对象存在的时间,对象下面一条虚线表示。 ③ 控制焦点
小矩形,表示这个时间对象将执行操作。 ④ 消息 带箭头的连线,表示对象之间传输的信息。 ● 消息
186
3. 消息 消息:对象之间传输的信息。消息有以下类型: ① 调用消息
调用消息(也称为同步消息)的发送者把控制传递给接收者,然后停止活动,等到消息接收者放弃或返回控制。 调用消息
187
3. 消息 ②异步消息 异步消息的发送者通过消息把信号传递给接收者,然后继续自己活动,不等待接收者返回消息或控制。 异步消息
188
3. 消息 ③返回消息 返回消息表示从过程调用返回。如果是从过程调用返回,则返回消息是隐含的,可以不画出来。
对于非过程调用,如果有返回消息,必须画出来。 返回消息
189
3. 消息 ④阻止消息 阻止消息指消息发送者发出消息给接收者,如果接收者无法立即接收这个消息,则发送者放弃这个消息。 阻止消息
190
3. 消息 ⑤超时消息 超时消息指消息发送者发出消息给接收者,并按指定时间等待,如果接收者无法在指定时间内接收这个消息,则发送者放弃这个消息。 超时消息
191
3. 消息类型 ● 同步消息 ● 异步消息 ● 返回消息 ● 阻止消息 ● 超时消息
192
3. 消息 ⑥消息的语法格式 [警戒条件][消息序号][返回值:=]消息名([参数列表]) 例如: 2:display(x,y) 简单消息
1.2.1:p:=find(specs) 嵌套消息,消息带返回值 [x<0]4:invert(x,color) 条件消息 3.1 *update() 循环消息
193
零售业务顺序图
194
4.建立顺序图 ① 从用例中识别交互过程; ② 识别参与交互过程的对象; ③ 为每一个对象设置生命线,并确定对象的存在期限; ④ 从引发交互的初始消息开始,在对象生命线上依次画出交互的消息; ⑤如果需要,可以给消息增加时间约束,以及前置条件和后置条件。
195
实例:图书馆借书处理的顺序图
196
实例:图书馆借书处理的顺序图 ① 管理员进入图书借阅界面,用例开始。 ② 系统要求输入借阅者的借书证编码。
● 用例:借书 ●参与者:管理员,借阅者 ●操作流: ① 管理员进入图书借阅界面,用例开始。 ② 系统要求输入借阅者的借书证编码。 ③系统检验借书证编码,如果正确,则显示借阅者的信息。 A1:借书证编码有错。 A2: 如果该借阅者所借图书已经超期,则提示,本次拒借. ④ 系统要求输入所借图书的条码。 ⑤ 系统显示所借图书的信息。 ⑥ 确认借书。 ⑦系统回到上一界面,等待处理下一借书。
197
实例:图书馆借书处理的顺序图 ① 识别交互过程。
读者在借书时,先由管理员把借书证上的读者编号扫描给系统,系统检查这个读者的借书证合法信息,如果不合法,则系统给出提示,如果正确系统返回读者的身份信息,以及读者的借阅信息。 如果读者借书数量没有超过借书的上限,则把要借书的图书编号输入系统,系统登记借书信息,并返回借书成功信息,借书过程完成。
198
实例:图书馆借书处理的顺序图 ② 识别参与交互过程的对象;
199
绘制借书处理类图
200
实例:图书馆借书处理的顺序图 ③ 为每一个对象设置生命线,并确定对象的存在期限;
④ 从引发交互的初始消息开始,在对象生命线上依次画出交互的消息 ⑤ 绘制顺序图
202
第5章 交互图 5.3 协作图 协作图的概念 协作图的样式和元素 建立协作图
203
1. 协作图的概念 协作图(collaboration diagram): 用来描述为了完成确定事务,各对象之间消息联系的结构关系。
2. 协作图样式和元素 消息 对象
204
2. 协作图样式和元素 ① 主动对象 主动对象是有一方法可以自动启动执行,框加粗。 框加粗
205
2. 协作图样式和元素 ① 主动对象 主动对象是有一方法可以自动启动执行,框加粗。 ② 多对象 表示同属于一个类的多个对象集合。 多对象
206
2. 协作图样式和元素 ① 主动对象 主动对象是有一方法可以自动启动执行。 ② 多对象 表示同属于一个类的多个对象集合。 ③ 链和消息
连接对象的线段,以及对象之间传输的信息。 消息 链
207
协作图例子:
208
3.建立协作图 ① 从用例中识别交互过程; ② 识别参与交互过程的对象; ③ 确定对象之间的链,以及链上的消息; ④ 从引发交互的初始消息开始,将随后每个消息附在相应的链上; ⑤ 如果需要,可以给消息增加时间约束,以及前置条件和后置条件。
209
实例:与图书馆借书处理顺序图对应的协作图
210
5.4 顺序图与协作图的异同 1 顺序图和协作图都属于交互图,用来描述对象之间的动态关系。
1 顺序图和协作图都属于交互图,用来描述对象之间的动态关系。 2 顺序图强调消息的时间顺序,协作图强调参与交互的对象的组织关系。 3 顺序图和协作图在语义上是等价的,两者可以相互转换。
211
小结 ● 5.2 顺序图 5.4 顺序图和协作图 5.2.2 顺序图的样式和元素 ● 第5章 交互图 5.1 概述 5.1.1 交互图的概念
第5章 交互图 5.1 概述 5.1.1 交互图的概念 5.1.2 交互图的类型 5.1.3 交互图的作用 ● 5.2 顺序图 5.2.1 顺序图的概念 5.2.2 顺序图的样式和元素 5.2.3 消息 5.2.4 建立顺序图 ● 5.3 协作图 5.3.1 协作图的概念 5.3.2 协作图的样式和元素 5.3.3 建立协作图 5.4 顺序图和协作图 ● —— 重要知识点
212
? 1、下面说法错误的是: A 顺序图和协作图都能反映对象之间发送的消息的联系 B 顺序图和协作图在语义上是等价的
问题: 1、下面说法错误的是: A 顺序图和协作图都能反映对象之间发送的消息的联系 B 顺序图和协作图在语义上是等价的 C 顺序图强调发送和接收消息的对象之间的结构组织关系 D ROSE可以实现顺序图和协作图之间的等价转换
213
? 问题: 2、从严格意义上讲,下列四个选项中不属于顺序图的内容是( ) A 对象 B 参与者 C 消息 D 控制焦点
214
第6章 状态图和活动图 6.1 状态图 6.2 活动图 6.3 两种图的比较
215
第6章 状态图和活动图 6.1 状态图 什么是状态图 状态图的要素 状态图的作用
216
6.1.1 什么是状态图 1. 状态图的概念 状态图(statechart diagram): 用来描述一个特定的对象所有可能的状态,以及由于各种事件的发生而引起的状态之间的转移和变化。
217
状态图的例子 一个机器 的状态图: 一个发货单 的状态图:
218
6.1.2 状态图的要素 事件 开始状态 转移 状态 结束状态 货品发货的状态图
219
1 状态 1. 状态的概念 状态(state): 是指对象在其生命周期中,满足某些条件、执行某些活动、或等待某些事件时的一个状况。
状态指的是对象的状态。例如: ● 发票(对象)被支付(状态) ● 小车(对象)正在停着(状态) ● 发动机(对象)正在工作(状态) ● 电灯(对象)开着(状态)
220
2.状态的表示和要素 1 状态 ● 状态的表示:用圆角的矩形框表示状态。 ● 状态的要素:包括状态名,进入、退出、内部转移的动作,子状态等。
进入动作 退出动作 内部转移动作
221
1 状态 3. 状态的类型 ① 初始状态 ② 原子状态 ③ 结束状态
222
④ 组合状态和子状态 子状态:被嵌套在另外一个状态中的状态。 组合状态:含有子状态的状态。组合状态也可以有初态和终态。 组合状态 子状态
223
⑤ 并发状态 并发状态:指一个对象在同一时刻可以处在多种状态。 付款确认 已确认
224
⑥ 历史状态 记录组合状态退出时所处的子状态,以便再次进入从这个状态开始工作。
225
2 转移 1. 转移的概念 转移(transition): 是一个状态向另外一个状态的转换。对象处在源状态时,发生一个事件,如果条件满足,则执行相应的动作,对象由源状态转移到目标状态。 转移用箭头表示,如果没有标注事件,则本转移为自动转移。 转移
226
2 转移 2. 转移的类型 ① 自转移: 源状态和目标状态为同一状态的转移。 自转移
227
② 自动转移: 一个 状态根据本状态的有关情况,自动触发进入目标状态,在转移上没有事件。
② 自动转移: 一个 状态根据本状态的有关情况,自动触发进入目标状态,在转移上没有事件。 自动转移 ③ 条件转移: 通过分支判断所确定的转移。 条件转移
228
3 事件 1. 事件的概念 事件(event): 是指在确定的时间和位置所发生的对对象起作用的事情。事件的发生将引起一些动作,使对象发生状态的转移。 动作:动作是对象类中一个操作的执行,动作具有原子和不可中断特性。
229
3. 事件的类型 2. 事件的描述 事件名称[参数表] ① 调用事件:是表示对操作的调度。 事件的形式参数,可以省略
字符串,常为接收对象类中的一个操作。 3. 事件的类型 ① 调用事件:是表示对操作的调度。 事件
230
② 变化事件:因满足某种条件而引起的事件,变化条件用when表示。
231
3. 事件的类型 ③ 时间事件:满足某一时间表达式而引起的事件,时间事件用after,when表示。 事件
232
6.1.3 状态图的作用 状态图: 用来描述一个对象在其生命周期中所表现出来的状态和行为。
当在系统建模过程中需要描述某个事物或对象的不同状态,以及状态之间转移的事件和动作时,用状态图。 但状态图并不是对每一个对象都需要的。
233
实例:图书馆中“图书”的状态图
234
第6章 状态图和活动图 6.2 活动图 什么是活动图 活动图的要素 活动图的用途
235
6.2.1 什么是活动图 1. 活动图的概念 活动图(activity diagram)是UML的动态视图之一,用来描述事物或对象的活动变化流程。
236
6.2.2 活动图的要素 活动 活动流 泳道 分劈 汇合
237
1 活动 活动(Action): 是活动图主要结点,用两边为弧的条形框表示,中间填活动名 。 活动分为简单活动和复合活动。
简单活动:不能再分解的活动; 复合活动:可以再分解的复杂活动。 简单活动 复合活动
238
2 活动流 活动流(ActionFlow): 描述活动之间的有向关系,反映一个活动向另外一个活动之间的转移。用带箭头的实线表示。 活动流
239
3 分支 分支: 表示活动流的分叉和合并。表示从一个活动按照某种条件转移到几个不同的活动。 分叉 合并
240
4 分劈和汇合 分劈和汇合: 表示并发的同步行为,用同步杆表示。 分劈 汇合
241
5 泳道 泳道(swimlane): 是活动图中的区域划分,每一个泳道代表一个责任区域。一个泳道中包括一组相关活动。 泳道
242
7 对象流 对象流: 反映活动与对象之间的依赖关系,表示对象对活动的作用或活动对对象的影响,用依赖关系表示。 对象流
243
活动图具有广泛地用途,在软件建模中,活动图可以用来:
6.2.3 活动图的用途 活动图具有广泛地用途,在软件建模中,活动图可以用来: 1. 描述工作流 工作流:也被称为业务流程, 属于业务活动的过程,可以用活动图来描述。 2. 描述工程组织过程 各种工程组织过程,管理过程均可以用活动来描述。 3. 描述算法流程
244
1. 描述工作流 软件工程瀑布模型活动图
245
2. 描述工作组织过程
246
3. 描述算法流程
247
6.3 状态图与活动图的比较 ● 描述对象不同 状态图:描述对象状态及状态之间的转移; 活动图:描述从活动到活动的控制流。 ● 使用场合不同
6.3 状态图与活动图的比较 ● 描述对象不同 状态图:描述对象状态及状态之间的转移; 活动图:描述从活动到活动的控制流。 ● 使用场合不同 状态图:描述对象在其生命期中的行为状态变化; 活动图:描述过程的流程变化。
248
小结 ● 6.1 状态图 ● 6.2 活动图 6.2.1 什么是活动图 ● 第6章 状态图和活动图 6.1.1 什么是状态图
第6章 状态图和活动图 ● 6.1 状态图 6.1.1 什么是状态图 6.1.2 状态图的要素 6.1.3 状态图的作用 ● 6.2 活动图 6.2.1 什么是活动图 6.2.2 活动图的要素 6.2.3 活动图的用途 6.3 状态图和活动图的比较 ● —— 重要知识点
249
? 下面说法错误的是: A 状态可以用来描述涉及多个用例的对象的行为 B 一些高级的状态图可以用来描述多个对象之间的关系
问题: 下面说法错误的是: A 状态可以用来描述涉及多个用例的对象的行为 B 一些高级的状态图可以用来描述多个对象之间的关系 C 活动图可以用来描述企业中的业务流程 D 活动图可以用来描述多个用例间多个对象间的行为
250
第7章 构件图、部署图和包图 7.1 构件图 7.2 部署图 7.3 包图
251
第7章 构件图、部署图和包图 7.1 构件图 构件 构件图 构件图的作用
252
7.1.1 构件 1. 构件的概念 构件(component): 是一个相对独立的可装配的物理块,一般作为一个独立的文件存在。
构件具有确定的接口,相互之间可以调用,构件之间存在依赖关系。
253
2.构件的类型 ●《源代码件》:源程序文件块. ●《执行件》:编译的结果,可投入运行。 ● 《库》:可以是类库、动态链接库、数据库等。
● 《文件》:信息的存储体。 ● 《库》:可以是类库、动态链接库、数据库等。 ● 《表》:表示数据库中的数据表。 ● 《文档》:泛指形成的所有文字材料。
254
3.构件的表示 在UML中,构件通过以下形式来表示:
255
7.1.2 构件图 构件图(component diagram): 描述构件及其相互关系的图。构件之间是依赖关系。
256
7.1.3 构件图的作用 1. 对源代码文件之间的相互关系建模
257
7.1.3 构件图的作用 2.对可执行文件之间的相互关系建模
258
构件图的例子:
259
第7章 构件图、部署图和包图 7.2 部署图 什么是部署图 部署图的要素 部署图的例子
260
7.2.1 什么是部署图 部署图(deployment diagram): 用来描述系统中计算结点的拓扑结构和通信路径与结点上运行的软件构件等。 一般一个系统仅有一个部署图。
261
7.2.2 部署图的要素 1.结点 结点(node)表示独立计算资源的物理设备,可以分为处理机(processor)和设备(device)两类。 处理机:主机,服务器,客户机等; 设备:打印机,传感器,终端等。
262
7.2.2 部署图的要素 2.连接 连接表示两个结点之间的物理连接关系,用直线表示,在连接上可以加多重性、角色、约束等。
263
部署图的例子:
264
实例1:
265
实例2:
266
第7章 构件图、部署图和包图 7.3 包图 包的概念 包的关系 包的设计原则 包图
267
1. 包的定义 7.3.1 包的概念 包(Package): 是UML用来组织模型元素的模型元素。
包中可以包含类、接口、构件、用例、结点、活动、状态、包等其他模型元素。 包是对软件模型进行分解、组织的有效的模型元素。
268
2.包的表示 UML用带把的矩形框来表示包。 简单包名 路径包名
269
3.包中元素的可见性 包中的元素对其他包可以访问,也可以隐藏,可见性具有可见、保护和私有三种形式。 可见 保护 私有
270
1. 依赖关系 7.3.2 包的关系 如果一个包要访问或导入另外一个包中的元素,则两个包之间存在依赖关系。
包的依赖关系用UML中的虚线箭头来表示,由源包指向被依赖的独立包。 在依赖关系上标注《import》导入的构造型。
271
2. 泛化关系 包之间也可以存在泛化关系。特殊包继承一般包的特性。 依赖 泛化
272
3. 包的嵌套 包之中可以嵌套子包。
273
7.3.3 包的设计原则 在设计包时,应遵循以下原则: ● 重用等价原则 ● 共同闭包原则 ● 共同重用原则 ● 非循环依赖原则
274
1、重用等价原则 2、共同闭包原则 把类放到包中时,尽量把包可以作为可重用的单元。包是可重用的包,包中的类是可重用的类。
把可能同时修改,同时维护的类放到一个包中,以便于维护,和升级。
275
3、共同重用原则 4、非循环依赖原则 把将会同时,或使用时间相隔不长的建模元素放到同一个包中。
包之间的依赖关系不要形成循环:即A依赖B,B依赖C,C又依赖A。
276
7.3.4 包图 包图由包和包之间的联系构成,包图中的图形元素是包,包之间用依赖关系或泛化关系连接。包图是对系统结构建模的重要工具。
277
研究生毕业答辩管理系统包图:
278
小结 ● 第7章 构件图、部署图和包图 ● 7.3 包图 ● —— 重要知识点 7.1.1 构件 7.1.2 构件图
● 7.1 构件图 7.1.1 构件 7.1.2 构件图 7.1.3 构件图的作用 ● 7.2 部署图 7.2.1 什么是部署图 7.2.2 部署图的要素 7.2.3 部署图的例子 ● 7.3 包图 7.3.1 包的概念 7.3.2 包的关系 7.3.3 包的设计原则 7.3.4 包图 ● —— 重要知识点
279
第8章 总结 8.1 UML应用领域 8.2 软件模型与UML图 8.3 实箭头在各种图中的含义 8.4 论文审查流程 8.5 答辩流程
280
8.1 UML的应用领域 UML具有广泛的应用领域: ●软件建模 ●一般工程建模: 机构建模,流程建模,结构建模, 活动建模,状态建模等
281
模型类型与UML图的对应 业务用例图,活动图,状态图,实体图; Erksson-Penker UML扩展机制。 用例图,活动图,状态图等
业务模型 业务用例图,活动图,状态图,实体图; Erksson-Penker UML扩展机制。 需求模型 用例图,活动图,状态图等 逻辑模型 类图,交互图,活动图,状态图等 设计模型 类图,交互图,活动图,状态图等 实现模型 构件图,部署图等 测试模型 用例图,类图,交互图等
282
8.2 软件分析、设计与UML图 需求获取 分析 设计 活动图 活动图 状态图 用例图 类图 类图 顺序图 协作图 (界面、控制与实体)
(业务流程) 活动图 (处理流程) 状态图 用例图 类图 (界面、控制与实体) 类图 (属性与操作) 顺序图 协作图
283
8.3 实箭头在各种图中的含义 名称 含义 用例图 表示参与者与用例间的关联关系 类图 表示类与类间的单向关联关系 顺序图
表示调用消息(同步消息) 协作图 状态图 表示转移 活动图 表示活动流
284
8.4 论文审查流程
285
8.5 答辩流程
286
软件建模结论 建模可以用一种轻盈的方式
Similar presentations