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而已。