A.
类图
类
在
类图
中
类
用矩形框
来
表示,
它
的
属
性和操作分
别
列在分格中,若不需要表
达详细
信息
时
,分格可以省略。
类间关
系
在
类图
中,除了需要描述
单独
的
类
的名
称
、
属
性和操作外,我
们还
需要描述
类
之
间
的
联
系,因
为没
有
类
是
单独
存在的,
它们
通常需要和
别
的
类协
作,
创
造比
单独
工作更大的
语义
。在UML
类图
中,
关
系用
类
框之
间
的
连线来
表示,
连线
上和
连线
端
头处
的不同修
饰
符表示不同的
关
系。
类
之
间
的
关
系有
继
承(泛化)、
关联
、聚合和
组
合。
1.
继
承:指的是一
个类
(
称为
子
类
)
继
承另外的一
个类
(
称为
基
类
)的功能,
并
增加
它
自己的新功能的能力,
继
承是
类与类
之
间
最常
见
的
关
系。
类图
中
继
承的表示方法是
从
子
类
拉出一
条闭
合的、
单键头
(或三角形)的
实线
指向基
类
。例如,
图
3.2
给
出了MFC中CObject
类
和菜
单类
CMenu的
继
承
关
系。
类
的
继
承在C++中呈
现为
:
class B { }
class A : public B{ }
2.
关联
:指的是模型元素之
间
的一
种语义联
系,是
类
之
间
的一
种
很弱的
联
系。
关联
可以有方向,可以是
单
向
关联
,也可以是
双
向
关联
。可以
给关联
加上
关联
名
来
描述
关联
的作用。
关联两
端的
类
也可以以某
种
角色
参与关联
,角色可以具有多重性,表示可以有多少
个对
象
参与关联
。可以通
过关联类进
一步描述
关联
的
属
性、操作以及其他信息。
关联类
通
过
一
条虚线与关联连
接。
对
于
关联
可以加上一些
约
束,以加强
关联
的含
义
。
关联
在C++中呈
现为
:
class A{...}
class B{ ...}
A::Function1(B &b) //或A::Function1(B b) //或A::Function1(B *b)
即一
个类
作
为
另一
个类
方法的
参数
。
3.
聚合:指的是整体
与
部分的
关
系。通常在定
义
一
个
整体
类
后,再去分析
这个
整体
类
的
组
成
结构
。
从
而找出一些
组
成
类
,
该
整体
类
和
组
成
类
之
间
就形成了聚合
关
系。例如一
个
航母
编队
包括海空母
舰
、
驱护舰
艇、
舰载飞
机及核
动
力攻
击
潜艇等。需求描述中“包含”、“
组
成”、“分
为
…部分”等
词
常意味着聚合
关
系。
4.
组
合:也表示
类
之
间
整体和部分的
关
系,但是
组
合
关
系中部分和整体具有
统
一的生存期。一旦整体
对
象不存在,部分
对
象也
将
不存在。部分
对
象
与
整体
对
象之
间
具有共生死的
关
系。
聚合和
组
合的
区别
在于:聚合
关
系是“has-a”
关
系,
组
合
关
系是“contains-a”
关
系;聚合
关
系表示整体
与
部分的
关
系比
较
弱,而
组
合比
较
强;聚合
关
系中代表部分事物的
对
象
与
代表聚合事物的
对
象的生存期无
关
,一旦
删
除了聚合
对
象不一定就
删
除了代表部分事物的
对
象。
组
合中一旦
删
除了
组
合
对
象,同
时
也就
删
除了代表部分事物的
对
象。
在C++
语
言中,
从实现
的角度
讲
,聚合可以表示
为
:
class A {...}
class B { A* a; .....}
即
类
B包含
类
A的指
针
;
而
组
合可表示
为
:
class A{...}
class B{ A a; ...}
即
类
B包含
类
A的
对
象。
准确的UML
类图
中用空心和
实
心菱形
对
聚合和
组
合
进
行了
区
分。
B.
对
象
图
对
象
图显
示某
时
刻
对
象和
对
象之
间
的
关
系,是
类图
的
变
化,一
个对
象
图
可看成一
个类图
的示例(example),
对
象
图
表示的是
类
的
对
象
实
例而不是
真实
的
类
。由于
对
象存在生命周期,因此
对
象
图
只能在系
统
某一
时间
段存在。
对
象
图
中
并
无新的表示法(除了
对
象名下要加下
划线
以外),
与类图
中的表示法一
样
,可以
认为
,只有
对
象而无
类
的
类图
就是一
个
“
对
象
图
”。
在
对
象
图
中,
对
象名可以有三
种
表示形式:
(1)
对
象名:
类
名
(2):
类
名
(3)
对
象名
把“
动
名
词
”看作
类图
,把“
爱国
”看作
对
象
图
,很明
显
,
对
象
图
就是
类图
的一
个
example而已。