uml 类图整理
1.五分鐘讀懂UML類圖
http://www.cnblogs.com/shindo/p/5579191.html
2.UML類關(guān)系(依賴,關(guān)聯(lián),聚合,組合的區(qū)別)
https://www.jianshu.com/p/eefa0b5b4922
2.1 關(guān)聯(lián)
1、關(guān)聯(lián)關(guān)系
關(guān)聯(lián)關(guān)系又可進(jìn)一步分為單向關(guān)聯(lián)、雙向關(guān)聯(lián)和自關(guān)聯(lián)。
(1)單向關(guān)聯(lián)
我們可以看到,在UML類圖中單向關(guān)聯(lián)用一個(gè)帶箭頭的直線表示。上圖表示每個(gè)顧客都有一個(gè)地址,這通過(guò)讓Customer類持有一個(gè)類型為Address的成員變量類實(shí)現(xiàn)。
?
(2)雙向關(guān)聯(lián)
從上圖中我們很容易看出,所謂的雙向關(guān)聯(lián)就是雙方各自持有對(duì)方類型的成員變量。在UML類圖中,雙向關(guān)聯(lián)用一個(gè)不帶箭頭的直線表示。上圖中在Customer類中維護(hù)一個(gè)Product[]數(shù)組,表示一個(gè)顧客購(gòu)買了那些產(chǎn)品;在Product類中維護(hù)一個(gè)Customer類型的成員變量表示這個(gè)產(chǎn)品被哪個(gè)顧客所購(gòu)買。
?
(3)自關(guān)聯(lián)
自關(guān)聯(lián)在UML類圖中用一個(gè)帶有箭頭且指向自身的直線表示。上圖的意思就是Node類包含類型為Node的成員變量,也就是“自己包含自己”。
?
2.2依賴--dependency
用帶折線的箭頭表示
- 依賴其實(shí)定義非常模糊,所以使用依賴只應(yīng)該是在其他關(guān)系無(wú)法表示的時(shí)候:
- 依賴通常體現(xiàn)為調(diào)用一個(gè)其他所依賴類的方法
- 在代碼中往往體現(xiàn)為依賴類作為函數(shù)參數(shù)或者局部臨時(shí)變量
舉例:人依賴車?
2.3聚和--aggregation
UML中聚合關(guān)系用帶空心菱形和箭頭的直線表示。聚合關(guān)系強(qiáng)調(diào)是“整體”包含“部分”,但是“部分”可以脫離“整體”而單獨(dú)存在
2.4組合--composition
組合關(guān)系與聚合關(guān)系見(jiàn)得最大不同在于:這里的“部分”脫離了“整體”便不復(fù)存在。比如下圖:
顯然,嘴是頭的一部分且不能脫離了頭而單獨(dú)存在。在UML類圖中,組合關(guān)系用一個(gè)帶實(shí)心菱形和箭頭的直線表示。
總結(jié):聚合和組合都屬于包含的范疇,現(xiàn)實(shí)生活中的關(guān)系;比如 汽車包含引擎,頭包含嘴;
- ?不同的是聚合,兩個(gè)類/對(duì)象(現(xiàn)實(shí)中的事物)是彼此可以獨(dú)立存在的;For Example: 汽車和引擎可以彼此獨(dú)立存在的因此是聚合關(guān)系。
- 組合是c中兩個(gè)事物不能獨(dú)立;For Example :頭和嘴是彼此不能獨(dú)立存在的
? ? 依賴和關(guān)聯(lián)區(qū)別:
- ? 依賴:代碼中通常體現(xiàn)為調(diào)用其他類作為參數(shù)或者局部變量
- ? 關(guān)聯(lián):關(guān)聯(lián)類通常作為一個(gè)類的成員變量存在
? ? ? ? ? ?
?
?
總結(jié)
- 上一篇: 二分查找法的循环与递归实现及时间复杂度分
- 下一篇: T(n) = 25T(n/5)+n^2的