UML之類圖(Class Diagram)

來源:互聯網
上載者:User

標籤:blog   http   使用   io   strong   檔案   資料   2014   

類圖是類的靜態關係描述圖,簡單來講有兩個方面,有哪些類,這些類之間的關係是什嗎?需要注意的是類圖描述的是靜態關係,動態行為的如流程,判斷,迴圈等類圖無法描述,需要搭配其它UML圖。

類自身的描述

生物由細胞構成,類圖由類構成,我們先看看類長什麼樣,如何描述。首先類有一個唯一的名字,通常用手寫字母大寫的英文字母表示,一班名字應該用名詞來表示。類的內部有兩個部分構成,資料部門和操作部門。資料部門也叫屬性(Property),儲存一些資料、狀態、關聯等資訊,操作部門表示的是該類能夠執行的操作(Operation)。熟悉OOP的朋友會比較容易理解,前者就是類的全域變數,後者是方法(Method)。綜上,類內部的圖分為三個部分,上中下結構,上部為類的名字,中部存放屬性,下部表示巨集指令清單。三個部分都只有名字是必填項,格式可能比較複雜,不過常用的都很簡單,再加上一些優秀的UML工具幫忙,還是比較容易上手的。


類之間的關係

類之間的關係種類歸納起來也就三種,事實上很好掌握,至少看得懂是很容易的。複雜的用法讓專家去處理吧,不過話說回來,圖的目的主要是溝通交流,太複雜了,哪來那麼多專家交流。所以個人認為最簡單的可用的系統,最可靠,最有效,類圖也如此。

繼承(Generalization, Extends)

繼承是OOP的一個重要特性,合理的地方使用繼承給系統的設計和實現帶來非常大的好處。不過,使用過度也會讓系統難以理解、維護、擴充,一個重要的判斷標準是替換原則,任何使用父類的地方,替換為子類,正常運轉。類圖裡面使用單向三角箭頭的有向線表示繼承。箭頭的類型和方向我是這樣記的,箭頭最大(三角形)為繼承,方向的話,父類不知道子類的存在,子類知道父類的所有資訊,所以箭頭是由子類指向父類。


關聯(Association)

關聯也是另外一種非常常見的類別關係。稍微大一點的項目都會有不只一個類檔案,所有的類需要關聯起來,互相合作,才能完整的實現整個系統。理論上來說,一個含有String類型屬性的類,與String類也存在關聯的關係,但我們通常不會這樣表示。這就引出一個比較有意思的話題,什麼時候一個屬性應該表示為資料,什麼時候又應該表述為關聯關係。完全同意Martin Fowler的觀點,值得體現在類圖上面的,重要的表示為關聯關係,其它的都表示為資料。以上面String的例子來說,顯然String不值得體現在類圖上面,所以表示為資料。關聯關係在類圖裡面用有向單箭頭線表示。箭頭小,指向被關聯的類,我把它理解為連結(Link)的概念。


依賴(Dependency)

準確的說,應該是直接依賴。同上,保持類圖的簡單性,所以只標識重要的依賴關係。依賴的情況很多,不過設計良好的程式總結下來就只有一種API依賴,或者更直白一點就是方法調用依賴,方法簽名改了,調用者也得跟著改變。可能的情況如,靜態方法修改,參數對象對應類的借口修改等。類圖裡面依賴關係的表示和關聯相似,只是線條變為虛線而已。


小結

UML圖一般是用來溝通的,是程式員的統一語言,有它的普適性。一般情況下也無需繪製得多麼的精確和完備,理論上只需要掌握一些基本的概念和知識即可,不要把它想得多麼的高大上,事實上,常用的幾個UML圖,常用的一些畫法比較容易掌握,值得學習。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.