UML基礎(chǔ)與建模實(shí)踐:5、第五章 包圖_第1頁(yè)
UML基礎(chǔ)與建模實(shí)踐:5、第五章 包圖_第2頁(yè)
UML基礎(chǔ)與建模實(shí)踐:5、第五章 包圖_第3頁(yè)
UML基礎(chǔ)與建模實(shí)踐:5、第五章 包圖_第4頁(yè)
UML基礎(chǔ)與建模實(shí)踐:5、第五章 包圖_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

UML基礎(chǔ)與建模實(shí)踐

第五章包圖

主講人:

內(nèi)容摘要包和包圖的概念1包的表示和包的傳遞性2包圖中的關(guān)系3創(chuàng)建包的方法及其應(yīng)用4小結(jié)與習(xí)題55.1包的概念什么是包?

包是用于分組的符號(hào),常用來(lái)對(duì)一組相同的UML元素進(jìn)行分組存放和管理。UML中的包相當(dāng)于文件系統(tǒng)中的文件夾,UML中的一個(gè)包直接對(duì)應(yīng)于Java中的一個(gè)包。在Java中,一個(gè)包可能含有其他包、類或者同時(shí)含有這兩者。5.1包的概念

5.1.1包的示例圖5-1是一個(gè)典型的包,該包中包含的元素是類。如類OrderForm、類Order。該包中還有沒(méi)有列出的類。該包的名稱是Client。圖5-1包5.1包的概念

5.1.2包中的元素每一個(gè)包就意味著一個(gè)獨(dú)立的命名空間,因此,兩個(gè)不同的包可以具有相同的元素名,但由于所位于的包名不同,因此其全名仍然是不同的。在包中表示元素時(shí),兩種方法:一種是在第二欄中列出所屬元素名,另一種是在第二欄中畫出所屬元素的圖形表示。5.1包的概念

5.1.3包的作用(1)對(duì)語(yǔ)義上相關(guān)的元素進(jìn)行分組。如把功能相關(guān)的用例放在一個(gè)包中。(2)提供配置管理單元。如以包為單位,對(duì)軟件進(jìn)行安裝和配置。(3)在設(shè)計(jì)時(shí),提供并行工作的單元。如在設(shè)計(jì)階段,多個(gè)設(shè)計(jì)小組可以同時(shí)對(duì)幾個(gè)相互獨(dú)立包中的類進(jìn)行詳細(xì)設(shè)計(jì)。(4)包提供了一個(gè)封裝空間。在同一空間中,元素的名稱必須唯一。5.2包圖的概念

什么是包圖?

包圖就是通過(guò)關(guān)系將多個(gè)包連接在一起構(gòu)成的圖。與所有UML的其他圖一樣,包圖可以包括注釋、約束和其它圖。包間的關(guān)系有依賴關(guān)系和泛化關(guān)系。5.2包圖的概念

圖5-2就是一個(gè)典型的包圖,它表示了綜合信息管理系統(tǒng)所包含的子系統(tǒng)組成,以及子系統(tǒng)間的依賴關(guān)系。5.3包的表示

什么是包圖?

在UML中用文件夾符號(hào)來(lái)表示一個(gè)包。即一個(gè)包由2個(gè)矩組成,上面是一個(gè)小矩形,下面是一個(gè)大矩形。圖5-3就是最常見(jiàn)的包表示法。圖5-3常見(jiàn)的包表示方法5.3包的表示

5.3.1包命名

每個(gè)包必須有一個(gè)與其他包相區(qū)別的名稱。包名稱可以有兩種書寫位置。同時(shí),包名稱的書寫格式有兩種,即簡(jiǎn)單名和全名。5.3包的表示

5.3.1包命名

每個(gè)包必須有一個(gè)與其他包相區(qū)別的名稱。包名稱可以有兩種書寫位置。同時(shí),包名稱的書寫格式有兩種,即簡(jiǎn)單名和全名。圖5-4包名的2種書寫位置5.3包的表示

1、包名稱的位置

包名稱可以有兩種書寫位置:包名稱可以寫在第一欄中,或者寫在第二欄中。如圖5-4所示,表示了包名稱的2種書寫位置。5.3包的表示

2、包名稱的書寫格式

包名稱的書寫格式有兩種,即簡(jiǎn)單名和全名。其中,簡(jiǎn)單名僅包含包一個(gè)簡(jiǎn)單的名稱;全名是用該包的外圍包的名字作為前綴,加上包本身的名字。例如,Rose常用表示方法中,其包名UI就是一個(gè)簡(jiǎn)單名。而包System.Web.UI才是一個(gè)完整帶路徑的名稱,表示UI這個(gè)包是位于System.Web包中的,如圖5-5所示。圖5-5包稱的2種書寫格式5.3包的表示

5.3.2包中的元素

一個(gè)包中包含的元素可能是子包、用例、接口和類。下面介紹包中元素的表示方法和元素的可見(jiàn)性。5.3包的表示

1、包中元素是類和接口

