中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

UML類圖的示例分析

發布時間:2021-12-06 13:48:06 來源:億速云 閱讀:206 作者:小新 欄目:開發技術

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

感謝你能夠認真閱讀完這篇文章,希望小編分享的“UML類圖的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

uml
AI

张家口市| 宁海县| 盐亭县| 永安市| 乡宁县| 丽水市| 明星| 班玛县| 郁南县| 封开县| 呼伦贝尔市| 旺苍县| 西吉县| 沅陵县| 固安县| 长沙县| 新丰县| 丰台区| 建瓯市| 库尔勒市| 新沂市| 山东省| 弥渡县| 西乡县| 特克斯县| 旬阳县| 从化市| 庆安县| 巴彦淖尔市| 黄浦区| 无极县| 梁平县| 马鞍山市| 民丰县| 三明市| 丰宁| 扬州市| 都安| 贵港市| 永昌县| 安化县|