国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
UML類(lèi)圖
 

UML類(lèi)圖

作者/來(lái)源: 啟明

UML 的靜態(tài)機(jī)制中類(lèi)圖是一個(gè)重點(diǎn),它不但是設(shè)計(jì)人員關(guān)心的核心,更是實(shí)現(xiàn)人員關(guān)注的核心。建模工具也主要根據(jù)類(lèi)圖來(lái)產(chǎn)生代碼。類(lèi)圖在 UML9 個(gè)圖中占據(jù)了一個(gè)相當(dāng)重要的地位。

James Rumbaugh 對(duì)類(lèi)的定義是:類(lèi)是具有相似結(jié)構(gòu)、行為和關(guān)系的一組對(duì)象的描述符。類(lèi)是面向?qū)ο笙到y(tǒng)中最重要的構(gòu)造塊。類(lèi)圖顯示了一組類(lèi)、接口、協(xié)作以及他們之間的關(guān)系。在 UML 中問(wèn)題域最終要被逐步轉(zhuǎn)化,通過(guò)類(lèi)來(lái)建模,通過(guò)編程語(yǔ)言構(gòu)建這些類(lèi)從而實(shí)現(xiàn)系統(tǒng)。類(lèi)加上他們之間的關(guān)系就構(gòu)成了類(lèi)圖,類(lèi)圖中還可以包含接口、包等元素,也可以包括對(duì)象、鏈等實(shí)例。接口在類(lèi)圖中通過(guò)版型來(lái)表示 <<interface>> ,下面的介紹將主要介紹類(lèi),接口和類(lèi)類(lèi)似。

A.      類(lèi)的 UML 表示

類(lèi)的命名盡量應(yīng)用領(lǐng)域中的術(shù)語(yǔ),應(yīng)明確、無(wú)岐義,以利于相互交流和理解。類(lèi)的屬性、操作中的可見(jiàn)性使用+、 # 、-分別表示 public 、 protected 、 private 。

 

B.      類(lèi)之間的關(guān)系

類(lèi)之間的關(guān)系是類(lèi)圖中比較復(fù)雜的內(nèi)容。有關(guān)聯(lián)、聚合、組合、范化、依賴(lài)。

關(guān)聯(lián):是模型元素之間的一種語(yǔ)義聯(lián)系,是類(lèi)之間的一種很弱的聯(lián)系。關(guān)聯(lián)可以有方向,可以是單向關(guān)聯(lián),也可以是雙向關(guān)聯(lián)??梢越o關(guān)聯(lián)加上關(guān)聯(lián)名來(lái)描述關(guān)聯(lián)的作用。關(guān)聯(lián)兩端的類(lèi)也可以以某種角色參與關(guān)聯(lián),角色可以具有多重性,表示可以有多少個(gè)對(duì)象參與關(guān)聯(lián)??梢酝ㄟ^(guò)關(guān)聯(lián)類(lèi)進(jìn)一步描述關(guān)聯(lián)的屬性、操作以及其他信息。關(guān)聯(lián)類(lèi)通過(guò)一條虛線與關(guān)聯(lián)連接。對(duì)于關(guān)聯(lián)可以加上一些約束,以加強(qiáng)關(guān)聯(lián)的含義。如下圖所示:

 

聚合是一種特殊的關(guān)聯(lián),聚合表示整體與部分的關(guān)系。通常在定義一個(gè)整體類(lèi)后,再去分析這個(gè)整體類(lèi)的組成結(jié)構(gòu)。從而找出一些組成類(lèi),該整體類(lèi)和組成類(lèi)之間就形成了聚合關(guān)系。例如艦隊(duì)是由一系列的艦船組成。需求描述中“包含”、“組成”、“分為 …. 部分”等詞常意味著聚合關(guān)系。

組合也是一種特殊的關(guān)聯(lián),也表示類(lèi)之間整體和部分的關(guān)系,但是組合關(guān)系中部分和整體具有統(tǒng)一的生存期。一旦整體對(duì)象不存在,部分對(duì)象也將不存在。部分對(duì)象與整體對(duì)象之間具有共生死的關(guān)系。

