UML基礎(chǔ)與應(yīng)用--UML類圖解析
在學(xué)習(xí)UML時(shí)經(jīng)常會遇到關(guān)于UML類圖的問題,本節(jié)就和大家一起來學(xué)習(xí)一下UML基礎(chǔ)與應(yīng)用--UML類圖,希望本節(jié)的學(xué)習(xí)能夠使你對UML類圖有全面的了解。
UML基礎(chǔ)與應(yīng)用--UML類圖
UML類圖
一、類:對真實(shí)世界中事物的抽象。名稱、屬性和方法。
UML描述類時(shí)對外開放程度用“-、+、#”來表示。
“-”為私有,“+”為公有,“#”為保護(hù)。
二、類的關(guān)系
1、關(guān)聯(lián):
(1)普通關(guān)聯(lián):單向關(guān)聯(lián);雙向關(guān)聯(lián);兩個(gè)類之間可以有多種關(guān)聯(lián);一個(gè)類可以和多個(gè)類關(guān)聯(lián);關(guān)聯(lián)類。自身關(guān)聯(lián)。調(diào)用方法,會產(chǎn)生關(guān)聯(lián)。
整體和部分關(guān)系:
(2)聚合:松耦合。空心菱形。例子:書和書架。
(3)組合:緊耦合。實(shí)心菱形。例子:people和arm,先有people才有arm;book和page,先有book才有page
UML類圖中聚合與組合的區(qū)別:
聚合,顧名思義,聚集在一起的,沒有很強(qiáng)的生命約束;組合,組裝在一起的,生命約束很強(qiáng)。
用例子很好理解:
大雁和大雁群是聚合關(guān)系。一只大雁屬于一個(gè)大雁群,一個(gè)雁群可以有很多只大雁。大雁離開大雁群還是大雁,雁群離開這只大雁,還有其他大雁。大雁可以脫離雁群獨(dú)立存在。小鳥和翅膀的關(guān)系就是組合。沒有小鳥就沒有翅膀,只有翅膀也不能成為小鳥,翅膀離開小鳥就沒有意義了,小鳥離開翅膀也不能構(gòu)成小鳥。翅膀不能脫離小鳥獨(dú)立存在。
也就是整體和部分之間的依賴關(guān)系不同。
兩個(gè)對象之間的連接本身可以有自己的屬性和行為。
應(yīng)用于關(guān)聯(lián)的修飾。
1)名稱(association):用一描述該關(guān)系的性質(zhì)
2)角色(role):關(guān)聯(lián)中靠近它的一端的類對另外端的類呈現(xiàn)的職責(zé)。
3)多重性(Multiplicity):關(guān)聯(lián)角色的多重性是說明一個(gè)關(guān)聯(lián)的實(shí)例中有多少個(gè)相互連接的對象。1,*,0,0..*,2..5……
2、依賴
UML類圖中依賴是一種使用關(guān)系。說明一個(gè)事物規(guī)格說明的變化可能影響到使用它的另一個(gè)事物。但反之未必??捎糜趦蓚€(gè)類之間,也可以用于兩個(gè)包之間或兩個(gè)構(gòu)件之間。
結(jié)構(gòu)化關(guān)系包含依賴關(guān)系。如果有結(jié)構(gòu)化關(guān)系,就應(yīng)該用關(guān)聯(lián)。
類a依賴于類b,那就用箭頭指向類a,箭頭不可以反了。
3、泛化
is-a-kind-of,繼承。
c++中,用“:”,有關(guān)鍵字public或private
Java中,用關(guān)鍵字extents,沒有public或private。
單重繼承:一個(gè)子類不能有兩個(gè)或兩個(gè)以上的父類。
多重繼承:一個(gè)類有兩個(gè)或兩個(gè)以上的父類。
4、實(shí)現(xiàn)
:是類元之間的語義關(guān)系,該關(guān)系中,一個(gè)類元描述了另一個(gè)類元保證實(shí)現(xiàn)的契約。
類與接口的實(shí)現(xiàn)關(guān)系。
三、UML類圖的構(gòu)成:
·用來描述系統(tǒng)的靜態(tài)部分
·類圖的構(gòu)成
--classes
--Interfaces
--Collaborations
--Dependency,Generalization,and
抽象出類來之后,再確定類之間的關(guān)系。聚合關(guān)系,用空心菱形,菱形方向不能畫反了。
一個(gè)方法應(yīng)該放到執(zhí)行者的類中而不是調(diào)用者中
UML類圖深入討論:
1、可見性(visibility)
public、private、protected
2、范圍:每個(gè)實(shí)例自己擁有自己的屬性個(gè)方法。
靜態(tài)成員:對一個(gè)類的所有實(shí)例共享一個(gè)成員。UML中用下劃線。該成員可以直接通過類名調(diào)用。
3、屬性,凍結(jié)屬性:相當(dāng)于c++中的const,即定義常量。
4、抽象類:不能實(shí)例化。UML中描述:類名斜體。通過具體類繼承實(shí)現(xiàn),接口。
5、多重性
例子:company
通過名詞抽象得到類以后,確定類的屬性和方法,。確定方法:操作的集合。類與類之間的關(guān)系:四種關(guān)系都要準(zhǔn)確的描述。還要對關(guān)系進(jìn)行修飾。
【編輯推薦】
- 利用UML類圖進(jìn)行系統(tǒng)建模技巧詳談
- UML關(guān)聯(lián)符號用法剖析
- 技術(shù)分享 :利用UML類圖實(shí)現(xiàn)Java應(yīng)用程序設(shè)計(jì)
- UML類圖中的四種關(guān)系深入剖析
- 九大UML視圖專家解析