已廢棄,請(qǐng)看新版:重溫 UML 類圖
前一篇寫(xiě)了 UML 工具,接下來(lái)就該寫(xiě)寫(xiě)怎么學(xué)者寫(xiě) UML 圖了。UML 的重要性大家應(yīng)該都深有體會(huì)了把构拳,要是沒(méi)有體會(huì)說(shuō)明你的技術(shù)還是不入流的入門水平啊。最簡(jiǎn)單的梁棠,寫(xiě)不好 UML 圖置森,我讓你寫(xiě)一個(gè)復(fù)雜點(diǎn)的功能框架,你肯定抓瞎符糊,改來(lái)改去的暇藏,折騰死你。
UML 也是一種國(guó)際規(guī)范建模語(yǔ)言濒蒋,也是一種語(yǔ)言盐碱,那么他肯定就有規(guī)范啦,找到這個(gè)規(guī)范的規(guī)則沪伙,我們學(xué)習(xí)起來(lái)就會(huì)很快的瓮顽。
UML圖 建模分成9種圖:
- 類圖(Class Diagram):描述系統(tǒng)所包含的類、類內(nèi)部結(jié)構(gòu)及類之間的關(guān)系围橡。
- 對(duì)象圖(Object Diagram):是類圖的一個(gè)具體實(shí)例暖混。
- 組件圖(Compoment Diagram):描述代碼部件的物理結(jié)構(gòu)以及各部件之間的依賴關(guān)系。
- 部署圖(Deployment Diagram):定義系統(tǒng)中軟翁授、硬件的物理體系結(jié)構(gòu)拣播。
- 用例圖(Usecase Diagram):從用戶的角度出發(fā)描述系統(tǒng)的功能、需求收擦,展示系統(tǒng)外部的各類角色與系統(tǒng)內(nèi)部的* 各種用例之間的關(guān)系贮配。
- 時(shí)序圖(Sequence Diagram):表示對(duì)象之間動(dòng)態(tài)合作的關(guān)系。
- 協(xié)作圖(Collaboration Diagram):描述對(duì)象之間的協(xié)作關(guān)系塞赂。
- 狀態(tài)圖(Statechart Diagram):描述一類對(duì)象的所有可能的狀態(tài)及事件發(fā)生時(shí)狀態(tài)的轉(zhuǎn)移條件泪勒。
- 活動(dòng)圖(Activity Diagram):描述系統(tǒng)中各種活動(dòng)的執(zhí)行順序。
上面的9中圖可以歸納為下表:
類型 | 包含 |
---|---|
靜態(tài)圖 | 類圖宴猾、對(duì)象圖 |
行為圖 | 狀態(tài)圖圆存、活動(dòng)圖 |
用例圖 | 用例圖 |
交互圖 | 順序圖、協(xié)作圖 |
實(shí)現(xiàn)圖 | 組件圖仇哆、部署圖 |
我們最常用的呢沦辙,就是類圖了,其他的就差了讹剔,這里我們就來(lái)好好學(xué)學(xué)類圖的繪制油讯,想看9種 UML 圖的介紹详民,看這里: UML實(shí)踐詳細(xì)經(jīng)典教程----用例圖、順序圖撞羽、狀態(tài)圖阐斜、類圖衫冻、包圖诀紊、協(xié)作圖
UML 類圖中的類
類在 UML 類圖中其實(shí)是分了3種角色的:
- 實(shí)體類
實(shí)體類對(duì)應(yīng)系統(tǒng)需求中的每個(gè)實(shí)體,它們通常需要保存在永久存儲(chǔ)體中隅俘,一般使用數(shù)據(jù)庫(kù)表或文件來(lái)記錄邻奠,實(shí)體類既包括存儲(chǔ)和傳遞數(shù)據(jù)的類,還包括操作數(shù)據(jù)的類为居。實(shí)體類來(lái)源于需求說(shuō)明中的名詞碌宴,如學(xué)生、商品等蒙畴。 - 控制類
控制類用于體現(xiàn)應(yīng)用程序的執(zhí)行邏輯贰镣,提供相應(yīng)的業(yè)務(wù)操作,將控制類抽象出來(lái)可以降低界面和數(shù)據(jù)庫(kù)之間的耦合度膳凝”。控制類一般是由動(dòng)賓結(jié)構(gòu)的短語(yǔ)(動(dòng)詞+名詞)轉(zhuǎn)化來(lái)的名詞,如增加商品對(duì)應(yīng)有一個(gè)商品增加類蹬音,注冊(cè)對(duì)應(yīng)有一個(gè)用戶注冊(cè)類等 - 邊界類
邊界類用于對(duì)外部用戶與系統(tǒng)之間的交互對(duì)象進(jìn)行抽象上煤,主要包括界面類,如對(duì)話框著淆、窗口劫狠、菜單等。
在面向?qū)ο蠓治龊驮O(shè)計(jì)的初級(jí)階段永部,通常首先識(shí)別出實(shí)體類独泞,繪制初始類圖,此時(shí)的類圖也可稱為領(lǐng)域模型苔埋,包括實(shí)體類及其它們之間的相互關(guān)系阐肤。
我們看 UML 類圖有個(gè)七技巧,可以從作為 UI 界面的邊界類作為起點(diǎn)讲坎,因?yàn)檎麄€(gè)系統(tǒng)的表現(xiàn)就是從 UI 顯示開(kāi)始的
知道了 UML 中類的角色孕惜,那么接下來(lái),我們來(lái)看看 UML 中一個(gè) class 的繪制結(jié)構(gòu)
方法要是有參數(shù)的話晨炕,也是要在 ( ) 里寫(xiě)上的衫画,:后面是返回值類型,一個(gè)簡(jiǎn)單的圖瓮栗,就能夠很直觀的描述一個(gè)類削罩,比看代碼都了解的快瞄勾。
當(dāng)然接口也是這個(gè)思路寫(xiě)的,看圖:
UML 類的相互關(guān)系
UML 圖可以很直觀弥激,簡(jiǎn)單的表述清楚一個(gè)復(fù)雜的系統(tǒng)類結(jié)構(gòu)进陡,用的是什么手段呢,就是豐富準(zhǔn)確的類之間關(guān)系的設(shè)計(jì):
- 繼承關(guān)系(泛化關(guān)系):為啥這樣叫我也不知道啊微服,看著真蛋疼V壕巍!以蕴!
- 實(shí)現(xiàn)關(guān)節(jié)(接口)
- 關(guān)聯(lián)關(guān)系
- 依賴關(guān)系
- 組合關(guān)系
- 聚合關(guān)系
直觀的所有關(guān)系圖:
挑了2張圖糙麦,應(yīng)該可以滿足各位不同的口味啦。
繼承關(guān)系(泛化關(guān)系)
- 符號(hào):實(shí)線 + 空箭頭
- 方向:從子類 —> 父類
實(shí)現(xiàn)關(guān)節(jié)(接口)
- 符號(hào):虛線 + 空箭頭
- 方向:從實(shí)現(xiàn)類 —> 接口
下面的就要好好解釋一下了丛肮,不是很好理解赡磅,第一次接觸的要注意了。
單向關(guān)聯(lián)
- 符號(hào):實(shí)線+ 箭頭(注意不是空箭頭啦)
- 方向:從持有者 —> 被持有者(類似觀察者和被觀察者的關(guān)系)
- 理解:可以理解為一個(gè)類作為另一個(gè)類的變量被操作宝与,這里是 China 這個(gè)人持有了 pay 這個(gè)對(duì)象焚廊,用來(lái)支付。嚴(yán)格來(lái)說(shuō)习劫,關(guān)聯(lián)關(guān)系表示 A 的操作需要 B 的參與咆瘟,并不是嚴(yán)格的 B 一定要作為 A 的全局變量存在,我看有這么寫(xiě)的榜聂,不知道準(zhǔn)確不準(zhǔn)確搞疗。
雙向關(guān)聯(lián)
- 符號(hào):實(shí)線,沒(méi)箭頭了
- 理解:大體同單向關(guān)聯(lián)须肆,注意兩邊都有箭頭匿乃,區(qū)別是雙方各自作為對(duì)方的變量被操作。
聚合關(guān)系
- 符號(hào):實(shí)線+ 實(shí)心菱形箭頭
- 方向:從組件 —> 容器
- 理解:和單向關(guān)聯(lián)一樣豌汇,也是表示一個(gè)類在另一個(gè)類中作為全部變量存在被調(diào)用幢炸,聚合關(guān)系呢更準(zhǔn)確的表示組件和容器的關(guān)系,注意這里是實(shí)心菱形箭頭拒贱,表示容器類銷毀了宛徊,組件累也會(huì)銷毀。
組合關(guān)系
- 符號(hào):實(shí)線+ 空心菱形箭頭(注意不是實(shí)心的了)
- 方向:從組件 —> 容器
- 理解:和聚合關(guān)系一樣逻澳,區(qū)別是使用空心的菱形箭頭闸天,表示容器類銷毀了,但是組件類還會(huì)存在斜做,不會(huì)跟著被銷毀
依賴關(guān)系
- 符號(hào):虛線
- 方向:從調(diào)用方法的類 —> 參數(shù)類
- 理解:表示一個(gè)類的某個(gè)方法會(huì)使用另一個(gè)類的對(duì)象作為參數(shù)苞氮,這個(gè)對(duì)象是作為方法的傳入?yún)?shù)存在,而不是全局變量
參考資料:
- 五分鐘讀懂UML類圖
- UML學(xué)習(xí)(二)-----類圖
- UML實(shí)踐詳細(xì)經(jīng)典教程----用例圖瓤逼、順序圖笼吟、狀態(tài)圖库物、類圖、包圖贷帮、協(xié)作圖
著作權(quán)歸作者所有戚揭。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處撵枢。