聚合和組合的區(qū)別:聚合關(guān)系是“ hasa ”關(guān)系,組合關(guān)系是“ containsa ”關(guān)系;聚合關(guān)系表示整體與部分的關(guān)系比較弱,而組合比較強(qiáng);聚合關(guān)系中代表部分事物的對(duì)象與代表聚合事物的對(duì)象的生存期無(wú)關(guān),一旦刪除了聚合對(duì)象不一定就刪除了代表部分事物的對(duì)象。組合中一旦刪除了組合對(duì)象,同時(shí)也就刪除了代表部分事物的對(duì)象。

泛化定義了一般元素和特殊元素之間的分類(lèi)關(guān)系,類(lèi)之間的這種泛化關(guān)系也就是繼承關(guān)系。泛化關(guān)系是“ akindof ”關(guān)系,定義一般元素和特殊元素之間的分類(lèi)關(guān)系。下圖是一個(gè)泛化關(guān)系的例子。

有兩個(gè)元素如果修改 X 的定義可能會(huì)導(dǎo)致對(duì) Y 的定義,則認(rèn)為 Y 依賴(lài) X 。依賴(lài)關(guān)系可能由各種原因引起,如一個(gè)類(lèi)向另一個(gè)類(lèi)發(fā)送消息,或者一個(gè)類(lèi)是另一個(gè)類(lèi)的數(shù)據(jù)成員類(lèi)型,或者一個(gè)類(lèi)是另一個(gè)類(lèi)的操作的參數(shù)類(lèi)型等。有時(shí)依賴(lài)關(guān)系和關(guān)聯(lián)關(guān)系比較難區(qū)分。如果類(lèi) A 和類(lèi) B 有關(guān)聯(lián)關(guān)系,它們之間必然有依賴(lài)關(guān)系。如果兩個(gè)類(lèi)之間有關(guān)聯(lián)關(guān)系時(shí)不用再表示出這兩個(gè)類(lèi)之間的依賴(lài)關(guān)系。

 

C.      建立類(lèi)圖

在軟件開(kāi)發(fā)不同階段使用的類(lèi)圖具有不同的抽象層次,即概念層、說(shuō)明層、和實(shí)現(xiàn)層。使用 UML 進(jìn)行應(yīng)用建模也應(yīng)該是一個(gè)迭代的過(guò)程,所以我們應(yīng)該建立一個(gè)類(lèi)圖的層次的概念。

概念層類(lèi)圖描述應(yīng)用領(lǐng)域中的概念,這些概念與實(shí)現(xiàn)它們的類(lèi)有聯(lián)系。通常沒(méi)有直接的映射關(guān)系。畫(huà)概念層類(lèi)圖時(shí)很少考慮或不考慮實(shí)現(xiàn)問(wèn)題,因此概念層類(lèi)圖應(yīng)獨(dú)立于具體的編程語(yǔ)言。下面是一個(gè)概念層類(lèi)的表示。

說(shuō)明層類(lèi)圖。此時(shí)我們考察的是類(lèi)的接口部分,而不是實(shí)現(xiàn)部分。這個(gè)接口可能因?yàn)閷?shí)現(xiàn)環(huán)境、運(yùn)行特性等有多種不同的實(shí)現(xiàn)。下面是一個(gè)說(shuō)明層類(lèi)的表示。

實(shí)現(xiàn)層類(lèi)圖才真正考慮類(lèi)的實(shí)現(xiàn)問(wèn)題,提供實(shí)現(xiàn)的細(xì)節(jié)。此時(shí)的類(lèi)的概念才應(yīng)該是真正的嚴(yán)格意義上的類(lèi)。它揭示了軟件實(shí)體的構(gòu)成情況。實(shí)現(xiàn)層的類(lèi)是最常用的,在很多的時(shí)候說(shuō)明層的類(lèi)更有助于人們對(duì)軟件的理解。

