介紹類圖之前咱們先來聊一聊類
1.類由三部分組成
一是類名,二是屬性(attributes),三是該類提供的方法如:
當然,如果你的軟體中屬性和方法相對比較多,在圖中一一的表示出來也沒有太大的意義,這時你就可以在圖中隱藏其方法或屬性甚至將方法和屬性全部隱藏,就隱藏了其方法:
再看下面這張圖你會發現Lecture類的方法前面有一個加號,屬性前面有減號,那麼它們有什麼特殊的意義呢?
“+”就是public 表示公有的,“—”就是私人的,而“#”表示受保護的省略這些修飾符則表示具有包層級的可見度。
需要注意的是:如果屬性或方法具有底線,則表明它是靜態。
2.類的關係:
類的關係有四種:關聯關係,依賴關係,泛化關係,實現關係下面將對這四種關係一一作出分析
1.關聯關系
關聯關係還可以細分為:單向關聯,雙向關聯a.單向關聯:
b.雙向關聯
當然兩個類之間還可以有多種關聯
如果你想表示一個類與另外兩個類都有關係,而你又不願意去用兩張圖表示的時候,下面這個方法可以幫到你
組合和彙總是組合關係中的兩個特例
彙總:整體/部分用 空心菱形表示
組合:整體/部分用 實心菱形表示
既然他們都表示整體與部分的關係,那麼什麼時候用彙總什麼時候用組合呢?
我是這樣理解的:組合關係好比一本書和這本書的書頁;而彙總關係好比一個書架和擺放在書架上的書。換句話說,沒有書就談不上有書頁,組合是有生命約束關係的,而書和書架就沒有這種關係,沒有了書架,書照樣還存在。
2.依賴關係:
依賴是一種使用關係。它說明一個事物規格說明的變化可能影響到使用它的另一個事物。但反之未必
可用於兩個類之間
可用於兩個包之間
可用於構建之間
3.泛化關係
泛化(generalization)關係是一個類(稱為子類、子介面)繼承另外的一個類(稱為父類、父介面)的功能,並可以增加它自己的新功能的能力,繼承是類與類或者介面與介面之間最常見的關係。繼承還可以細分為單繼承和多重繼承兩種單重繼承有且只有一個父類而多重繼承多個父類
用一張圖表示:
4.實現關係
實現時類元之間的語義關係,在該關係中一個類元描述了另一個類元保證實現的契約
舉例:如果老師讓你畫一個多邊形,該怎麼畫呢?是畫四邊形,五邊形還是......而讓你畫一個矩形的時候你肯定能畫出來,用圖表示:
3.類圖的構成
- Classes類
- Interfaces 介面
- Collaborations協作
- Dependency 依賴關係
- Generalization 泛化關係
- Association 關聯關係
- Relationships實現關係
- Packages包
- Subsystems子系統
以上說的都是類圖中的細節部分,一個完美的類圖中肯定會用到這些的很多甚至是還有我沒想到的,不管做什麼,其中的一個環節都不能被忽視的,希望得到大家的重視。