最近做詳細設計,選了Visio來畫UML圖,主要是因爲Visio用得多,習慣了。但用來畫類圖時,頓時就覺得不好用,一則是因爲大部分元素高度不能調整,如包、類等,如何解除鎖定也是沒用,導致設計類時,如果參數多,則類圖很不整潔,二則是因爲Visio中類圖符號要比規範集少。三則是對類圖符號還不是很熟,無法流暢地表達出自己的設計概念,思想,當然可能也是自己還沒有想清楚,通過UML類圖體現出來了,畫UML類圖的過程中,也會逐漸使設計思路清晰,各個類間的繼承、多態、聚合關係理清,二者是一個相互作用的過程。
下面介紹來源於一篇UML類圖符號文章。文章講得言淺意明,非常適合初畫UML類圖的人,但是有些重複,因此摘錄獨立關鍵點,本人針對Visio實際情況做了補充。
1.繼承(extends):用空心三角形+實線來表示。
2.實現接口(implements):用空心三角形+虛線來表示。(Visio中小圓形加實線)
3.關聯(Association):用實線箭頭來表示。(Visio中實線,二元關聯和關聯類)
4.聚合(Aggregation):用空心的菱形+實線箭頭來表示。
5.組合(Composition):用實心的菱形+實線箭頭來表示。(Visio中沒有)
6.依賴(Dependency):用虛線箭頭來表示。(Visio中有調用、導入、實例化等7種依賴關係)。
7.基數:連線兩端的數字表明這一端的類可以有幾個實例,比如:一個鳥應該有兩隻翅膀。如果一個類可能有無數個實例,則就用‘n’來表示。關聯、聚合、組合是有基數的。
此外Visio中還包括鏈接、約束、跟蹤、精化、用法關係,包括信號、異常等符號。
8.5種類間的關係:
● 關聯:類A與類B的實例之間存在特定的對應關係
● 依賴:類A訪問類B提供的服務
● 聚集:類A爲整體類,類B爲局部類,類A的對象由類B的對象組合而成
● 泛化:類A繼承類B
● 實現:類A實現了B接口
關聯可以分爲三種:一對一關聯、一對多關聯、多對多關聯,注意:關聯還要以分爲單向關聯和雙向關聯。
聚合包括普通聚合和強聚合,強聚合不允許拆缷。
各種類關係示意圖,舉例很好:
引文爲百度文庫中一篇《UML類圖符號簡介》,原文7頁。