UML 的最終目標(biāo)是識(shí)別出所有必須的類(lèi),并分析這些類(lèi)之間的關(guān)系,類(lèi)的識(shí)別貫穿于整個(gè)建模過(guò)程,分析階段主要識(shí)別問(wèn)題域相關(guān)的類(lèi),在設(shè)計(jì)階段需要加入一些反映設(shè)計(jì)思想、方法的類(lèi)以及實(shí)現(xiàn)問(wèn)題域所需要的類(lèi),在編碼實(shí)現(xiàn)階段,因?yàn)檎Z(yǔ)言的特點(diǎn),可能需要加入一些其他的類(lèi)。

建立類(lèi)圖的步驟:

1 )研究分析問(wèn)題領(lǐng)域確定系統(tǒng)需求。

2 )確定類(lèi),明確類(lèi)的含義和職責(zé)、確定屬性和操作。

3 )確定類(lèi)之間的關(guān)系。

類(lèi)的識(shí)別是一個(gè)需要大量技巧的工作,尋找類(lèi)的一些技巧包括:名詞識(shí)別法;根據(jù)用例描述確定類(lèi);使用 CRC 分析法;根據(jù)邊界類(lèi)、控制類(lèi)、實(shí)體類(lèi)的劃分來(lái)幫助分析系統(tǒng)中的類(lèi);參考設(shè)計(jì)模式確定類(lèi);對(duì)領(lǐng)域進(jìn)行分析或利用已有領(lǐng)域分析結(jié)果得到類(lèi);利用 RUP 中如何在分析和設(shè)計(jì)中尋找類(lèi)的步驟。

1.       名詞識(shí)別法:

這種方法的關(guān)鍵是識(shí)別系統(tǒng)問(wèn)題域中的實(shí)體。對(duì)系統(tǒng)進(jìn)行描述,描述應(yīng)該使用問(wèn)題域中的概念和命名,從系統(tǒng)描述中標(biāo)識(shí)名詞及名詞短語(yǔ),其中的名詞往往可以標(biāo)識(shí)為對(duì)象,復(fù)數(shù)名詞往往可以標(biāo)識(shí)為類(lèi)。

2.       從用例中識(shí)別類(lèi):

用例圖實(shí)質(zhì)上是一種系統(tǒng)描述的形式,自然可以根據(jù)用例描述來(lái)識(shí)別類(lèi)。針對(duì)各個(gè)用例,可以提如下的問(wèn)題輔助識(shí)別:

用例描述中出現(xiàn)了那些實(shí)體?

用例的完成需要哪些實(shí)體合作?

用例執(zhí)行過(guò)程中會(huì)產(chǎn)生并存儲(chǔ)哪些信息?

用例要求與之關(guān)聯(lián)的每個(gè)角色的輸入是什么?

用例反饋與之關(guān)聯(lián)的每個(gè)角色的輸出是什么?

用例需要操作哪些硬設(shè)備?

在面向?qū)ο髴?yīng)用中,類(lèi)之間傳遞的信息數(shù)據(jù)要么可以映射到發(fā)送方的某些屬性,要么該信息數(shù)據(jù)本身就是一個(gè)對(duì)象。綜合不同的用例識(shí)別結(jié)果,就可以得到整個(gè)系統(tǒng)的類(lèi),在類(lèi)的基礎(chǔ)上,我們又可以分析用例的動(dòng)態(tài)特性來(lái)對(duì)用例進(jìn)行動(dòng)態(tài)行為建模。

3.       使用CRC分析法:

