成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

UML精粹 UML類圖全面剖析

開發 架構
UML有很多值得學習的地方,你對UML精粹中類圖是否熟悉,這里就向大家介紹一下有關類圖方面的內容,相信通過本文的介紹你對類圖一定會有全面的認識。

本節和大家一起學習一下UML精粹中的類圖,主要從六個方面向大家介紹,希望通過本節的學習你對UML精粹中類圖的知識有一定的了解,下面讓我們一起來學習UML類圖吧。

UML精粹-類圖

一直覺得自己對UML的理解還遠遠不夠深刻,最近在畫即時消息系統核心模塊的類圖時越有這種感覺。急忙找來老馬的<<UML精粹>>很補一下下。***篇,是關于UML類圖的:

一、區分操作operation和方法method
操作是對對象提出的事情(過程說明),而方法則是過程體。例如,超類的getPrice()就是一個操作,而他的所有子類的getPrice()則是方法。
操作可分為恒態操作query和改態操作modifier。區別是他們能夠改變可觀察到的狀態。恒態操作的一個優點是改變恒態操作的執行順序而不改變系統的行為,所以突出恒態操作是有益的,通常的習慣是,使改態操作不帶返回值,這樣,有返回值的就是恒態操作,雖然這樣有時會感到不便。(Meyer的‘改態操作-恒態操作分隔原理’)。

二、依賴

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

設計依賴的原則:
1。使依賴減至極少,特別是在他們跨越系統的大區域時;
2。提防循環依賴,因為他們會引起循環的改動;
3。試圖表明一個類圖中的所有依賴是徒勞無功的,依賴太多,改動也多,當這個依賴和題目由直接聯系才畫出來;
4。嚴格將表象與領域分開也是一個好習慣。

三、聚合與組合

UML精粹中類圖的聚合aggregation是整體和部分的關系。很多開發人員認為聚合很重要,即使他們基于的理由不同。于是,UML包含了聚合。但是,聚合在UML中沒有任何語義!而組合composition則不同,它表示一個類可以是多個其他類的成分,但任一實例必須只能是一個擁有者的成分,即它只屬于一個擁有者。例如,點的實例可以是多邊行的部分或者是一個圓形,但二者不能兼是。這個規則也叫做‘非共享規則’。其次,如果這個多邊行被刪除了,應該自動確保它擁有的所有點也都被刪除。
在UML中略去聚合,只使用組合。對于其他人的類圖中出現的聚合,因該仔細分析,不同的作者或者開發團隊對使用聚合可能有不同的目的。

四、分類與泛化多重分類與動態分類

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

五、何時使用類圖

1。盡量使用簡潔的表達方式(類,關聯,屬性,泛化,約束),少用高級的圖示法;
2。不要對所有事情都繪制類圖,而要集中考慮關鍵方面
用類圖***的危險就是,你可能全神貫注于結構而忽略行為。所以,繪制UML精粹中類圖的同時,***連同使用某種形式的行為技術。

六、按照契約進行設計

斷言是按契約設計的和行,按契約設計使用了三中特定的斷言:前置條件pre-condition,后置條件post-consition和不變式invariant。前置條件和后置條件用于操作。后置條件是操作執行后‘事前就該如此’的一種陳述(比如計算的公式,你輸入參數,我就按這個公式給你結果),他用以表示‘我不做什么而不是我們如何去做’。換言之,他是把接口和實現分開的一種有用的方法。前置條件是在操作執行前,我們指望事情如何的一種陳述(比如對輸入值的要求)。前置條件明確了‘誰負責核查輸入條件的正確性’(比如輸入的參數置的取值范圍)。這很重要,如果沒有這樣明確的職責陳述,則可能是‘核查過少’(沒有檢查)或者‘核查過多’(雙發都檢查)。

通過前置條件和后置條件,我們可以對異常Exception得出一個比較深刻的理解:異常發生在啟用操作時,其前置條件滿足,但該操作卻不能回送使后置條件滿足的結果。不變式是加在與給定類所有公用操作相關的前置條件和后置條件之上的。在方法執行中,不變式可以為假,但是它在任何別的對象可對接受者做任何事情時它就因該回復成真。
斷言對子類的構造可起到獨特的作用。繼承的危險之一是,你可能定義一個新的子類,但它和超類的操作不相容。斷言減少了這種情況出現的機會。類的不變式和后置條件必須用于所有子類。子類可以選擇加強這些斷言,但不能削弱它們。另一方面,前置條件卻不能加強,但可以減弱。(在動態綁定中,如果一個子類加強前置條件,則當它用于子類時,超類的操作就會失敗)

【編輯推薦】

  1. 分類匯總 UML精粹學習筆記
  2. UML建模工具中的五大視圖
  3. 如何繪制UML用例圖
  4. UML中各種UML圖形的建立步驟簡明介紹
  5. 五個免費UML建模工具推薦

 

責任編輯:佚名 來源: csdn.net
相關推薦

2010-06-09 10:17:19

UML類圖元素

2010-06-29 11:00:25

UML類圖實例

2010-06-09 18:06:52

UML活動圖

2010-06-28 16:54:49

UML類圖關系

2010-07-01 11:33:17

UML類圖關系

2010-07-09 15:04:48

UML部署圖

2010-06-29 12:55:44

UML類圖依賴關系

2010-07-09 15:19:58

UML類圖建模

2010-06-30 14:37:20

UML類圖

2010-06-09 13:06:22

UML業務建模實例

2010-06-12 14:35:46

UML對象圖

2010-07-05 14:03:21

UML圖

2010-07-02 12:39:38

UML對象圖

2010-07-01 17:43:23

UML包圖

2010-07-01 15:12:34

UML時序圖

2010-07-12 13:47:09

UML部署圖

2010-07-01 16:02:48

UML組件圖

2010-06-28 16:37:05

UML類圖

2010-07-12 10:25:44

UML類圖

2010-06-18 16:35:32

UML建模
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人动漫一区二区 | 国产成人免费在线观看 | 福利一区二区 | 国产xxxx搡xxxxx搡麻豆 | 国产小视频在线观看 | 亚洲精品在线看 | 国产99视频精品免费播放照片 | 国产精品入口久久 | 91精品国产91久久久久久吃药 | 亚洲人成人一区二区在线观看 | 亚洲精品成人在线 | 91视在线国内在线播放酒店 | av天天干| 91精品国产一区二区三区 | 99re免费 | 欧美αv | 国产精品日韩在线 | 免费污视频 | 欧美午夜一区二区三区免费大片 | 超碰在线97国产 | 亚洲国产精品99久久久久久久久 | 亚洲综合色丁香婷婷六月图片 | 欧美又大粗又爽又黄大片视频 | 日韩精品一区在线观看 | 日韩网站在线观看 | 成人免费看黄网站在线观看 | 国产精品成人久久久久 | 97人人澡人人爽91综合色 | 久久久久久久一区 | 国产目拍亚洲精品99久久精品 | 午夜视频一区二区 | 一区二区三区四区不卡 | 久久三区 | 国产精品久久久久久久久久久久久 | 色精品视频| 午夜影院视频 | 九热在线 | 精品无码久久久久久久动漫 | 日本国产精品视频 | 免费看的av | 成人午夜免费网站 |