前言類圖和序列圖是UML中最常用的兩種Diagram,。我將做詳細的總結(jié),。在許多書中,或者網(wǎng)站中,,在介紹一個系統(tǒng)的子系統(tǒng)的設(shè)計時,,很多時候,都是給出簡單的類圖來簡述構(gòu)成子系統(tǒng)的類之間的關(guān)系,。這足以說明類圖的重要性,。
類圖中基本語法學(xué)習(xí)在UML中,,畫每一種圖,都有一套規(guī)范的,,不同的符號是不同的意義,,我們要熟悉這些符號的意義,才能理解一副類圖的意義,。 如圖,,這是一副很簡單的類圖,很簡單,,也很熟悉,。
正如你所看到的,,上面類圖的名稱是Student,,屬性有Name, Sex, Age, 對應(yīng)的操作有六個。你應(yīng)該知道一個類圖的Student是必須存在的,,而屬性和操作是可選的,。如果,你看到了一個沒有任何屬性和操作的類時,,也不要感到驚訝,,那是正確,雖然不是很正常,。
Name表示的是屬性的名稱,,而它后面的String表示的是這個屬性的類型,; 最下面是類的操作,“+”的意思,,已經(jīng)解釋過了,。我選取以下的一個操作進行詳細講解: 抽象類看下面這個圖: 你會發(fā)現(xiàn)類名和Eat方法是以斜體字體表示的,;在類圖中以斜體表示也是有特殊意義的,上圖表示Animal是一個抽象類,,抽象類是不能實例化的,,一般至少包含一個抽象操作,,比如上圖的Eat就是抽象操作。 接口看下圖這個圖: 這是接口的表示方法。接口是什么,,不用做什么解釋,。這里讓大家對接口圖有一個大體的了解。 類圖之間的關(guān)系對于類圖的基本講解就到這里了,接下來講解類圖中最重要的一部分,,也是比較難理解的一部分:類圖之間的關(guān)系,。 繼承關(guān)系繼承關(guān)系是一種基本而重要的關(guān)系,;至于繼承的概念,,我就不做解釋了,而只講UML中對繼承的表示,。 以上兩張圖,,都是Astah中對繼承關(guān)系的表示方法,,繼承通過指向超類的一條閉合的,單箭頭的實線表示,。這個表示和用例圖中的泛化表示方式是一致的,,不熟悉的朋友,可以去看看UML用例圖總結(jié)這篇文章,。 關(guān)聯(lián)關(guān)系當(dāng)系統(tǒng)建模時,,特定的對象間會彼此關(guān)聯(lián),,而且這些關(guān)聯(lián)本身需要被清晰地建模,,這里我會介紹5中關(guān)聯(lián),關(guān)于什么時候使用哪種關(guān)聯(lián),,這里是不做介紹的,,這里而是將重點集中在每種關(guān)聯(lián)的用途,并說明如何在類圖上表現(xiàn)出來,。 雙向的關(guān)聯(lián) 關(guān)聯(lián)是兩個類之間的連接,,關(guān)聯(lián)總是被假定是雙向;這說明,,兩個類彼此知道它們之間的關(guān)系,,都可以調(diào)用對方的公共屬性和方法;雖然在分析階段這種關(guān)系是適用的,,但我覺得對于描述設(shè)計模式內(nèi)的類關(guān)系來說顯得太抽象了,,因為在設(shè)計階段關(guān)聯(lián)關(guān)系必須被映射為對象引用或指針;對象引用本身就是有向的,。這種關(guān)系在設(shè)計的時候比較少用到,,關(guān)聯(lián)一般都是有向的。 單向關(guān)聯(lián) 一個單向的關(guān)聯(lián),,表示為一條帶有指向已知類的開放箭頭的實線,。Class0知道Class1的存在,而Class1不知道Class0的存在,,Class0可以調(diào)用Class1的公共屬性和方法,。使用Astah導(dǎo)出代碼時,單向關(guān)聯(lián)體現(xiàn)為Class0中包含一個Class1對象,。 關(guān)聯(lián)類 Person和Company是有關(guān)系的,,存在什么關(guān)系,?存在一個雇傭的關(guān)系,由于存在一個Job,,導(dǎo)致Person和Company產(chǎn)生了關(guān)系,,但是在建模時,由于Job將Person和Company關(guān)聯(lián)到了一起,,而描述Job的Salay放在Person或者Company都不是很合適的,,由于不同的崗位有不同的Salary,如果將崗位和Salary放在Person,,將導(dǎo)致Person類存在很高的耦合性,。所以關(guān)聯(lián)出一個關(guān)聯(lián)類Job,表示崗位信息,。從圖中可以看出,,Job類即是一個關(guān)聯(lián)關(guān)系也是一個類,,是為了描述類Person與類Company之間的關(guān)聯(lián)關(guān)系的,。 聚合 房子是一個整體實體,,而窗戶是房子的一部分,,而窗戶可以在建房子之前就創(chuàng)建,在這里,,Window實例清楚地獨立地Car類實例而存在,。使用空心的菱形表示。 組合聚合 公司是一個整體實體,公司包含部門,,部門不能獨立于公司而存在,。使用實心菱形表示。 自身關(guān)聯(lián)(反射關(guān)聯(lián)) 實現(xiàn)接口如下圖: 在UML中表示的很簡單,就是將泛化中的實線變成了虛線就好了,。 總結(jié)這篇文章大體的對UML類圖做了一個總結(jié),,平時工作中涉及到的內(nèi)容都大體上做了介紹,,如果有什么遺漏,請大家指出,。同時,,在本文中所有的類圖都是使用Astah畫的,關(guān)于使用Astah畫類圖,,大家可以參考:UML工具Astah的使用,。 附錄多重值和它們的表示
|
|