CRC Class,Responsibilities,Collaboration )卡的最大價(jià)值在于把人們從思考過(guò)程模式中脫離出來(lái),更充分的專(zhuān)注于對(duì)象技術(shù)。 CRC 卡允許整個(gè)項(xiàng)目組對(duì)設(shè)計(jì)做出貢獻(xiàn)。參與系統(tǒng)設(shè)計(jì)的人越多,能夠收集到的好主意也就越多。因?yàn)?/span> CRC 會(huì)議是大家全力參與的,通常只需要很少的有類(lèi)名的卡片,實(shí)際上沒(méi)有寫(xiě)出完整的卡片。 CRC 會(huì)議進(jìn)行中,一些人模擬系統(tǒng)和對(duì)象交流,把消息傳給其他的對(duì)象。通過(guò)一步步處理,問(wèn)題很容易地被解決。 它由三部分組成:類(lèi) (Class) 、職責(zé) (Responsibility) 、協(xié)作 (Collaborator) 。下面是一個(gè) CRC 卡的示例:

類(lèi)名

職責(zé) 1

職責(zé) 1 的協(xié)作

職責(zé) 2

職責(zé) 2 的協(xié)作

……

……

職責(zé)是類(lèi)需要知道或做的任何事物。這些職責(zé)是類(lèi)自身所知的知識(shí),或類(lèi)在執(zhí)行時(shí)所需的知識(shí)。協(xié)作是指為獲取消息,或協(xié)助執(zhí)行活動(dòng)的其他類(lèi)。創(chuàng)建 CRC 模型需要下面的步驟。

1)        建立團(tuán)隊(duì),包括客戶(hù)、設(shè)計(jì)人員、分析人員和一個(gè)導(dǎo)引者。如果沒(méi)有那么多人,那么可以是客戶(hù)和你自己兩個(gè)人。

2)        找出需求中存在的名詞和名詞詞組,特別注意復(fù)數(shù)(通常是集合),他們對(duì)應(yīng)的單數(shù)才是。把你第一次想到的所有概念都寫(xiě)在白板或紙上。不管看起來(lái)這些概念是如何荒謬,把他們都寫(xiě)下來(lái)。

3)        篩選。把對(duì)象分為三類(lèi),核心對(duì)象(必須首先實(shí)現(xiàn)),可選的(目前不能確定),以及不需要的對(duì)象。這之前最好確定一下你的項(xiàng)目范圍。某些不屬于本項(xiàng)目范圍的對(duì)象可以使用輕量的adapter或proxy實(shí)現(xiàn)。這里可以加入對(duì)分析、設(shè)計(jì)模式的考慮和應(yīng)用。

4)        建卡。取出CRC卡,把核心類(lèi)寫(xiě)在每一張卡上,把可選的類(lèi)和排除的類(lèi)分別寫(xiě)在不同的紙上。

5)        角色扮演。最好是一個(gè)團(tuán)隊(duì)執(zhí)行,一個(gè)人很難做。每個(gè)人負(fù)責(zé)幾個(gè)類(lèi)。對(duì)每一個(gè)Use case其中的情景。導(dǎo)引者指定從某一個(gè)人的類(lèi)開(kāi)始,某一個(gè)人看一看自己能夠獨(dú)立完成,如果不能完成,大家看一看手中的類(lèi),誰(shuí)能完成,就站起來(lái),宣布自己能夠完成,以致繼續(xù)這個(gè)過(guò)程,每個(gè)人完成自己的職責(zé)就坐下。在這過(guò)程中不斷修改類(lèi)的責(zé)任,并寫(xiě)下協(xié)作者的名字。

4.       根據(jù)邊界類(lèi)、控制類(lèi)、實(shí)體類(lèi)幫助分析系統(tǒng)中的類(lèi)

UML 中類(lèi)有三種主要的版型:邊界類(lèi)、控制類(lèi)和實(shí)體類(lèi)。引入邊界類(lèi)、控制類(lèi)及實(shí)體類(lèi)的概念有助于分析和設(shè)計(jì)人員確定系統(tǒng)中的類(lèi)。

邊界類(lèi)位于系統(tǒng)與外界的交界處,窗體、報(bào)表、以及表示通訊協(xié)議的類(lèi)、直接與外部設(shè)備交互的類(lèi)、直接與外部系統(tǒng)交互的類(lèi)等都是邊界類(lèi)。通過(guò)用例圖可以確定需要的邊界類(lèi),每個(gè) Actor/Use Case 對(duì)至少要一個(gè)邊界類(lèi),但并非每個(gè) Actor/Use Case 對(duì)要唯一的邊界類(lèi)。

