Page 1 ?
UML及软件建模
主讲人, 李 唯
clx7000@163.com
Page 2 ?
? ·如何对包含其他类的类建模
? ·如何对接口以及与其相关联的类建模
? ·可见性的概念
第五章 聚集、组成、接口和实现
Page 3 ?
聚集 ( aggregation)
一个类有时由几个部分类组成的,这种特殊类型的关系被称为
聚集。部分类和由它们组成的类之间是一种整体-部分( part-
whole)关系。
按照聚集关系的表示法,聚集关系构成了一个层次结构。“
整体”类位于层次结构的最顶部,以下依次是各个“部分“类
。整体和部分之间用带空心菱形箭头的连线连接,箭头指向整
体。下图示意了家用计算机系统的组成。
Page 4 ?
CPU
1
个人计算机
音箱 主机 键盘 鼠标 显示器
? 1
1 1 1 12
磁盘驱动器 声卡 显卡 内存
连接到
1 1* 1
?
2

1
Page 5 ?
? 在上个例子中的每个部分都属于一个整体,但聚集的关系
并不是只有这种情况。
? 例如:在一个家庭影院系统中,电视机和影碟机可以共用
一个遥控器,那么这个遥控器既是电视机的组成部分也是
影碟机的组成部分。
Page 6 ?
聚集上的约束
有时一个聚集体可能有多种部分体组成,这些部分体之间是
,Or”关系。我们在两个整体-部分关系线之间加上一花括
号括起来的,Or”来表示这个约束,并用虚线连接这两个关
系线,如图所示。
一顿饭
汤 沙拉 主食 甜点
? 1
1 1 11 {or}
Page 7 ?
组成
组成是强类型的聚集。聚集 (组成 )中的每个部分体只能属于
一个整体。除了菱形箭头是实心之外,组成和聚集的表示法
相同,如图所示。
咖啡桌
桌腿桌面
1
11
?
Page 8 ?
接口 是描叙类的部分行为的一组操作,它也是一个类提供给另
一个类的一组操作。
一个类和它的接口之间的关系叫做 实现 。如洗衣机保证了它的
部分行为能够“实现”控制柄的行为。
接口的模型表示法和类大致相同,都是用一个矩形图标来代表
。和类的不同之处在于,接口只是一组操作,没有属性 。如果
一个类表示了省略了属性,那么怎么区分类和接口呢?一种办
法是使用构造型, interface》,把它放在矩形框中接口的名
字之上。另一个办法是接口的名字以大写字母,I”开头。
表示类和接口之间的实现关系的符号和继承关系的符号有些相
似,只不过它是一个带空心三角形的箭头,箭头的方向指向接
口。下图示意了 洗衣机 和 控制旋钮 之间的实现关系。
接口( interface)和实现( realization)
Page 9 ?
<<interface>>
洗衣机
控制旋钮

Page 10 ?
? 另一种表示法 ( 省略表示法 ) 是将接口表示为一个小圆
圈, 并和实现它的类用一条线连起来, 如图 所示 。 这种
图有时候形象地被称为棒糖图 ( lollipopdiagram) 。
洗衣机 ?
控制旋钮
Page 11 ?
上图 表示了销售中的用例关系。
P r i n t e r Se r v e r
Su b m i t J o b
C h e c kS t a t u s
Se t P r i n t P r o pe r t i e s

接口
接口名 实现
Page 12 ?
? 一个类可以实现多个接口,一个接口也可以被多个类实现。
? 由于我们要依靠接口实现洗衣机的操作,我们把通过接口的
交互建模为一种依赖。下图示意了这种关系。
注意:图中使用依赖符号,对通过接口和类的交互来建模。
<<interface>>
洗衣机
控制旋钮

