第5章 类图和对象图-4
UML面向对象分析、建模与设计课件第五章 类图

类——操作
操作是一个可以由类的对象请求以影响其行为的服务的实现,也即 是对一个对象所做的事情的抽象,并且由这个类的所有对象共享。
操作是类的行为特征或动态特征。 操作的语法格式为:
可见性OPT 操作名 ⌊(参数列表)⌋OPT ⌊:返回类型⌋OPT ⌊{特性}⌋OPT
操作名:操作的标识符。在描述操作时,操作名是必须的,其他部 分可选。
Student
+monitor 1
1..*
自关联
类图中的关系——关联关系
关联名称:放在关联路径的旁边,但远离关联端。 角色:放在靠近关联端的部分,表示该关联端连接的类在这一关联
关系中担任的角色。角色名上也可使用可见性修饰符号。 多重性:放在靠近关联端的部分,表示在关联关系中源端的一个对
象可以与目标类的多少个对象之间有关联。 导航性:一个布尔值,用来说明运行时刻是否可能穿越一个关联。 限定符:是二元关联上的属性组成的列表的插槽,其中的属性值用
/WorksForCompany
Department * +department 1 WorksForDepartment
* Person
类图中的关系——泛化关系
泛化关系定义为一个较普通的元素与一个较特殊的元素之间的类元 关系。其中描述一般的元素称为父,描述特殊的元素称为子。
通过泛化对应的继承机制使子类共享父类的属性和操作,小了模型 的规模,同时也防止了模型的更新所导致的定义不一致的意外。
法了,此时称之为N元关联。
类图中的关系——关联关系
class Logical View
ClassA
AssociationName
+rolename 0..*
软件体系结构课件第5章统一建模语言

2:GetPrefSet()
10:PrefSet(date_mg)
1:GetPrefSet()
:MeetingInitiator
第5章 统一建模语言 直接使用UML建模 – 会议安排系统的类图
Person
StronglyConflicts With
Conflicts With
Important Attendee
0..* 0..*
0..* Profers
Attendee
1..* 1..* 0..* 0..*
11 1 1
1
Meeting Initiator
Find.exe
Query .dll
部署图 定义系 统中软 硬件的 物理体
系结构
第5章 统一建模语言 部署图
客户端:个人PC QueryClient.exe
服务器
《TCP/IP》 查询
QueryServer.exe 部署图
定义系
统中软
Find.exe
硬件的
物理体
Query.dll系结构
第5章 统一建模语言
第5章 统一建模语言
直接使用UML建模 – UML中的通用表示
➢ 字符串:表示有关模型的信息; ➢ 名字:表示模型元素; ➢ 标号:不同于编程语言中的标号,是用于表示或说明图形符号的字
符串; ➢ 特殊字符串:表示某一模型元素的特性; ➢ 类型表达式:声明属性、变量及参数,含义同编程语言中的类型表
0
10
20
30s 时间刻度
第5章 统一建模语言 状态图
提交订单 已审核 印前处理
客户付钱
已付款
已处理
进行冲印
冲印中 冲印完成
描述满足 用例要求 所要进行 的活动以 及活动间 的完约成束关 系,有利 于识别并 行活动
第五章 类图和对象图(UML)

