<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    [摘錄]UML類圖

    摘錄地址:http://cnblogs.com/hobe/archive/2005/10/16/255723.aspx

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

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

    A.????? 類的UML表示

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

    ?

    B.????? 類之間的關(guān)系

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

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

    ?

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

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

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

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


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

    ?

    C.????? 建立類圖

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

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


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


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


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

    建立類圖的步驟:

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

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

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

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

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

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

    2.?????? 從用例中識(shí)別類:

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

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

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

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

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

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

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

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

    3.?????? 使用CRC分析法:

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

    類名

    職責(zé)1

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

    職責(zé)2

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

    ……

    ……

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

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

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

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

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

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

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

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

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

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

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

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

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

    ?

    D.?????? 使用類圖

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

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



    1.依賴:

    依賴對象通過調(diào)用被依賴對象的方法來獲得服務(wù)。一種比較松散的關(guān)系,并且是短期的。我們的過程與對象往往依賴于我們的實(shí)體域?qū)ο蟆H缭趕truts 的 action中調(diào)用模型層的方法。

    2.關(guān)聯(lián)

    它使一個(gè)類指到另一個(gè)類的屬性。長期的

    3.聚合

    聚合關(guān)系是關(guān)聯(lián)關(guān)系的一種,是強(qiáng)的關(guān)聯(lián)關(guān)系。聚合是整體和部分之間的關(guān)系。

    4.組合

    也叫合成關(guān)系,組成關(guān)系是關(guān)聯(lián)關(guān)系的一種,是比聚合關(guān)系強(qiáng)的關(guān)系。對象負(fù)責(zé)代表部分的對象的生命周期。

    注:既然聚合,組合關(guān)系屬于關(guān)聯(lián)關(guān)系,那么如何區(qū)分一般關(guān)聯(lián)關(guān)系,聚合關(guān)系和組合關(guān)系呢?

    一般關(guān)聯(lián):只要一個(gè)對象聯(lián)系到另外一個(gè)對象就形成了關(guān)聯(lián)關(guān)系。如:人和他的貓,黑豹樂隊(duì)和竇魏,pc機(jī)和顯示器。

    聚合關(guān)系:一種強(qiáng)關(guān)聯(lián)關(guān)系,它要求有部分和整體的關(guān)系,并且沒有了整體部分也可以獨(dú)立存在。在上面三個(gè)例子中人和它的貓顯然沒有部分和整體的關(guān)系,所以只能是一般的關(guān)聯(lián)關(guān)系。而黑豹樂隊(duì)和竇魏,竇魏等人組成了黑豹樂隊(duì)即:竇魏和黑豹是整體和部分的關(guān)系。而竇魏脫離了黑豹(早就離開了)更或者黑豹不存在了那么竇魏仍然可以以音樂人的身份存在(即對象仍然可以獨(dú)立存在)所以它屬于聚合關(guān)系。組成關(guān)系是可以共享的。(竇魏也可以加入其他樂隊(duì))。

    組合關(guān)系:一種更強(qiáng)的整體和部分的關(guān)系。它并且要求代表整體的對象負(fù)責(zé)代表部分的對象的生命周期,組成關(guān)系是不能共享的。如:pc機(jī)和顯示器的關(guān)系。



    歡迎大家訪問我的個(gè)人網(wǎng)站 萌萌的IT人

    posted on 2006-07-23 23:23 見酒就暈 閱讀(427) 評論(0)  編輯  收藏 所屬分類: J2EE文章

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(3)

    我參與的團(tuán)隊(duì)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    收藏夾

    BLOG

    FRIENDS

    LIFE

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 内射干少妇亚洲69XXX| 高h视频在线免费观看| 成人免费视频国产| 一级女人18片毛片免费视频| 亚洲精品无码高潮喷水在线| 黄色片在线免费观看| 日日摸日日碰夜夜爽亚洲| 亚洲人成中文字幕在线观看| 日韩一区二区a片免费观看 | 亚洲电影免费观看| 亚洲人成网站999久久久综合| 国产亚洲精品资在线| 91成人免费观看网站| 九九全国免费视频| 亚洲国产日韩在线人成下载| 免费中文字幕在线| 4444www免费看| 色吊丝性永久免费看码| 亚洲国产美女精品久久| MM131亚洲国产美女久久| 国产精品永久免费10000| 国产黄色免费观看| 亚洲综合av一区二区三区| 三上悠亚亚洲一区高清| 久九九精品免费视频| 国内永久免费crm系统z在线| 色天使亚洲综合一区二区| 亚洲午夜久久久精品电影院| 国产亚洲综合网曝门系列| 国产免费怕怕免费视频观看| 在线视频免费观看爽爽爽| 免费在线看黄网站| 人妖系列免费网站观看| 亚洲日韩国产一区二区三区在线| 亚洲AV无码专区在线播放中文| 亚洲国产成人影院播放| 黄a大片av永久免费| 91免费国产精品| 国产免费爽爽视频在线观看| 精品成人一区二区三区免费视频| 亚洲精品mv在线观看|