偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

UML精粹 UML類(lèi)圖全面剖析

開(kāi)發(fā) 架構(gòu)
UML有很多值得學(xué)習(xí)的地方,你對(duì)UML精粹中類(lèi)圖是否熟悉,這里就向大家介紹一下有關(guān)類(lèi)圖方面的內(nèi)容,相信通過(guò)本文的介紹你對(duì)類(lèi)圖一定會(huì)有全面的認(rèn)識(shí)。

本節(jié)和大家一起學(xué)習(xí)一下UML精粹中的類(lèi)圖,主要從六個(gè)方面向大家介紹,希望通過(guò)本節(jié)的學(xué)習(xí)你對(duì)UML精粹中類(lèi)圖的知識(shí)有一定的了解,下面讓我們一起來(lái)學(xué)習(xí)UML類(lèi)圖吧。

UML精粹-類(lèi)圖

一直覺(jué)得自己對(duì)UML的理解還遠(yuǎn)遠(yuǎn)不夠深刻,最近在畫(huà)即時(shí)消息系統(tǒng)核心模塊的類(lèi)圖時(shí)越有這種感覺(jué)。急忙找來(lái)老馬的<<UML精粹>>很補(bǔ)一下下。***篇,是關(guān)于UML類(lèi)圖的:

一、區(qū)分操作operation和方法method
操作是對(duì)對(duì)象提出的事情(過(guò)程說(shuō)明),而方法則是過(guò)程體。例如,超類(lèi)的getPrice()就是一個(gè)操作,而他的所有子類(lèi)的getPrice()則是方法。
操作可分為恒態(tài)操作query和改態(tài)操作modifier。區(qū)別是他們能夠改變可觀察到的狀態(tài)。恒態(tài)操作的一個(gè)優(yōu)點(diǎn)是改變恒態(tài)操作的執(zhí)行順序而不改變系統(tǒng)的行為,所以突出恒態(tài)操作是有益的,通常的習(xí)慣是,使改態(tài)操作不帶返回值,這樣,有返回值的就是恒態(tài)操作,雖然這樣有時(shí)會(huì)感到不便。(Meyer的‘改態(tài)操作-恒態(tài)操作分隔原理’)。

二、依賴(lài)

UML精粹中類(lèi)圖一般在如下兩周情況下會(huì)發(fā)生依賴(lài)關(guān)系:一個(gè)類(lèi)把消息發(fā)給另外一個(gè)類(lèi);一個(gè)類(lèi)以另外一個(gè)類(lèi)作為數(shù)據(jù)部分。
過(guò)于復(fù)雜的依賴(lài)可能會(huì)導(dǎo)致‘漣漪效應(yīng)’。這種效應(yīng)的結(jié)果是,以后萬(wàn)一有改動(dòng),就會(huì)牽一發(fā)而動(dòng)全身。
《常用表示依賴(lài)的詞匯》
call源調(diào)用目標(biāo)中的操作
create源創(chuàng)建目標(biāo)的實(shí)例
derive源由目標(biāo)導(dǎo)出
instantiate源是目標(biāo)的一個(gè)實(shí)例(如果源是一個(gè)類(lèi),則這個(gè)類(lèi)本身就是類(lèi)的一個(gè)實(shí)例,也就是說(shuō),目標(biāo)類(lèi)是個(gè)一元類(lèi))
permit目標(biāo)允許源訪問(wèn)目標(biāo)的私用特征
realize源是由目標(biāo)定義的規(guī)約或接口的一個(gè)實(shí)現(xiàn)
refine源可以是一個(gè)設(shè)計(jì)類(lèi),目標(biāo)是相應(yīng)的分析類(lèi)
substitute源可以置換目標(biāo)
trace用于追蹤諸如需求到類(lèi)或者一個(gè)模型中的改動(dòng)如何連接到別處的改動(dòng)
use源要求目標(biāo)為其實(shí)現(xiàn)

