UML類圖的使用

本來呢,是想著給大家分享一下我在學(xué)習(xí)設(shè)計(jì)模式的時(shí)候的一些方法,然后總結(jié)起來,方便大家用和我自己的查漏補(bǔ)缺。
但是呢!由于我分享的文章中可能有很多的像下面的圖片一樣的UML的類圖,所以呢今天我就來給大家簡(jiǎn)單的講一講類圖是如何看的,當(dāng)然我講的不一定是非常的標(biāo)準(zhǔn),但是基本還是可以用的,那么話不多說,我們來看看下面的這個(gè)類圖;


17-04-06.jpg

首先我們來看一看“動(dòng)物”這個(gè)矩形框,它就是代表一個(gè)類(class)。類圖分為三層,第一層顯示類得名稱,如果是抽象類,則用斜體表示,第二層是類的特性,通常表示的就是字段和屬性,第三層是類的操作,通常是方法或行為。注意前面都是有加號(hào)的,當(dāng)然不一定都是加號(hào),“+”表示的是public ,"-"表示private ,"#"表示protected.;

17-11-59.jpg

然后我們?cè)倏纯醋笙陆怯幸粋€(gè)飛翔,它就表示的是一個(gè)接口圖,與類圖的區(qū)別主要是頂端有《interface》顯示,第一行呢就是接口的名稱,第二行是接口方法。接口還有另一種表示法,就是唐老鴨類實(shí)現(xiàn)了“講人話”的接口。;我們來看一下面這兩個(gè)圖

17-17-52.jpg

接下來我們來看類與類,類與接口之間的關(guān)系了,首先我們現(xiàn)看看動(dòng)物、鳥、鴨子、和唐老鴨之間的關(guān)系符號(hào),這就要回到上面的圖中仔細(xì)的找找了。
其實(shí)呢他們都是集成的關(guān)系,繼承關(guān)系使用空心三角形+實(shí)現(xiàn)來表示的。

17-21-06.jpg

下面的圖中,鳥類會(huì)飛翔的中,大雁是最能飛的,我讓他實(shí)現(xiàn)了飛翔接口。實(shí)現(xiàn)接口用口信三角形+虛線來表示。


17-21-24.jpg

我們來看一下企鵝和氣候這兩個(gè)類,企鵝呢是很特別的的鳥,會(huì)游不會(huì)飛,更重要的是,它和氣候有著很大的關(guān)聯(lián)。我們就不討論為什么了,總之,企鵝需要“知道”氣候的變化,需要“了解”氣候的規(guī)律。當(dāng)一個(gè)類“知道”另一個(gè)類的時(shí)候,可以用關(guān)聯(lián)(association)。關(guān)聯(lián)關(guān)系用實(shí)線箭頭表示。

17-26-41.jpg

我們?cè)賮砘氐酱笱闵砩?,大雁和雁群這兩個(gè)類,大雁是群居動(dòng)物,每個(gè)大雁都是屬于一個(gè)雁群,一個(gè)雁群可以有很多只大雁,所以他們之間就滿足聚合(Aggregation)關(guān)系,聚合表示一種若的‘擁有’關(guān)系,體現(xiàn)的是A對(duì)象可以包含B對(duì)象,但B對(duì)象不是A對(duì)象的一部分。聚合關(guān)系用看空心的菱形+實(shí)線箭頭表示。


17-29-54.jpg

合成(composition, 也有翻譯成‘組合’的)是一種強(qiáng)的‘擁有’關(guān)系,體現(xiàn)了嚴(yán)格的部分和整體的關(guān)系,部分和整體的生命周期一樣。在這里鳥和其翅膀就是合成(組合)關(guān)系,因?yàn)樗麄兪遣糠趾驼w的關(guān)系,并且翅膀和鳥的生命周期相同。合成關(guān)系用實(shí)心的菱形+實(shí)線箭頭表示。另外,你可能會(huì)注意到合成關(guān)系的連心兩端還有一個(gè)數(shù)字‘1’和‘2’,這被成為技術(shù)。表明這一段的類可以有幾個(gè)實(shí)例。很顯然,一個(gè)鳥應(yīng)該有兩個(gè)翅膀。如果一個(gè)類可能有無數(shù)個(gè)實(shí)例,則用‘n’來表示。。關(guān)聯(lián)關(guān)系、聚合關(guān)系也是可以有技術(shù)的。

17-39-46.jpg

只要是動(dòng)物那么他還是會(huì)新陳代謝,繁殖,而動(dòng)物要想有生命力,就需要氧氣、誰以及食物等。也就是說,動(dòng)物依賴與氧氣和誰。他們之間是依賴關(guān)系(Dependency),用虛線箭頭來表示。

17-41-30.jpg

最后:基本上其實(shí)也就這些了,要記住,編程是一本技術(shù),更是一門藝術(shù),我們每次去寫代碼之前,我們需要構(gòu)思一段時(shí)間,我們不能滿足于代碼能夠運(yùn)行正確就完事,時(shí)??紤]如何讓代碼變得更加簡(jiǎn)練,更加容易維護(hù),更加容易擴(kuò)展和服用,只有這樣才可以真正的得到提高,而且能寫出一段優(yōu)雅的代碼是一件很爽的事情,UML圖呢其實(shí)很復(fù)雜,不過我們?nèi)粘磉M(jìn)行簡(jiǎn)單的設(shè)計(jì)和構(gòu)思,以及實(shí)現(xiàn)邏輯和流程的時(shí)候非常有用,當(dāng)我們熟悉運(yùn)用UML的時(shí)候我們已經(jīng)開始面向?qū)ο罅恕?/p>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容