A.???????
類圖
類
在
類圖
中
類
用矩形框
來
表示,
它
的
屬
性和操作分
別
列在分格中,若不需要表
達(dá)詳細(xì)
信息
時
,分格可以省略。
類間關(guān)
系
在
類圖
中,除了需要描述
單獨
的
類
的名
稱
、
屬
性和操作外,我
們還
需要描述
類
之
間
的
聯(lián)
系,因
為沒
有
類
是
單獨
存在的,
它們
通常需要和
別
的
類協(xié)
作,
創(chuàng)
造比
單獨
工作更大的
語義
。在UML
類圖
中,
關(guān)
系用
類
框之
間
的
連線來
表示,
連線
上和
連線
端
頭處
的不同修
飾
符表示不同的
關(guān)
系。
類
之
間
的
關(guān)
系有
繼
承(泛化)、
關(guān)聯(lián)
、聚合和
組
合。
1.???????
繼
承:指的是一
個類
(
稱為
子
類
)
繼
承另外的一
個類
(
稱為
基
類
)的功能,
并
增加
它
自己的新功能的能力,
繼
承是
類與類
之
間
最常
見
的
關(guān)
系。
類圖
中
繼
承的表示方法是
從
子
類
拉出一
條閉
合的、
單鍵頭
(或三角形)的
實線
指向基
類
。例如,
圖
3.2
給
出了MFC中CObject
類
和菜
單類
CMenu的
繼
承
關(guān)
系。
類
的
繼
承在C++中呈
現(xiàn)為
:
class B { }
class A : public B{ }
2.???????
關(guān)聯(lián)
:指的是模型元素之
間
的一
種語義聯(lián)
系,是
類
之
間
的一
種
很弱的
聯(lián)
系。
關(guān)聯(lián)
可以有方向,可以是
單
向
關(guān)聯(lián)
,也可以是
雙
向
關(guān)聯(lián)
。可以
給關(guān)聯(lián)
加上
關(guān)聯(lián)
名
來
描述
關(guān)聯(lián)
的作用。
關(guān)聯(lián)兩
端的
類
也可以以某
種
角色
參與關(guān)聯(lián)
,角色可以具有多重性,表示可以有多少
個對
象
參與關(guān)聯(lián)
。可以通
過關(guān)聯(lián)類進(jìn)
一步描述
關(guān)聯(lián)
的
屬
性、操作以及其他信息。
關(guān)聯(lián)類
通
過
一
條虛線與關(guān)聯(lián)連
接。
對
于
關(guān)聯(lián)
可以加上一些
約
束,以加強
關(guān)聯(lián)
的含
義
。
關(guān)聯(lián)
在C++中呈
現(xiàn)為
:
class A{...}
class B{ ...}
A::Function1(B &b) //或A::Function1(B b) //或A::Function1(B *b)
即一
個類
作
為
另一
個類
方法的
參數(shù)
。
3.???????
聚合:指的是整體
與
部分的
關(guān)
系。通常在定
義
一
個
整體
類
后,再去分析
這個
整體
類
的
組
成
結(jié)構(gòu)
。
從
而找出一些
組
成
類
,
該
整體
類
和
組
成
類
之
間
就形成了聚合
關(guān)
系。例如一
個
航母
編隊
包括海空母
艦
、
驅(qū)護(hù)艦
艇、
艦載飛
機及核
動
力攻
擊
潛艇等。需求描述中“包含”、“
組
成”、“分
為
…部分”等
詞
常意味著聚合
關(guān)
系。
4.???????
組
合:也表示
類
之
間
整體和部分的
關(guān)
系,但是
組
合
關(guān)
系中部分和整體具有
統(tǒng)
一的生存期。一旦整體
對
象不存在,部分
對
象也
將
不存在。部分
對
象
與
整體
對
象之
間
具有共生死的
關(guān)
系。
聚合和
組
合的
區(qū)別
在于:聚合
關(guān)
系是“has-a”
關(guān)
系,
組
合
關(guān)
系是“contains-a”
關(guān)
系;聚合
關(guān)
系表示整體
與
部分的
關(guān)
系比
較
弱,而
組
合比
較
強;聚合
關(guān)
系中代表部分事物的
對
象
與
代表聚合事物的
對
象的生存期無
關(guān)
,一旦
刪
除了聚合
對
象不一定就
刪
除了代表部分事物的
對
象。
組
合中一旦
刪
除了
組
合
對
象,同
時
也就
刪
除了代表部分事物的
對
象。
在C++
語
言中,
從實現(xiàn)
的角度
講
,聚合可以表示
為
:
class A {...}
class B { A* a; .....}
即
類
B包含
類
A的指
針
;
而
組
合可表示
為
:
class A{...}
class B{ A a; ...}
即
類
B包含
類
A的
對
象。
準(zhǔn)確的UML
類圖
中用空心和
實
心菱形
對
聚合和
組
合
進(jìn)
行了
區(qū)
分。
B.???????
對
象
圖
對
象
圖顯
示某
時
刻
對
象和
對
象之
間
的
關(guān)
系,是
類圖
的
變
化,一
個對
象
圖
可看成一
個類圖
的示例(example),
對
象
圖
表示的是
類
的
對
象
實
例而不是
真實
的
類
。由于
對
象存在生命周期,因此
對
象
圖
只能在系
統(tǒng)
某一
時間
段存在。
對
象
圖
中
并
無新的表示法(除了
對
象名下要加下
劃線
以外),
與類圖
中的表示法一
樣
,可以
認(rèn)為
,只有
對
象而無
類
的
類圖
就是一
個
“
對
象
圖
”。
在
對
象
圖
中,
對
象名可以有三
種
表示形式:
(1)
對
象名:
類
名
(2):
類
名
(3)
對
象名
把“
動
名
詞
”看作
類圖
,把“
愛國
”看作
對
象
圖
,很明
顯
,
對
象
圖
就是
類圖
的一
個
example而已。