Page 1 ?
UML及软件建模
主讲人, 李 唯
clx7000@163.com
Page 2 ?
? 如何对一个类建模
? 如何表现一个类的特性、职责和约束。
? 小结
第三章 类图和对象图
Page 3 ?
? 类图描述系统中类的静态结构。不仅定义系统中的类,表
示类之间的联系如关联、依赖、聚合等,也包括类的内部结
构 (类的属性和操作 )。类图描述的是一种静态关系,在系统
的整个生命周期都是有效的。
? 对象图是类图的实例,几乎使用与类图完全相同的标识。
他们的不同点在于对象图显示类的多个对象实例,而不是实
际的类。
? 一个对象图是类图的一个实例。由于对象存在生命周期,
因此对象图只能在系统某一时间段存在。
Page 4 ?
在 UML中一个矩形表示一个类的图标
类的可视化表示
WashingMachine
注:按照 UML的约定
1、把类名的首字母大写,放在矩形的偏上部。
2、如果类名是由两个单词组成,那么将两个单词合
并,第二个单词首字母大写。
Page 5 ?
属性
属性是类的一个特性。它描叙了类的对象(也就是类的实例)所
具有的一系列特性值。一个类可以具有零个到多个属性。属性名
列表放在类名之下,并且和类名之间用分隔号隔开,如图 所示。
注:按照 UML的约定
1、单个单词的属性名的小写。
2、如果属性名是由多个单词组成,那么将多个单词
合并,除了第一个单词外,其它单词的首字母大写

WashingMachine
brandName
modeName
serialNumber
Page 6 ?
属性的附加信息
UML还允许指明属性的附加信息。要指明类型,则在属性
值后面加上类型名,中间用冒号隔开。还可以为属性指定
一个缺省值
WashingMachine
brandName,String=“海尔,
modeName,String
serialNumber,String
Page 7 ?
对象
? 类的属性在该类的每个对象中都有具体值。下图是一个例
子。 注意,对象名首写字母小写,后面根一个冒号,冒号后面是该对
象所属的类名,并且整个名字要带下划线。
myWasher:WashingMachine
brandName=“海尔”
modeName=“小神童”
serialNumber=,GL0214”
命名对象或者不命名对象
名字 myWasher,WashingMachine是一个命名实例 (named instance)。也
可以有诸如,WashingMachine这样的匿名实例( anonymous instance)

Page 8 ?
操作
操作( operation)是类能够做的事情或者你(或者
另一个类)能对类做的事情。操作名列表要放在属性
名列表之下,两者之间用分隔线隔开,如图所示。
WashingMachine
brandName
modeName
serialNumber
addClothes()
removeClothes()
turnON()
注:按照 UML的约定
1、单个单词的操作名的
小写。
2、如果操作名是由多个
单词组成,那么将多个
单词合并,除了第一个
单词外,其它单词的首
字母大写。
Page 9 ?
操作的附加信息
你也可以为操作指定附加信息。在操作名后面的括号中
可以说明操作所需要的参数和参数类型。有一种操作叫
函数( function),它在完成操作后要返回一个返回值。
可以指明函数的返回值及返回值的类型。
WashingMachine
brandName
modeName
serialNumber
addClothes(C,String)
removeClothes(C,string)
turnON(),Boolean
Page 10 ?
1、在实际中,可以只给出类名,而将属性或者操作区(或
者两个全都)空着,如图所示:
属性操作的可视化表示
WashingMachine
Page 11 ?
2、有时可以只显示类的一部分属性和方法,这种省略了一
个或多个属性或者操作的的表示法叫做类的省略表示法(
eliding a class)。图说明了类的省略表示法。
WashingMachine
brandName

addClothes()

Page 12 ?
3、如果属性或者操作列表太长,可以用构造型来组织属性
或操作列表,以便理解。
构造型是 UML提供的 扩展机制。
WashingMachine
<<id info>>
modeName
serialNumber
<<machine info>>
capacity
<<clothes-related>>
addClothes()
removeClothes()
Page 13 ?
职责和约束
? 职责( reponsibility)描叙了类做什么 —— 也就是类的属性
和操作能完成什么任务。在图标中,职责在操作区域下面的
区域中说明。类的职责是消除二意性的一种非形式化的方法

WashingMachine
brandName

addClothes(C,String)

Take dirty clothes as input and
produce clean clothes as output.
职责
Page 14 ?
更形式化的方式是使用约束 ( constraint), 它是用花括
号括起来的自由文本 。 括号中的文本指定了改类所要满足的
一个或多个规则 。 如图所示:
WashingMachine
brandName
capacity
addClothes()

{capacity=16 or 18 or 20}
约束
Page 15 ?
附加注释
我们还可以以对类附加注释的形式为类添加更多的信息。
下图中的注释说明了 serialNumber(序列号)属性引用了
政府标准。
记住,注释可以包含图形也可以包含文本。
WashingMachine
brandName
modeName
serialNumber
addClothes()
removeClothes()
turnON()
序 列 号 的 生 成 参 考 国 际 标 准
Page 16 ?
小结
? 类代表的是领域知识中的词汇和术语。
? UML的类图标是由一个矩形表示。类名字、属性、操作和
职责都在区域中有各自的方框。可以使用构造型来组织属
性和操作名列表。可以使用类的省略表示法,只表示处类
的一部分属性和操作。
? 可以在图标中指定属性的类型和初始值,还可以指明操作
执行时所需要的参数和参数的类型。对一个操作来讲,这
些附加信息被称为构型。
? 为了减少描述类时的二义性,可以对类施加约束。
? 类表达的是领域知识中的词汇。