設(shè)計(jì)依賴(lài)的原則:
1。使依賴(lài)減至極少,特別是在他們跨越系統(tǒng)的大區(qū)域時(shí);
2。提防循環(huán)依賴(lài),因?yàn)樗麄儠?huì)引起循環(huán)的改動(dòng);
3。試圖表明一個(gè)類(lèi)圖中的所有依賴(lài)是徒勞無(wú)功的,依賴(lài)太多,改動(dòng)也多,當(dāng)這個(gè)依賴(lài)和題目由直接聯(lián)系才畫(huà)出來(lái);
4。嚴(yán)格將表象與領(lǐng)域分開(kāi)也是一個(gè)好習(xí)慣。

三、聚合與組合

UML精粹中類(lèi)圖的聚合aggregation是整體和部分的關(guān)系。很多開(kāi)發(fā)人員認(rèn)為聚合很重要,即使他們基于的理由不同。于是,UML包含了聚合。但是,聚合在UML中沒(méi)有任何語(yǔ)義!而組合composition則不同,它表示一個(gè)類(lèi)可以是多個(gè)其他類(lèi)的成分,但任一實(shí)例必須只能是一個(gè)擁有者的成分,即它只屬于一個(gè)擁有者。例如,點(diǎn)的實(shí)例可以是多邊行的部分或者是一個(gè)圓形,但二者不能兼是。這個(gè)規(guī)則也叫做‘非共享規(guī)則’。其次,如果這個(gè)多邊行被刪除了,應(yīng)該自動(dòng)確保它擁有的所有點(diǎn)也都被刪除。
在UML中略去聚合,只使用組合。對(duì)于其他人的類(lèi)圖中出現(xiàn)的聚合,因該仔細(xì)分析,不同的作者或者開(kāi)發(fā)團(tuán)隊(duì)對(duì)使用聚合可能有不同的目的。

四、分類(lèi)與泛化多重分類(lèi)與動(dòng)態(tài)分類(lèi)

提防‘子類(lèi)都是is-a關(guān)系’這樣的想法。有時(shí)候使用繼承可能造成不合適或職責(zé)混淆??聪旅娴亩陶Z(yǔ):
1)Shep是一只牧羊犬
2)牧羊犬是一只犬
3)犬是動(dòng)物
4)牧羊犬是一屬Breed
5)犬是一個(gè)種Species
由1-4可以推出Shep是一屬,而由2-5可推出牧羊犬是一個(gè)種,這樣看起來(lái)就不大合適了。這是因?yàn)?,在這里面并不是所有的關(guān)系都是泛化(牧羊犬類(lèi)型是犬類(lèi)型的一個(gè)子類(lèi)),有些是分類(lèi)(對(duì)象Shep是牧羊犬類(lèi)型的一個(gè)實(shí)例)。泛化是傳遞的,分類(lèi)則不然。
為什么會(huì)把Shep對(duì)象和其他類(lèi)扯到一起呢?看看分類(lèi)的定義,分類(lèi)指的是對(duì)象及其類(lèi)型之間的關(guān)系。主流編程語(yǔ)言都假定,一個(gè)對(duì)象只屬于一個(gè)類(lèi)。但在多重分類(lèi)中,一個(gè)對(duì)象可以表述為若干類(lèi)型,他們不一定是用繼承來(lái)連接溝通的。

五、何時(shí)使用類(lèi)圖

1。盡量使用簡(jiǎn)潔的表達(dá)方式(類(lèi),關(guān)聯(lián),屬性,泛化,約束),少用高級(jí)的圖示法;
2。不要對(duì)所有事情都繪制類(lèi)圖,而要集中考慮關(guān)鍵方面
用類(lèi)圖***的危險(xiǎn)就是,你可能全神貫注于結(jié)構(gòu)而忽略行為。所以,繪制UML精粹中類(lèi)圖的同時(shí),***連同使用某種形式的行為技術(shù)。

六、按照契約進(jìn)行設(shè)計(jì)