實(shí)體類(lèi)保存要放進(jìn)持久存儲(chǔ)體的信息。持久存儲(chǔ)體就是數(shù)據(jù)庫(kù)、文件等可以永久存儲(chǔ)數(shù)據(jù)的介質(zhì)。實(shí)體類(lèi)可以通過(guò)事件流和交互圖發(fā)現(xiàn)。通常每個(gè)實(shí)體類(lèi)在數(shù)據(jù)庫(kù)中有相應(yīng)的表,實(shí)體類(lèi)中的屬性對(duì)應(yīng)數(shù)據(jù)庫(kù)表中的字段。

控制類(lèi)是控制其他類(lèi)工作的類(lèi)。每個(gè)用例通常有一個(gè)控制類(lèi),控制用例中的事件順序,控制類(lèi)也可以在多個(gè)用例間共用。其他類(lèi)并不向控制類(lèi)發(fā)送很多消息,而是由控制類(lèi)發(fā)出很多消息。

5.       領(lǐng)域進(jìn)行分析

建立類(lèi)圖的過(guò)程就是對(duì)領(lǐng)域及其解決方案的分析和設(shè)計(jì)過(guò)程。類(lèi)的獲取是一個(gè)依賴(lài)個(gè)人創(chuàng)造力的過(guò)程,有時(shí)需要和領(lǐng)域?qū)<液献鳎瑢?duì)研究領(lǐng)域進(jìn)行仔細(xì)分析,抽象出領(lǐng)域中的概念,定義其含義及相互關(guān)系,分析出系統(tǒng)類(lèi),并用領(lǐng)域中的術(shù)語(yǔ)為類(lèi)命名。領(lǐng)域分析是:通過(guò)對(duì)某一領(lǐng)域中的已有應(yīng)用系統(tǒng)、理論、技術(shù)、開(kāi)發(fā)歷史等的研究,來(lái)標(biāo)識(shí)、收集、組織、分析和表示領(lǐng)域模型及軟件體系結(jié)構(gòu)的過(guò)程,并得到結(jié)果。

 

D.       使用類(lèi)圖

類(lèi)圖幾乎是所有面向?qū)ο蠓椒ǖ闹е?,?yīng)該如何使用類(lèi)圖呢?以下提供了一些使用類(lèi)圖的一些建議。

不要試圖在項(xiàng)目的初始階段使用所有的符號(hào),首先應(yīng)該從簡(jiǎn)單概念開(kāi)始。比如類(lèi)的關(guān)系等等,在需要的時(shí)候才使用。在項(xiàng)目的不同開(kāi)發(fā)階段,應(yīng)該使用不同的觀點(diǎn)來(lái)畫(huà)類(lèi)圖。如果處于分析階段應(yīng)該畫(huà)概念層類(lèi)圖,當(dāng)開(kāi)始著手軟件設(shè)計(jì)時(shí),應(yīng)該畫(huà)說(shuō)明層類(lèi)圖,當(dāng)針對(duì)某個(gè)特定的技術(shù)實(shí)現(xiàn)時(shí)應(yīng)該畫(huà)實(shí)現(xiàn)層類(lèi)圖。不要為每個(gè)事物都畫(huà)一個(gè)模型,應(yīng)該把精力放在關(guān)鍵的領(lǐng)域。使用類(lèi)圖的最大危險(xiǎn)是過(guò)早的陷入實(shí)現(xiàn)的細(xì)節(jié),為了避免這個(gè)問(wèn)題,應(yīng)該將重點(diǎn)放在概念層和說(shuō)明層。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
UML科普文,一篇文章掌握14種UML圖
Thinking in UML(一)
uml統(tǒng)一建模語(yǔ)言學(xué)習(xí)筆記(一)
UML 類(lèi)圖
UML基礎(chǔ)知識(shí)
流程圖、UML圖、ER圖
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服