當(dāng)包中的元素是類和接口時(shí),可以有兩種表示類和接口的方法:一種是在第二欄中列出包的所有元素名;另一種是在第二欄中畫出包中所有元素的圖形和關(guān)系(參見(jiàn)圖5-6)。圖5-6元素在包中的2種表示方法5.3包的表示

2、包中的元素是用例

圖5-7包中的元素是用例5.3包的表示

3、包中元素是包

包中元素是包時(shí),就是包嵌套。圖5-8所示,就是包嵌套的例子。外部包System:Web里面嵌入了一個(gè)包UI,UI包中有一個(gè)類Page。圖5-8嵌套包示例注意:每一個(gè)包就是一個(gè)獨(dú)立的命名空間,同一個(gè)包中任意2個(gè)元素的名稱不能相同。5.3包的表示

4、包中元素的可見(jiàn)性包中元素的可見(jiàn)性有以下3種:(1)用“+”表示public,即該元素是共有的。(2)用“#”表示protected,即該元素是保護(hù)的。(3)用“-”表示private,即該元素是私有的。5.3包的表示

5、訪問(wèn)權(quán)限假設(shè)包X中的元素要訪問(wèn)包Y中的元素,則,表5-1列出了包間關(guān)系、被訪問(wèn)元素的可見(jiàn)性與訪問(wèn)權(quán)限的關(guān)系。包Y中元素的可見(jiàn)性包X中元素訪問(wèn)包Y中元素的條件+若X引用了Y,則X中的任何元素可以訪問(wèn)Y中可見(jiàn)性是+的元素#若X繼承了Y,則X中的任何元素可以訪問(wèn)Y中可見(jiàn)性是#的元素-可見(jiàn)性是-的元素,只能被同一個(gè)包中的其他元素訪問(wèn)表5-1包X訪問(wèn)包Y中元素的條件5.3包的表示

5.3.3用構(gòu)造型表示包UML提供了5種構(gòu)造型來(lái)描述包的新特征。包的構(gòu)造型有5種:(1)《system》符號(hào):表示包代表一個(gè)系統(tǒng)。(2)《subsystem》符號(hào):表示包代表某個(gè)子系統(tǒng)。(3)《facade》符號(hào):表示包是由其他包構(gòu)成的一個(gè)視圖。(4)《stub》符號(hào):表示包是一個(gè)代理包,該代理包為其他包提供公共服務(wù)。(5)《framework》符號(hào):表示包代表一個(gè)框架。5.4包圖中的關(guān)系

包圖中包間的關(guān)系有兩種:(1)依賴關(guān)系(2)泛化關(guān)系5.4包圖中的關(guān)系

5.4.1依賴關(guān)系

兩個(gè)包間的依賴關(guān)系又可以分為5種,下面分別說(shuō)明一下4種依賴的語(yǔ)義: (1)《use》關(guān)系 (2)《import》關(guān)系 (3)《access》關(guān)系 (4)《trace》關(guān)系5.4包圖中的關(guān)系

1、《use》關(guān)系

例如,在圖5-9中,C包《use》依賴于S包,因此,C包中的任何元素能訪問(wèn)S包可見(jiàn)性是+的所有元素。圖5-9use依賴5.4包圖中的關(guān)系

2、《import》關(guān)系《import》關(guān)系使客戶包和提供者包的命名空間合并成一個(gè)包,當(dāng)提供者包中的元素與客戶包中的元素具有相同的名稱時(shí),將會(huì)導(dǎo)致命名空間的沖突。例如,在圖5-10中,C包《import》依賴于S包,因此,C包中的任何元素能訪問(wèn)S包可見(jiàn)性是+的所有元素。圖5-10import依賴5.4包圖中的關(guān)系

3、《access》關(guān)系

例如,在圖5-11中,C包《access》依賴于S包,因此,C包中的任何元素能訪問(wèn)S包可見(jiàn)性是+的所有元素。圖5-11access依賴5.4包圖中的關(guān)系

4、《trace》關(guān)系例如,在圖5-12中,C包《trace》依賴于S包,即設(shè)計(jì)模型依賴于分析模型,所有的設(shè)計(jì)模型產(chǎn)品都是從分析模型產(chǎn)品進(jìn)化而來(lái)的。圖5-12trace依賴5.4包圖中的關(guān)系

5.4.2泛化關(guān)系圖5-13中,父包是GUI,它有兩個(gè)子包,分別是G1和G2。圖5-13包泛化5.5包的傳遞性

包間的傳遞性是指:如果包X與包Y存在關(guān)系,包Y與包Z存在關(guān)系,那么,包X與包Z也存在關(guān)系。

《import》依賴是可傳遞的,

《access》依賴是不可傳遞的。5.5包的傳遞性

如圖5-14所示,Z包中的公共元素成為Y包的公共元素,同時(shí),Y包中的公共元素成為X包中的公共元素,因此,Z包中的公共元素能被X包訪問(wèn)。因此,X,Y,Z包間的《import》關(guān)系存在傳遞性。圖5-14《import》關(guān)系可傳遞5.5包的傳遞性