斷言是按契約設(shè)計(jì)的和行,按契約設(shè)計(jì)使用了三中特定的斷言:前置條件pre-condition,后置條件post-consition和不變式invariant。前置條件和后置條件用于操作。后置條件是操作執(zhí)行后‘事前就該如此’的一種陳述(比如計(jì)算的公式,你輸入?yún)?shù),我就按這個(gè)公式給你結(jié)果),他用以表示‘我不做什么而不是我們?nèi)绾稳プ?rsquo;。換言之,他是把接口和實(shí)現(xiàn)分開(kāi)的一種有用的方法。前置條件是在操作執(zhí)行前,我們指望事情如何的一種陳述(比如對(duì)輸入值的要求)。前置條件明確了‘誰(shuí)負(fù)責(zé)核查輸入條件的正確性’(比如輸入的參數(shù)置的取值范圍)。這很重要,如果沒(méi)有這樣明確的職責(zé)陳述,則可能是‘核查過(guò)少’(沒(méi)有檢查)或者‘核查過(guò)多’(雙發(fā)都檢查)。

通過(guò)前置條件和后置條件,我們可以對(duì)異常Exception得出一個(gè)比較深刻的理解:異常發(fā)生在啟用操作時(shí),其前置條件滿足,但該操作卻不能回送使后置條件滿足的結(jié)果。不變式是加在與給定類(lèi)所有公用操作相關(guān)的前置條件和后置條件之上的。在方法執(zhí)行中,不變式可以為假,但是它在任何別的對(duì)象可對(duì)接受者做任何事情時(shí)它就因該回復(fù)成真。
斷言對(duì)子類(lèi)的構(gòu)造可起到獨(dú)特的作用。繼承的危險(xiǎn)之一是,你可能定義一個(gè)新的子類(lèi),但它和超類(lèi)的操作不相容。斷言減少了這種情況出現(xiàn)的機(jī)會(huì)。類(lèi)的不變式和后置條件必須用于所有子類(lèi)。子類(lèi)可以選擇加強(qiáng)這些斷言,但不能削弱它們。另一方面,前置條件卻不能加強(qiáng),但可以減弱。(在動(dòng)態(tài)綁定中,如果一個(gè)子類(lèi)加強(qiáng)前置條件,則當(dāng)它用于子類(lèi)時(shí),超類(lèi)的操作就會(huì)失?。?/p>

【編輯推薦】

  1. 分類(lèi)匯總 UML精粹學(xué)習(xí)筆記
  2. UML建模工具中的五大視圖
  3. 如何繪制UML用例圖
  4. UML中各種UML圖形的建立步驟簡(jiǎn)明介紹
  5. 五個(gè)免費(fèi)UML建模工具推薦

 

責(zé)任編輯:佚名 來(lái)源: csdn.net
相關(guān)推薦

2010-06-29 11:00:25

UML類(lèi)圖實(shí)例

2010-06-09 10:17:19

UML類(lèi)圖元素

2010-06-09 18:06:52

UML活動(dòng)圖

2010-06-28 16:54:49

UML類(lèi)圖關(guān)系

2010-07-01 11:33:17

UML類(lèi)圖關(guān)系

2010-07-09 15:04:48

UML部署圖

2010-06-29 12:55:44

UML類(lèi)圖依賴(lài)關(guān)系

2010-07-09 15:19:58

UML類(lèi)圖建模

2010-06-30 14:37:20

UML類(lèi)圖

2010-06-09 13:06:22

UML業(yè)務(wù)建模實(shí)例

2010-06-12 14:35:46

UML對(duì)象圖

2010-07-05 14:03:21

UML圖

2010-07-02 12:39:38

UML對(duì)象圖

2010-07-01 17:43:23

UML包圖

2010-06-28 16:37:05

UML類(lèi)圖

2010-07-01 15:12:34

UML時(shí)序圖

2010-07-12 13:47:09

UML部署圖

2010-07-01 16:02:48

UML組件圖

2010-07-12 10:25:44

UML類(lèi)圖

2010-06-18 16:35:32

UML建模
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)