+
size
:integer
=(100)
9
第 五 章 类 图 和 对 象 图
5.1 类的定义
说明:
3、属性还有取值范围。类型表示该属性的种类。 它可以是基本数据类型,例如整数、实数、布尔 型和枚举型等,也可以是用户自定义的类型。一 般它由所涉及的程序设计语言确定必须为其指定 数据类型。当一个类的属性被完整定义后,它的 任何一个对象的状态都由这些属性的特性值所决 定。
20
第 五 章 类 图 和 对 象 图
5.2 类之间的关系
1、关联
关联是一种结构关系,它指明一个事物的对象与 另一个事物的对象间的联系 例如,一个人为一家公司工作,一家公司有许多办 公室。我们就认为人和公司、公司和办公室之间 存在某种语义上的联系。在分析设计的类图模型 中,则在对应人类和公司类、公司类和办公室类 之间建立关联关系
改变的因素:1.一个类向另一个类发送消息。 2.一个类是另一个类的数据成员类型 3.一个类是另一个类的操作的参数类型 注:如果两个类之间有关联,那么这两个类就有依赖关 系,但是我们一般不标出依赖关系。
37
第 五 章 类 图 和 对 象 图
5.2 类之间的关系
3、泛化(generalization)关系
泛化关系:定义了一般元素和特殊元素之间的分类关系。 也就是一种继承关系。继承是在现有类的基础上定义和 实现一个新类的技术,刻画了类的一般性和特殊性。被 继承的类称为父类或超类,继承的类称为子类。 表示形式:用空心三角箭头实心线表示
25
第 五 章 类 图 和 对 象 图
5.2 类之间的关系
1、关联
角色:当一个类处于关联的某一端时,该类就在 这个关系中扮演着一个特定的角色。角色就是关 联关系中一个类对另一个类所表现的职责
第5章类图和对象图解析

3 操作
用于修改、检索类的属性或执行某些动作。 一个类可以有任意数量的操作或者根本没有操作 返回类型、名称和参数一起被称为特征标记。 在同一个类中,操作的名称不必是惟一的,但特 征标记必须是惟一的。 在UML中,类操作的语法为:
[可见性] 操作名 [(参数列表)] [:返回类型] [{特性}]
5.1 类的定义
面向对象系统组织结构的核心。 对一组具有相同属性、操作、关系和语义的对象 的抽象。 包括名称部分(Name)、属性部分(Attribute) 和操作部分(Operation)。
5.1 类的定义
1 2 3 4 5 6 7 名称 属性 操作 职责 约束 注释 用户定义分栏
① 对象必须了解自己,即他有自己的结构和当前状态 ② 对象必须了解他的直接关系
③ 对象有时还要监视特定的信息
类可以有任意数目的属性,也可以没有属性。 在UML中,类属性的语法为: [可见性] 属性名 [:类型] [多重性] [=初始值] [{特性}]
2 属性
(1) 可见性 (2) 属性名 (3) 类型 (4)初始值 (5) 特性 (6) 类作用域的属性
Event
-name:String=no default,{Reauired,1..30 chars} -startDate:Calendar=no defalut,{Required,>today} -duration_in_days:int=1{>0}
(6)类作用域的属性
大部分属性的拥有者是特定的对象(类实 例),这些属性称为实例作用域的属性 属性的值被定义和保存在类里,该类的任 何对象都可以访问这个值,则称为类作用 域的属性,又称为静态属性 表示:
在操作分栏的内部,根据操作的用途,可以使用 版型将操作分成许多小组。
类图和对象图

5
5.2.1 关联
关联(association)是模型元素间的一种语义联系 它 是模型元素间的一种语义联系, 关联 是模型元素间的一种语义联系 // 类A的源码 的源码 是对具有共同的结构特性、行为特性、关系和语义的 是对具有共同的结构特性、行为特性、class A public { 的描述. 链(Link)的描述 的描述
21
5.5 构造型
构造型(stereotype)是UML的3种扩展机制之一 是 种扩展机制之一. 构造型 的 种扩展机制之一 构造型是建模人员在已有的构造块上派生出新的构造 这些新的构造块与特定问题相关. 块,这些新的构造块与特定问题相关 这些新的构造块与特定问题相关 构造型可以应用于所有类型的模型元素. 构造型可以应用于所有类型的模型元素
31
5.8 领域分析
建立类图的过程就是对领域及其解决方案的分析与 设计过程. 设计过程 领域分析包括: 领域分析包括
通过对某一领域中的已有应用系统、理论、技术、 通过对某一领域中的已有应用系统、理论、技术、开发历 史等的研究, 来标识、收集、组织、 史等的研究 来标识、收集、组织、分析和表示领域模型及 软件体系结构的过程; 软件体系结构的过程 根据这一过程得到的结果. 根据这一过程得到的结果
23
5.6.1 边界类
边界类位于系统与外界的交界处,包括 边界类位于系统与外界的交界处 包括: 包括
用户界面类, 窗口、对话框、 用户界面类, 如: 窗口、对话框、报表类等 通讯协议类, TCP/IP的类 通讯协议类, 如: TCP/IP的类 直接与外部设备交互的类 直接与外部系统交互的类
边界类的UML表示方法 表示方法: 边界类的 表示方法
继承
MyDerivedClass att: int myFunction()
第05章 类图及对象图