當(dāng)客戶包與提供者包之間是《access》依賴時(shí),這樣,提供者包中的公共元素就成為客戶包中的私有元素,這些私有元素在包外是不可以訪問(wèn)的。如圖5-15所示,Z包中的公共元素成為Y包的私有元素,而X包只能訪問(wèn)Y包中的公共元素,因此,X包不能訪問(wèn)Z包中的公共元素。因此,X,Y,Z包間的《access》關(guān)系不存在傳遞性。圖5-15《access》關(guān)系不可傳遞5.6創(chuàng)建包圖的方法

繪制包圖的基本過(guò)程主要有以下3個(gè)步驟:(1)尋找包。(2)確定包之間的關(guān)系。(3)確定包內(nèi)元素的可見(jiàn)性。5.6創(chuàng)建包圖的方法

5.6.1標(biāo)識(shí)候選包

在分析階段,我們以對(duì)象模型和用例模型為依據(jù),把關(guān)系緊密的類分到同一個(gè)包中,把關(guān)系松散的類分到不同的包中。創(chuàng)建包圖的程包含3個(gè)步驟:第一步是,以類圖為依據(jù),尋找候選包;第二步是,對(duì)候選包進(jìn)行調(diào)整;第三步,消除包的循環(huán)依賴。標(biāo)識(shí)候選包的原則如下:(1)把類圖中關(guān)系緊密的類放到一個(gè)包中。(2)在類層次結(jié)構(gòu)中,把同一層次中的類放在同一包中,不同層次中的類放在不同的包中。5.6創(chuàng)建包圖的方法

5.6.2調(diào)整候選包

在已經(jīng)識(shí)別出候選包后,為了減少包間依賴,最小化每個(gè)包的public、protected元素的個(gè)數(shù),最大化每個(gè)包中private元素的個(gè)數(shù),還必須對(duì)候選包進(jìn)行調(diào)整,調(diào)整方法是:

(1)在包間移動(dòng)類。(2)添加包、分解包、合并包或刪除包。5.6創(chuàng)建包圖的方法

5.6.3消除包的循環(huán)依賴

應(yīng)該盡量避免包模型中的循環(huán)依賴。如果包A以某種方式依賴包B,并且包B以某種方式依賴包A,就應(yīng)該合并這兩個(gè)包,這是消除循環(huán)依賴非常有效的方法。但是經(jīng)常起作用的、更好的方法是,從A,B兩個(gè)包中提起公共元素,把它們封裝為第三個(gè)包C。消除循環(huán)包的過(guò)程是一個(gè)多次迭代的過(guò)程。示例顯示在圖5-11中。5.6創(chuàng)建包圖的方法

圖5-11

圖5-11消除循環(huán)依賴的示例5.7包圖應(yīng)用

包圖主要用于兩種不同層次的用途:一是對(duì)成組元素建模,以便把對(duì)緊密相關(guān)的類封裝到同一個(gè)包中,方便使用、管理和維護(hù);二是對(duì)體系結(jié)構(gòu)建模,用包圖來(lái)表示軟件的宏觀結(jié)構(gòu)。5.7包圖應(yīng)用

5.7.1對(duì)成組元素建模對(duì)成組元素進(jìn)行建??梢哉f(shuō)是包圖最常見(jiàn)的用途,它把相關(guān)的元素分組,然后把每一組封裝為一個(gè)包。在對(duì)成組元素建模時(shí),應(yīng)遵循以下幾個(gè)策略:(1)每個(gè)包都應(yīng)該是由在概念上、語(yǔ)義上相互接近的元素組成。(2)標(biāo)出每個(gè)包中可見(jiàn)性是公共的元素,并且,每個(gè)包中的公共元素應(yīng)盡可能地少。(3)再構(gòu)建包圖時(shí),一般使用默認(rèn)的《use》構(gòu)造型來(lái)標(biāo)識(shí)包間關(guān)系。(4)采用泛化標(biāo)識(shí)通用包與特殊包間的關(guān)系。5.7包圖應(yīng)用

5.7.2對(duì)體系結(jié)構(gòu)建模

我們常把軟件系統(tǒng)分解為三層或四層,每一層用一個(gè)包來(lái)表示。圖5-14所示,是一個(gè)典型的三層結(jié)構(gòu)的軟件系統(tǒng),該系統(tǒng)包括3層。每一層由多個(gè)對(duì)象組成。圖5-14用包表示的三層體系結(jié)構(gòu)風(fēng)格(1)接口層。(2)應(yīng)用邏輯層。(3)存儲(chǔ)層。5.8小結(jié)本章首先解釋了幾種常見(jiàn)的包圖表示法,并通過(guò)了一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明包的可見(jiàn)性、依賴關(guān)系、泛化等概念。其次,概要地說(shuō)明了5種包的構(gòu)造型。最后說(shuō)明如何尋找包、確

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論