用户
Page 13 ?
? 实现关系将一种模型元素(如类)与另一种模型元素(如接口)连接起
来,其中接口只是行为的说明而不是结构或者实现。客户必须至少支持
提供者的所有操作(通过继承或者直接声明)。虽然实现关系意味着要
有像接口这样的说明元素,它也可以用一个具体的实现元素来暗示它的
说明(而不是它的实现)。
? 泛化和实现关系都可以将一般描述与具体描述联系起来。泛化将在同一
语义层上的元素连接起来(如,在同一抽象层),并且通常在同一模型
内。实现关系将在不同语义层内的元素连接起来(如,一个分析类和一
个设计类;一个接口与一个类),并且通常建立在不同的模型内。在不
同发展阶段可能有两个或更多的类等级,这些类等级的元素通过实现关
系联系起来。两个等级无需具有相同的形式,因为实现的类可能具有实
现依赖关系,而这种依赖关系与具体类是不相关的。
? 实现关系用一条带封闭空箭头的虚线来表示,且与泛化的符号很相像。
? 用一种特殊的折叠符号来表示接口(无内容)以及实现接口的类或构件
。接口用一个圆圈表示,它通过实线附在表示类元的矩形上。
Page 14 ?
接口和端口 ( port)
? 鼠标是如何连接到计算机的?沿着鼠标后面的电缆,在计
算机的后面,你会看到一个端口,也就是鼠标接入的地方
。当然你的计算机也可能由一系列端口,包括一个并行端
口以及一个或多个 USB端口。计算机正是通过这些端口和
外界的环境交互。
? UML2.0提供了一个符号用来对这些交互点建模。如图所示
,端口符号是位于类符号边缘上的一个小方格,这个小方
格连接到接口。
鼠标口
?
鼠标 计算机
Page 15 ?
可见性( visibility)
? 可见性可应用于属性或操作,它说明在给定类的属性和操作(或
者接口的操作)的情况下,其他类可以访问到的属性和操作的范
围。可见性由 3种层次(级别)。
1、在公有( Public)层次上其他类可以直接访问这个层次中的属性
和操作。
2、在受保护 (Protected)层次上,只有继承了这些属性和操作的子类
可以访问最初类的属性和操作。
3、在私有 (Private)层次上,只有最初的类才能访问这些属性和操作

? 实现关系意味着接口中的所有操作都是公有的。下图示意了前面
提到的电视机类和汽车类中的公有、受保护的和私有操作。
Page 16 ?
Television
+brandName
+modeName

+changeVolume()
+changeChannel()
-paintImageOnScreen()

Automobile
+brandName
+modeName

+accelerate()
+brake()
#updateMileageCount()

说明:属性或操作前面有“+”号,该属性或操作是公有的
属性或操作前面有“-,号,该属性或操作是受保护的
属性或操作前面有“#,号,该属性或操作是私有的
Page 17 ?
?作用域 ( scope)
? 作用域是与属性和操作相关的有一个重要概念 。 存在两种
可能性的作用域 。
1,在实例 ( instance) 作用域下,类的每个实例对象都有自己
的属性值和操作 。
2,在分类符 ( classifier) 作用域下, 一个类的所有实例只存
在一个属性值和操作 。
Page 18 ?
小结
? 聚集是一个整体部分关联:“整体”类是由“部分”类组成的。组成
是一种强类型的聚集,因为组成体的部分体只能属于一个整体。聚集
关系的菱形箭头是空心的,而组成关系的菱形箭头是实心的。
? 组成结构图通过展示嵌入在一个类中的那些类,使得该类的内部结构
变得可见。
? 实现是类和接口之间的一个关联,接口是可供其他类使用的一个操作
集。接口用没有属性的类表示。实现关系用一条虚线连接类和接口,
虚线靠近接口的一端带有一个空心三角形箭头指向接口。另一种表示
实现的方法是用一条直线连接小圆圈,小圆圈表示接口。
? UML2.0增加了一个符号来表示端口。类通过端口和它的环境交互。这
个符号是一个位于类符号边缘上的小方格,他和接口相连。
? 在可见性术语中,接口中的所有操作都是公有的,以使任何类都可以
访问接口中的操作。
? 作用域是属性和操作的又一个重要特征。在实例作用域下,一个类的
每个对象都有自己各自的属性值和操作。在分类符作用域,一个类的
所有实例对象的某些属性或操作共享同一个值。不属于这组对象的其
它对象不能访问分类符作用域值。