26
实体类通过事件流和交互图发现, 实体类通过事件流和交互图发现, 采用目 事件流和交互图发现 标领域术语命名. 标领域术语命名. 通常实体类对应数据库中的表, 属性对 通常实体类对应数据库中的表, 其属性对 应表的字段 字段, 应表的字段, 但实体类与数据库中的表不一定 是一一对应关系. 是一一对应关系.
23
借书处理类图
24
通过用例图可以确定需要的边界类, 每个Actor/User 通过用例图可以确定需要的边界类, 每个Actor/User case对至少需要一个边界类 对至少需要一个边界类. case对至少需要一个边界类.
但并不是每个 case都需 Actor/Use case都需 要生成惟一边界类, 要生成惟一边界类, 多个actor actor启动同一 多个actor启动同一 case可以使用同 use case可以使用同 一边界类. 一边界类.
初始值][{特性}] [可见性]属性名[:类型][‘[ ’多重性[次序]‘]’][=初始值][{特性}] 可见性]属性名[:类型][ 多重性[次序] ][=初始值][{特性 [:类型
该属性对外部实体的显现程度. 该属性对外部实体的显现程度. 可见public : + 可见public 受限protected: 受限protected: # 私有private 私有private : -
13
?
问题: 问题:
1、指出下面属性名的含义。 、指出下面属性名的含义。
+studentName:String=“李明” 李明” 李明 #studentBirthDay:Date=1999-10-21 -price:float=12.01{R/W}
14
5.1.3 类的操作
第5章类图和对象图

第5章类图和对象图5.1 类的定义在UML中,有两个图非常重要,一个是第3章中介绍的用例图,另一个是本章将要介绍的类图。
Rumbaugh对类的定义是:类是具有相似结构、行为和关系的一组对象的描述符。
在UML中,类表示划分成3个格子的长方形,如图5.1所示。
图5.1 UML中表示类的符号在图5.1所示的类中,类名是Shape,共有4个属性,分别为origin、size、fillColor 和count,其中属性count有一下划线,表示该属性是静态属性。
Shape类有Shape()、move()、resize()和display()方法。
其中方法Shape()的版型为<<constructor>>,表示该方法是构造方法,而Shape类是一个版型为Graphics的类。
对于版型的定义在5.5节中还会介绍。
在定义类的时候,类的命名应尽量应用领域中的术语,应明确、无歧义,以利于开发人员与用户之间的相互理解和交流。
一般而言,类的名字是名词。
在UML中,类的命名分simple name和path name两种形式,其中simple name形式的类名就是简单的类的名字。
而path name 形式的类名还包括了包名。
例如,下面是path name形式的类名:Banking::CheckingAccount其中Banking是包名,CheckingAccount是包Banking中的一个类。
5.1.1.类的属性属性在类图标的属性分隔框中用文字串说明,最新的UML规范说明1.5版本中定义属性的格式为:[可见性]属性名[:类型]['['多重性 [次序] ']'][=初始值][{特性}]根据详细程度的不同,每条属性可以包括属性的可见性、属性名称、类型、多重性、初始值和特性。
其中特性是用户对该属性性质的一个约束说明。
例如{只读}这样的特性说明该属性的值不能被修改。
第5章类图和对象图

Processor
4 泛化关系
存在于一般元素和特殊元素间的分类关系。 可以用于类、用例以及其他模型元素。 描述了一种“is a kind of” 的关系。
4 泛化关系
描述银行账户的类图
使用泛化关系 的银行账户类
4 泛化关系
泛化主要用途: I. 多态 II. 继承 ① 单继承 ② 多重继承
(2) 操作名
用来描述所属类的行为的动词或动词短语。 单字操作名小写,多字单词除了第一个单 词外其余单词的首字母要大写。 例如: - getName()
(3) 参数表
一些按顺序排列的属性定义了操作的输入。 是可选的。 定义方式:“名称:类型”。 多个参数用逗号隔开。 参数可以具有默认值。 例如: +getArea(radius:integer)
(5)关联的约束
关联可以加上一些约束,以加强关联的含义。 在关联上使用{ } 表示约束。 当多个关联之间存在约束条件时,需要使用UML 注释来表示。
(6)限定关联
带有限定符的关联称为限定关联 限定符很像是索引文件的关键字,使用它可以直接找到所 需要的对象。一般来说,查询结果会是所有对象的一个子 集,而不是整个列表。可把一对多转换为一对一。
(3) 类型
① ② ③ ④ ⑤ 简单类型: 整型Integer 布尔型Boolean 实型Double 字符串String 枚举类型 系统中的其他类
+ x:Integer
<<enumeration>> Colour red green blue
(4) 初始值
也称为默认值。 目的: ① 保护系统的完整性,防止漏掉取值或被非 法的值破坏系统的完整性。 ② 为用户提供易用性。 初始值表达式可以是一个单独的数值,也 可以是用某种语言编写的字符串。 例如: + x:Integer =100
第五章 UM对象图和类图

① 关联名
关联名
★如果关联关系已经清楚,就无需关联名
② 关联的角色
关联的角色
★ 在关联的每一个端点上有一个角色。每一个角色具
有一个名字,用来描述其类被其他的类看作是什么: 把它称为角色名,如果类名与角色名相同,则不
标出角色名。类关系通过添加角色来进一步丰 富。在类图中使用角色可以帮助读者理解第一 个类对于第二个类的作用。
1.3 接口
• 在没有给出对象的实现和状态的情况下对对象行为 的描述。 • 包含操作但不包含属性。 • 没有对外界可见的关联。 • 一个类可以实现一个或多个接口。
1.3 接口
• 接口类:
1.4 类之间的关系
• • • • • 1 2 3 4 5 关联关系 聚合和组合关系 泛化关系 依赖关系 实现关系
案例分析
• 创建一个类图。下面给出创建类图所需的信息。 • 学生(student)可以是在校生(undergraduate)或者 毕业生(graduate)。 • 在校生可以是助教(tutor)。 • 一名助教指导一名学生。 • 教师和教授属于不同级别的教员。 • 一名教师助理可以协助一名教师和一名教授,一名教师只 能有一名教师助理,一名教授可以有5名教师助理。 • 教师助理是毕业生。
(2)聚合 聚集和组合
• 聚合(aggregation): 表示类之间一种松散的整体与部分的组成关 系,是一种特殊的关联。表示“整体/部分”的关联关系。“has a ”,表示聚合中的每一个部分可以属于其它整体。 • 被表示为在整体的一端用一个空心菱形修饰的简单关联
聚合
组合
• 组合(composition): 表示类之间一种紧密的整体与部分的组成 关系,也是一种特殊的关联。表示组合中的每一个部分只能属 于一个整体 • 组合确实只是一种特殊的关联,用整体端有实心菱形箭头的简单 关联修饰它。
5_类图及对象图-4

、信函等 - 部门、:如:班级、学校 - 设备:如:汽车、计算机 - 与系统相关的外部实体:如其它系统、设备、
人员等。
➢ 筛选对象类的原则
- 关键性:缺少这个对象类信息,系统就不能运作
- 可操作性:对象必须拥有一组可标识的操作,该 操作可修改对象的属性
建立类图
建立类图的一般步骤:
① 研究分析问题领域,确定系统需求; ② 确定类,明确类的含义和职责,确定类的属性和操作; ③ 确定类之间的关系。关联,泛化,聚集,组合,依赖; ④ 调整和细化类及其关系,解决重复和冲突; ● ⑤ 绘制类图,并增加相应说明。
确定对象类
➢ 发现对象类
- 与系统交互的角色:如:管理者、工程师、销 售员
泛化
2. 泛化的表示
表示
例子
依赖
1. 依赖的含义 依赖(dependency): 表示两个元素X、Y,如果
X的变化必然导致Y的变化,则称Y依赖X。 依赖关系不仅限于类,用例、包、构件之间都可
以存在依赖关系。
依赖
2. 依赖的表示
表示
例子
类图及对象图
类图
1 类图的概念 2 类图的抽象层次 3 建立类图
部分事物对象仅能属于一个组合对象; ●③ 聚集的对象生命周期可以不同,但组合对象则是同
存同亡。
泛化
1. 泛化的含义 泛化(generalization): 表示事物之间的一般与特
殊的关系。也可以称为继承关系。 泛化关系除了表示类与类之间的关系之外,还可
以表示参与者、用例、包、构件、接口等建模元素 之间的关系。
- 管理性:建立该对象是为了保存和管理那些属 性
第5章 对象类图与对象图课件

注册 选课
Home
图5.2 类的图形表示
5.1.2 属性
类的属性(Attribute)是类的命名的性质,属性在类图标的属性分隔 框中用文字串说明,如图5.3所示。
属性有在本类中唯一的属性名或标识符。
冒号“:”后跟属性值的数据类型。
属性名后跟的方括号中的内容是可选项目。
多重性(Multiplicity)用多值表达式表示,其值是该类的每个实例的 属性值的个数。
Home
图5.11 N元关联示例
5.2.3 关联的约束
关联可以加上一些约束,以规定关联的含义。 约束的字符串括在花括号{}内。 UML定义了一些约束可以施加在目标关联端上,如“implicit”、
“ordered”、“changeable”、“addonly ”、“xor”等。 例:具有xor约束的关联,如图5.12所示。约束xor 代表一组关联的
5.4.3 重载与多态性
泛化涉及面向对象技术的多态性、重载、多继承等概念,这在建立 泛化联系时需特别注意。
重载是实现多态性的方法,它修改继承来的属性和操作的内容,而 不改变其名字。
例:在图5.17中有表示重载的约束“{overlapping}”,说明子类型 “风动交通工具”、“机动交通工具”、“陆上交通工具”、“ 水上交通工具”虽然继承了超类“交通工具”的属性和操作,但 是对于某些具有多态性的属性和操作,各个子类型的对象都有自 己不同的含义和实现,而属性和操作的名字则是一样的。
类名可以是简单名,也可以是路径名。
属性框中包含类的属性。属性是类的命名 的性质,它描述类性质的实例所能具有的 值。
操作框中包含类的操作。操作实现类的服 务功能,它可以被本类的对象请求执行, 从而发生某种行为。
《类图及对象图》PPT课件

17 of 70
5.1.3 类的操作
1. 操作的含义 操作(operation): 描述类所表示事物的动态性质。
2.操作的格式
[可见性]操作名[(参数列表):返回类型][{特性}]
该操作的输入参数,可以为空. 例如: #create() +hide() -ttachXWindow(xwin:Xwindow)
表示属性值的取值,及有序性: 例如: name:String[0..1]
表示属性”name”可能无值,也 可能仅有一个值.
points:Point[2..* ordered] 表示有两个或多个值,有序
11 of 70
5.1.2 类的属性
1. 属性的含义 属性(attribute): 描述类所表示事物的静态性质。
18 of 70
5.1.3 类的操作
1. 操作的含义 操作(operation): 描述类所表示事物的动态性质。
2.操作的格式
[可见性]操作名[(参数列表):返回类型][{特性}]
该操作的返回值的类型. 例如: +display():Locatein
19 of 70
? 问题4:
1、指出下面操作名的含义。
2.属性的格式 [可见性]属性名[:类型][‘[ ’多重性[次序]‘]’][=初始值][{特性}]
表示属性约束说明: 例如: #visibility:Boolean=false{读写}
表示属性”visibility”可读,写
13 of 70
? 问题3:
1、指出下面属性名的含义。
+studentName:String=“黎明” #studentBirthDay:Date=‘1999-10-21’ -price:float=12.01{R/W}
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Customer
DirectEmail
练习
一个牛奶公司想自动化订单和付款. 每个送奶员出发时都有 带着他要送的奶产品和客户的订单。按照他清单上的客户 地址检查需要的产品。客户(customer)都有长期订单( standing order)。如果客户想临时改订单,则被称为一 个异常订单(exception order),例如 “今天多加1 pint奶”, “周四6个酸奶”. 牛奶公司时常会有一些促 销产品,这些促销产品的订单称为促销订单(promotion order)。所有订单(order)都由每个订购产品(product)对 应的订单行(order line)组成。周五送奶员到每个客户 家里收钱(payment)。 画出类图。尝试使用关联、聚集、泛化、多重性。
<<GUI>>
Management Window
图5.21 自定义版型
5.5 版型
Stereotype « button» CancelButton state
Stereotype in form of icon
CancelButton
5.6 边界类、控制类和实体类
UML中有3种主要的类的版型,即边界类、 控制类和实体类。 在进行OO分析和设计时,如何确定系统中 的类是一个比较困难的工作,引入边界类、 控制类和实体类的概念有助于分析和设计 人员确定系统中的类。
练习
5.8 领域分析
In software engineering, domain analysis is the process of analyzing related software systems in a domain to find their common and variable parts. It is a model of wider business context for the system. 建立类图的过程就是对领域及其解决方案的分析和设 计过程。 类的获取是一个依赖于人的创造力的过程,有时需要 与领域专家合作,对研究领域进行仔细分析,抽象出 领域中的概念,定义其含义及相互关系,分析出系统 类,并用领域中的术语为类命名。
接口是类的<<interface>>版型。 UML中的接口不包括属性(Java中的接口 可以包含属性),只包含方法的声明并且 声明的所有方法都没有实现部分。
<<Interface>>
Interface2 Interface Icon形式 Label形式
Interface3
Decoration形式
Actor1 Use Case1
Actor2 Boundary Class
图5.23 多个参与者使用同一个边界类
5.6.2 实体类
实体类用于保存要放进持久存储体(如数据库、 文件)的信息。 实体类可以通过事件流和交互图发现,实体类 通常用领域术语命名。 通常每个实体类在数据库中有相应的表,实体 类中的属性对应数据库中表的字段。但实体类 和表不是一一对应的。
Circle
概念层 说明层 实现层
5.7.2 构造类图
□ 寻找类的一些技巧包括:
根据用例描述中的名词确定类的候选者。 使用CRC分析法寻找类。CRC是类(class)、职责 (responsibility)和协作(collaboration)的简称, CRC分析法根据类所要扮演的职责来确定类。 根据边界类、控制类和实体类的划分来帮助发现系统 中的类。 对领域进行分析,或利用已有的领域分析结果得到类。 参考设计模式来确定类。 根据某些软件开发过程(如RUP)提供的指导原则进 行寻找类的工作。
图5.28 打印输出设计1
5.9.1 开闭原则
图5.29的改进设计:Output中有类型为Printer的变量p.不 管与哪种打印机相连,输出都调用p.print()。P的具体 类型在运行时由系统决定。 如果增加Legend打印机只 需增加Legend类,并让Legend类实现Printer接口即可, 不需改动Output类内部。
1
分类 结果 描述
2
构造 词汇 表
3
领域选择 和描述
1
确定领域范 围和边界
2
风险 分析
3
标识实体、事件、 操作、关系等
1
信息模块化
2
数据的相 似性分析
3
数据的可变 特性分析
4
分析结果 的综合 2
5
plan1.3.2:1 or 2 plan1.3: 功能分 解方法 1 OO分析 方法 2 5 1
3
4
5.9 OO设计的原则
5.7.2 构造类图
下面给出建立类图的步骤: (1)研究分析问题领域,确定系统的需求。 (2)确定类,明确类的含义和职责,确定属 性和操作。 (3)确定类之间的关系。把类之间的关系用 关联、泛化、聚集、组合、依赖等关系表达 出来。 (4)调整和细化已得到的类和类之间的关系, 解决诸如命名冲突、功能重复等问题。 (5)绘制类图并增加相应的说明。
练习
画出类图,表示出电视机类(TV)和频道类 (Channel)之间的关系。 提示:电视机(TV)类有打开(turnon)、关闭 (turnoff)、换频道(change)等操作。
练习
画出类图,表示出账户类、支票账户类、 储蓄账户类之间的关系。请将账户类表示 为抽象类。
Account
CheckingAccount
5.6.1 边界类
□ 边界类位于系统与外界的交界处,窗体 (form)、对话框(dialog box)、报表 (report)以及表示通讯协议(如TCP/IP) 的类、直接与外部设备交互的类、直接与外 部系统交互的类等是边界类的例子。
图5.22 边界类的3种表示方式
5.6.1 边界类
通过用例图可以确定 需要的边界类。 每个actor/use case对至 少要有一个边界类, 但并非每个actor/use case对都要生成唯一边 界类。
5.7.2 构造类图
CRC分析法:
5.7.2 构造类图
在构造类图时,不要试图使用所有的符号。UML中大 约20%的建模元素可以满足80%的建模要求。 构造类图时不要过早陷入实现细节: 如果处于分析阶段,应画概念层类图; 当开始着手软件设计时,应画说明层类图; 当考察某个特定的实现技术时,则应画实现层类图。 对于构造好的类图,应考虑该模型和模型中的元素 是否真实地反映了应用领域的实际情况 是否有清楚的目的和职责 大小是否适中,对过于复杂的模型和模型元素应将 其分解成几个相互合作的部分
5.5 版型
UML中预定义了一些版型,如接口是类的版 型,子系统是包的版型等。 如图5.20所示是带有操作的Actor的例子。
<<Actor>>
Actor2 Actor1 Icon形式 Label形式
Actor3
Decoration形式
图5.19 Actor的3种表示方式
图5.20 Actor及其操作
See p.65
5.8 领域分析
领域特征和 项目规划 1 plan1.1: 1 2 3 ? 1
plan1.1: 1 领域分 析过程 数据收集 2 2 3 数据分析 3 分类
2 3
4
5 ?
4 plan1.4: 1
领域模 型评估 2 3
5
plan1.2: 1
建立数 据目录
文献 检查
2
获取专 业知识
3
建立 分类 方法
□ 对于OO设计,主要是要求系统的设计结果要能适应系 统新的需求变化,一旦需求发生变化,整个系统不用 做变动或做很少的变动就可以满足新的需求。 下面是OO设计的几条原则: ① 开闭原则(Open/Closed Principle,OCP) ② Liskov替换原则(Liskov Substitution Principle,LSP) ③ 依赖倒置原则(Dependency Inversion Principle,DIP) ④ 接口分离原则(Interface Segregation Principle,ISP)
图5.16 派生属性
图5.17 派生关联
5.4 抽象类和接口
抽象类是不能直接产生实例的类。 因为抽象类中的方法往往只是一些声明, 而没有具体的实现,因此不能对抽象类实 例化。 抽象类可以含有属性,某些方法可以有具 体的实现。
Athlete
斜体
Swimmer
Golfer
5.4 抽象类和接口
图5.18 接口的3种表示方式
5.4 抽象类和接口
Printer CheckStatus
Printer
<<Interface>>
CheckStatus
5.5 版型
版型是UML的3种扩展机制之一(UML中的 另外两种扩展机制是标记值和约束)。 版型是建模人员在UML中已有的基本构造 块(事物、关系、图)上派生出的新构造块。 这些新构造块是和特定问题相关的,是在 已有元素上增加新的语义,而不是增加新 的文法结构。
SavingAccount
练习
□ 在线营销系统中,管理人员可以在系统中 创建营销活动并将活动信息以邮件形式发送 到购买产品的顾客的邮箱中。请标出以下类 的版型(boundary, control, or entity)及类之 间的关联关系。
MarketingCampaignForm
Customer
图5.24 实体类的3种表示方式
5.6.3 控制类
控制类是负责其他类工作的类。 每个用例通常有一个控制类,控制用例中的 事件顺序,控制类也可在多个用例间共用。 其他类并不向控制类发送很多消息,而是由 控制类发出很多消息。