




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、UML中各種圖的畫法(全)、UM葉基本的圖范疇: 在UML2中有二種基本的圖范疇:結(jié)構(gòu)圖和行為圖。每個 UML圖都屬于這二個 圖范疇。結(jié)構(gòu)圖的目的是顯示建模系統(tǒng)的靜態(tài)結(jié)構(gòu)。它們包括類,組件和(或) 對象圖。另一方面,行為圖顯示系統(tǒng)中的對象的動態(tài)行為,包括如對象的方法, 協(xié)作和活動之類的內(nèi)容。行為圖的實(shí)例是活動圖,用例圖和序列圖。二、UM葉的類圖:1 .類圖的表示:類的UML表示是一個長方形,垂直地分為三個區(qū),如圖1所示。頂部區(qū)域顯示 類的名字。中間的區(qū)域列出類的屬性。底部的區(qū)域列出類的操作。在一個類圖上 畫一個類元素時,你必須要有頂端的區(qū)域,下面的二個區(qū)域是可 選擇的(當(dāng)圖 描述僅僅用于顯示分
2、類器間關(guān)系的高層細(xì)節(jié)時,下面的兩個區(qū)域是不必要的)。FlightfiightMunnber : Integer departureTime : Date fiightDL4ration : MinutesdelayFIight (humterdfKlhuts® :蹴):DategEtArrivalTinne():Dats描述:頂部區(qū)域顯示類的名字。中間的區(qū)域列出類的屬性。底部的區(qū)域列出類的操作。當(dāng)在一個類圖上畫一個類元素時, 你必須要有頂端的區(qū)域,下面的二個區(qū)域是可 選擇的(當(dāng)圖描述僅僅用于顯示分類器間關(guān)系的高層細(xì)節(jié)時, 下面的兩個區(qū)域是 不必要的)。類名:如果是抽象類,則采用斜體類
3、屬性歹!J表: name : attribute type常見的表達(dá)形式如 flightNumber : Integer ,這是最24value 如 balance : Dollars = 0name : attribute type = default,這是帶有默認(rèn)值的表達(dá)形式類方法歹!J表: name(parameter list) : type of value returned汪忠:在業(yè)務(wù)類圖中,屬性類型通常與單位相符,這對于圖的可能讀者是有意義的(例 如,分鐘,美元,等等)。然而,用于生成代碼的類圖,要求類的屬性類型必須 限制在由程序語言提供的類型之中,或包含于在系統(tǒng)中實(shí)現(xiàn)的、模型的
4、類型之中。2 .繼承的表示: 為了在一個類圖上建模繼承,從子類(要繼承行為的類)拉出一條閉合的,單鍵 頭(或三角形)的實(shí)線指向超類。類名BankAccount和withdrawal操作使用斜體。這表示, BankAccount類是一 個抽象類,而withdrawal方法是抽象的操作。換句話說,BankAccount類使用 withdrawal 規(guī)定抽象操作,并且 CheckingAccount 和 SavingsAccount 兩個子 類都分別地執(zhí)行它們各自版本的操作。3 .接口的表示:一個類和一個接口不同:一個類可以有它形態(tài)的真實(shí)實(shí)例, 然而一個接口必須至少有一個類來實(shí)現(xiàn)它。在 UML 2中
5、,一個接口被認(rèn)為是類建模元素的特殊化。 因此,接口就象類那樣繪制,但是長方形的頂部區(qū)域也有文本“ interface ”。«interfacePersonfir邯3mm : String lasIMame : StringStudentmajar : StringProfessorsalary : Dolors注意:繼承用帶箭頭或三角形的實(shí)線表示,實(shí)現(xiàn)用帶箭頭或三角形的虛線表示4 .可見性的表示: 在面向?qū)ο蟮脑O(shè)計(jì)中,存在屬性及操作可見性的記號。UML識別四種類型的可見 性:public , protected , private 及 package。UML規(guī)范并不要求屬性及操作可見
6、性必須顯示在類圖上,但是它要求為每個屬性 及操作定義可見性。為了在類圖上顯示可見性,放置可見性標(biāo)志于屬性或操作的 名字之 前。雖然UML指定四種可見性類型,但是實(shí)際的編程語言可能增加額外 的可見性,或不支持UML定義的可見性。表4顯示了 UML支持的可見性類型的 不同標(biāo)志。UML支持的可見性類型的標(biāo)志Bank Account+ owner : String+ balance I Dollars+ deposit (amount: Dollars )+ v/itfridrawl (amount: Dollars)/ updateEialance (newBaJance : Dollars )5
7、.關(guān)聯(lián)的表示:雙向(標(biāo)準(zhǔn))的關(guān)聯(lián)關(guān)聯(lián)是兩個類間的聯(lián)接。關(guān)聯(lián)總是被假定是雙向的;這意味著,兩個類彼此知道 它們間的聯(lián)系,除非你限定一些其它類型的關(guān)聯(lián)。一個雙向關(guān)聯(lián)用兩個類間的實(shí)線表示。 在線的任一端,你放置一個角色名和多重 值。圖6顯示Flight與一個特定的Plane相關(guān)聯(lián),而且Flight類知道這個關(guān) 聯(lián)。因?yàn)榻巧訮lane類表示,所以Plane承擔(dān)關(guān)聯(lián)中的 “assignedPlane ” 角色。緊接于Plane類后面的多重值描述01表示,當(dāng)一個Flight實(shí)體存在 時,可以有一個或沒有Plane與之關(guān)聯(lián)(也就是,Plane可能還沒有被分配)。圖6也顯示Plane知道它與Flight類
8、的關(guān)聯(lián)。在這個關(guān)聯(lián)中,F(xiàn)light承擔(dān) “assignedFlights ”角色;圖6的圖告訴我們,Plane實(shí)體可以不與flight關(guān)聯(lián)(例如,它是一架全新的飛機(jī))或與沒有上限的flight(例如,一架已經(jīng)服役5年的飛機(jī))關(guān)聯(lián)。注意:關(guān)聯(lián)的一方關(guān)聯(lián)對象位于直線的上端,關(guān)聯(lián)數(shù)目位于同側(cè)的直線下端, 另一方則相反多重值和它們的表小可能的多重值描 述表示含義0.10個或1個1只能1個0.*0個或多個*0個或多個1.*1個或多個3只能3個0.50至IJ 5個5.155到15個單向關(guān)聯(lián)在一個單向關(guān)聯(lián)中,兩個類是相關(guān)的,但是只有一個類知道這種聯(lián)系的存在OverdrawnA c countsRe port
9、0v(?rdr 3 wn Accounts >0Ban 匕 Accountgener-statfOn ; gte refresh ()owner ; String bdldnce ; DolUrsdeposit (amount: Dollars )ithdrawl (amount: Doils )一個單向的關(guān)聯(lián),表示為一條帶有指向已知類的開放箭頭 (不關(guān)閉的箭頭或三角 形,用于標(biāo)志繼承)的實(shí)線。如同標(biāo)準(zhǔn)關(guān)聯(lián),單向關(guān)聯(lián)包括一個角色名和一個多 重值描述,但是與標(biāo)準(zhǔn)的雙向關(guān)聯(lián)不同的時,單向關(guān)聯(lián)只包含已知類的角色名和 多重值描述。簡單的說就是 OverdrawAccountReport中包含了
10、BankAccount屬性,而 BankAccount 中不需要包含 OverdrawnAccountsReport 對象6.聚合的表示: 聚合是一種特別類型的關(guān)聯(lián),用于描述“總體到局部”的關(guān)系。在基本的聚合關(guān) 系中,部分類 的生命周期獨(dú)立于 整體類 的生命周期。舉例來說,我們可以想象,車 是一個整體實(shí)體,而 車輪 輪胎是整輛車的一部 分。輪胎可以在安置到車時的前幾個星期被制造, 并放置于倉庫中。在這個實(shí)例中,Wheel類實(shí)例清楚地獨(dú)立于Car類實(shí)例而存在。然 而,有些情況下, 部分 類的生命周期并不獨(dú)立于整體類的生命周期-這稱為合成聚合。舉例來說, 考慮公司與部門的關(guān)系。 公司和部門 都建模
11、成類,在公司存在之前,部門不能 存在。這里Department類的實(shí)例依賴于Compan淮的實(shí)例而存在。讓我們更進(jìn)一步探討基本聚合和組合聚合注意:聚合與普通的關(guān)聯(lián)的區(qū)別在于:普通的關(guān)聯(lián)可能只是一個簡單的“包含、 引用"關(guān)系,關(guān)聯(lián)和被關(guān)聯(lián)類之間在邏輯概念上不一定有緊密的聯(lián)系,而聚合 則不同,它表示的是一種內(nèi)在關(guān)系緊密,相互依存,相互包含的概念,其中的 一部分是構(gòu)成另外一部分的不可或缺的成分。基本聚合有聚合關(guān)系的關(guān)聯(lián)指出,某個類是另外某個類的一部分。在一個聚合關(guān)系中,子 類實(shí)例可以比父類存在更長的時間。為了表現(xiàn)一個聚合關(guān)系,你畫一條從父類到 部分類的實(shí)線,并在父類的關(guān)聯(lián)末端畫一個未填充棱
12、形。圖中清楚的表明了類Car對象包含了另一類 Wheel的4個實(shí)例,這兩者在概念上 是密不可分的,其中的一個類是另一個類的構(gòu)成成分。 菱形表示“包含",箭頭 表示被包含的對象,數(shù)字4表示包含的數(shù)目。組合聚合組合聚合關(guān)系是聚合關(guān)系的另一種形式,但是子類實(shí)例的生命周期依賴于父類實(shí) 例的生命周期。注意:組合關(guān)系如聚合關(guān)系一樣繪制,不過這次菱形是被填充的7.反射關(guān)聯(lián)的表示:類也可以使用反射關(guān)聯(lián)與它本身相關(guān)聯(lián)。起先,這可能沒有意義,但是記住,類 是抽象的。當(dāng)一個類關(guān)聯(lián)到它本身時,這并不意味著類的實(shí)例與它本身相關(guān), 而 是類的一個實(shí)例與類的另一個實(shí)例相關(guān)。Employee-manager-mar
13、agesfrsWme ; String lasWme : String圖描繪的關(guān)系說明一個Employee實(shí)例可能是另外一個Employee實(shí)例的經(jīng)理。然 而,因?yàn)椤癿anaged的關(guān)系角色有0.*的多重性描述;一個雇員可能不受任何 其他雇員管理。三、UMLH勺對象圖:實(shí)例的記號和類一樣,但是取代頂端區(qū)域中僅有的類名,它的名字是經(jīng)過拼接的Instance Name : Class Name 如 Donald : Person因?yàn)轱@示實(shí)例的目的是顯示值得注意的或相關(guān)的信息, 沒必要在你的模型中包含 整個實(shí)體屬性及操作。相反地,僅僅顯示感興趣的屬性及其值是完全恰當(dāng)?shù)摹叉貨;PlneairP Ia
14、n eType = ssog illd = NXD337UML2也允許在實(shí)體層的關(guān)系/關(guān)聯(lián)建模。繪制關(guān)聯(lián)與一般的類關(guān)系的規(guī)則一樣, 除了在建模關(guān)聯(lián)時有一個附加的要求。 附加的限制是,關(guān)聯(lián)關(guān)系必須與類圖的關(guān) 系相一致,而且關(guān)聯(lián)的角色名字也必須與類圖相一致。四、UM葉的角色圖:建模類的實(shí)例有時比期望的更為詳細(xì)。 有時,你可能僅僅想要在一個較多的一般 層次做類關(guān)系的模型。在這種情況下,你應(yīng)該使用 角色 記號。角色記號類似 于實(shí)例記號。為了建立類的角色模型,你畫一個方格,并在內(nèi)部放置類的角色名 及類名,作為實(shí)體記號,但是在這情況你不能加下劃線。1manager : Employee 一manages0
15、“*team member ; E 舊pl年注意:角色圖和對象圖的一個明顯區(qū)別就是:對象圖每個對象名稱下面都加了 下劃線,而角色圖沒有以下是:序列圖序列圖主要用于按照交互發(fā)生的一系列順序, 顯示對象之間的這些交互。 很象類圖, 開發(fā)者一般認(rèn)為序列圖只對他們有意義。 然而, 一個組織的業(yè)務(wù)人員會發(fā)現(xiàn),序列圖顯示不同的業(yè)務(wù)對象如何交互, 對于交流當(dāng)前業(yè)務(wù)如何進(jìn)行很有用。 除記錄組織的當(dāng)前事件外, 一個業(yè)務(wù)級的序列圖能被當(dāng)作一個需求文件使用, 為實(shí)現(xiàn)一個未來系統(tǒng)傳遞需求。 在項(xiàng)目的需求階段, 分析師能通過提供一個更加正式層次的表達(dá), 把用例帶入下一層次。 那種情況下, 用例常常被細(xì)化為一個或者更多的
16、序 列圖。組織的技術(shù)人員能發(fā)現(xiàn), 序列圖在記錄一個未來系統(tǒng)的行為應(yīng)該如何表現(xiàn)中, 非常有用。在設(shè)計(jì)階段,架構(gòu)師和開發(fā)者能使用圖,挖掘出系統(tǒng)對象間的交互,這樣充實(shí)整個系統(tǒng)設(shè)計(jì)。序列圖的主要用途之一, 是把用例表達(dá)的需求, 轉(zhuǎn)化為進(jìn)一步、 更加正式層次的精細(xì)表達(dá)。 用例常常被細(xì)化為一個或者更多的序列圖。 序列圖除了在設(shè)計(jì)新系統(tǒng)方面的用途外, 它們還能用來記錄一個存在系統(tǒng) (稱它為“遺產(chǎn)”) 的對象現(xiàn)在如何交互。當(dāng)把這個系統(tǒng)移交給另一個人或組織時,這個文檔很有用。Java 應(yīng)用程序由許多類所構(gòu)成,是 Java 實(shí)現(xiàn)面向?qū)ο髴?yīng)用程序的核心。類圖主要描述 Java 應(yīng)用程序中各種類之間的相互靜態(tài)關(guān)系,
17、如類的繼承、 抽象、 接口以及各種關(guān)聯(lián)。要利用UM改計(jì)Java應(yīng)用程序,僅僅使用類圖來描述這些靜態(tài)關(guān)系, 利用可視化工具, 要實(shí)現(xiàn) Java 應(yīng)用程序的代碼自動生成, 是遠(yuǎn)遠(yuǎn)不夠的。我們還必須描述各種類相互之間的協(xié)作關(guān)系、 動態(tài)關(guān)系, 如時間序列上的交互行為。其中UM嚀列圖就是用來描述類與類之間的方法調(diào)用過程(或 消息發(fā)送)是如何實(shí)現(xiàn)的。一、UM葉的新元素框架:在 UML 2 中,框架元件用于作為許多其他的圖元件的一個基礎(chǔ),但是大多數(shù)人第一次接觸框架元件的情況, 是作為圖的圖形化邊界。 當(dāng)為圖提供圖形化邊界時,一個框架元件為圖的標(biāo)簽提供一致的位置。在UML 圖中框架元件是可選擇的。< D
18、tagram's Label >士 Diagram's Content Area >除了提供一個圖形化邊框之外,用于圖中的框架元件也有描述交互的重要的功能 例如序列圖。在序列圖上一個序列接收和發(fā)送消息(又稱交互),能通過連接消 息和框架元件邊界,建立模型(如圖 2所見到)。N BdliCY Loo hup (-rrt 型:C8n工P出麗iber j對于序列圖,圖的標(biāo)簽由文字“ sd”開始。當(dāng)使用一個框架元件封閉一個圖時, 圖的標(biāo)簽需要按照以下的格式:圖類型圖名稱。UML規(guī)范給圖類型提供特定的文本值。(舉例來說,sd代表序列圖,activity代表活動圖,use ca
19、se代表用例圖)。、UM葉的序列圖:序列圖主要用于按照交互發(fā)生的一系列順序,顯示對象之間的這些交互 在項(xiàng)目的需求階段,分析師能通過提供一個更加正式層次的表達(dá), 把用例帶入下 一層次。那種情況下,用例常常被細(xì)化為一個或者更多的序列圖。序列圖的主要用途之一,是把用例表達(dá)的需求,轉(zhuǎn)化為進(jìn)一步、更加正式層次的 精細(xì)表達(dá)。用例常常被細(xì)化為一個或者更多的序列圖。 序列圖除了在設(shè)計(jì)新系統(tǒng) 方面的用途外,它們還能用來記錄一個存在系統(tǒng) (稱它為“遺產(chǎn)”)的對象現(xiàn)在 如何交互。序 列圖的主要目的是定義事件序列,產(chǎn)生一些希望的輸出。重點(diǎn)不是消息本身, 而是消息產(chǎn)生的順序;不過,大多數(shù)序列圖會表示一個系統(tǒng)的對象之間傳
20、遞的什 么消 息,以及它們發(fā)生的順序。圖按照水平和垂直的維度傳遞信息:垂直維度 從上而下表示消息/調(diào)用發(fā)生的時間序列,而且水平維度從左到右表示消息發(fā)送 到的對象實(shí)例。1 .生命線:生命線畫作一個方格,一條虛線從上而下,通過底部邊界的中心(圖3)。生命 線名字放置在方格里。UML的生命線命名標(biāo)準(zhǔn)按照如下格式:實(shí)體名:類名 生命線名稱帶下劃線。當(dāng)使用下劃線時,意味著序列圖中的生命線代表一個類的 特定實(shí)體,不是特定種類的實(shí)體(例如,角色)。序列圖的實(shí)例名稱有下劃線, 而角色名稱沒有。一個生命線能用來表現(xiàn)一個匿名的或未命名的實(shí)體。 當(dāng)在一個序列圖上,為一個 未命名的實(shí)例建模時,生命線的名字采用和一個命
21、名實(shí)例相同的模式; 但是生命名字的位置留卜空白而不是提供一個例圖名字。2 .消息體:為了顯示一個對象(例如,生命線)傳遞一個消息給另外一個對象,你畫一條指向接收對象,包括一個實(shí)心箭頭(如果是個同步調(diào)用操作)或一個棍形箭頭(如果 是一個異步訊號)。消息/方法名字放置在帶箭頭的線上面。正在被傳遞給接收對象的消息,表示接收對象的類實(shí)現(xiàn)的一個操作 /方法。返回消息是可選擇的;一個返回消息畫作一個帶開放箭頭的虛線, 向后指向來源 的生命線,在這條虛線上面,你放置操作的返回值。為了要畫一個調(diào)用本身的對 象,如你平時所作的,畫一條消息,但是不是連接它到另外的一個對象,而是你 把消息連接回對象本身。單3得電將
22、曰ports ()-gotSoturiiyL.bo-,iTMic» ( uwtct )ufl時匚丁deterrri lr»Avai( )、UMLH勺約束:rwgiste1; : R正qtster口 ffiCR:二.5(:匚 CllJrtt/:E:E!ljNLikdr 自m : PassgeastDue&aiance t studen'fld)pastDueBalance【, k pafiiDusalanre = 0 addStuelent (siuclenucl)約束的符號很簡單;格式是:【Boolean Test 1四、UM葉的新元素組合碎片(變體方案、選
23、擇項(xiàng)、循環(huán)): 一個組合碎片用來把一套消息組合在一起,在一個序列圖中顯示條件分支 1.變體:變體用來指明在兩個或更多的消息序列之間的、互斥的選擇。一個變體的組合碎片元件使用框架來畫。單詞“ alt ”放置在框架的namebox里。然后較大的長方 形分為UML2所稱的操作元。-操作元被虛線分開。每個操作元有一個約束進(jìn)行 測試,而這個約束被放置在生命線頂端的操作元的左上部。二如果操作元的約束 等于“true”,然后那個操作元是要執(zhí)行的操作元。圖8作為一個變體的組合碎片如何閱讀的例子,顯示序列從頂部開始,即 bank對象獲取支票金額和帳戶結(jié)余。此時,序列圖中的變體組合碎片接管。因?yàn)榧s束“balanc
24、e >= amount” ,如果余額超過或等于金額,然后順序進(jìn)行 bank對象 傳遞 addD萌itTransaction 和 storePhotoOfCheck 消息給 account 對象。然而, 如果余額不是超過或等于金額,然后順序的過程就是 bank傳遞addInsuffientFundFee 和 noteReturnedCheck 消息給 account 對象, returnCheck消息給它自身。因?yàn)椤癳lse”約束,當(dāng)余額不大于或者等于金額時, 第二個序列被調(diào)用。在變體的組合碎片中,不需要“else”約束;而如果一個操 作元,在它上面沒有一個明確的約束,那么將假定“ els
25、e”約束。2.選擇項(xiàng):一個選擇項(xiàng)用來為簡單的“ if then ”表達(dá)式建模。(例如,如果架上的圈餅少 于五個,那么另外做兩打圈餅)。選 擇項(xiàng)組合碎片符號與變體組合碎片類似,除了它只有一個操作元并且永不能 有“else”約束以外(它就是如此,沒有理由)。要畫選擇項(xiàng)組合,你畫一個框 架。文字“opt”是被放置在框架的namebox里的文本,在框架的內(nèi)容區(qū),選 擇項(xiàng)的約束被位置在生命線頂端上的左上角o然后選擇項(xiàng)的消息序列被放在框架的內(nèi)容區(qū)的其余位置內(nèi)。注意:變體用于為if then else 建模,選擇項(xiàng)用于為if then 建模,因?yàn)橹挥?一個分支,所以不能出現(xiàn)else3.循環(huán):循環(huán)組合碎片表面
26、非常類似選擇項(xiàng)組合碎片。你畫一個框架,在框架的namebox中放置文本“ loop”。在框架的內(nèi)容區(qū)中,一個生命線的頂部,循環(huán)約束被放置在左上角。然后循環(huán)的消息序列被放在框架內(nèi)容區(qū)的其余部分中。在一個循環(huán)中,除了標(biāo)準(zhǔn)的布爾測試外,一個約束能測試二個特定的條件式。特定的約束條 件 式是寫作“ minint = the number ” (例如,“ minint = 1 ")的最小循環(huán) 次數(shù),或?qū)懽?“ maxint = the number ” (例如,“ maxint = 5 ")的最大循 環(huán)次數(shù)。通過最小循環(huán)檢驗(yàn),循環(huán)必須運(yùn)行至少指定次數(shù),而循環(huán)執(zhí)行次數(shù)不能 達(dá)到約束指定
27、的最大循環(huán)次數(shù)。以下是:用例圖:用例圖主要用來圖示化系統(tǒng)的主事件流程,它主要用來描述客戶的需求,即 用 戶希望系統(tǒng)具備的完成一定功能的動作,通俗地理解用例就是軟件的功能模塊, 所以是設(shè)計(jì)系統(tǒng)分析階段的起點(diǎn),設(shè)計(jì)人員根據(jù)客戶的需求來創(chuàng)建和解釋用例圖, 用來描述軟件應(yīng)具備哪些功能模塊以及這些模塊之間的調(diào)用關(guān)系,用例圖包含了Actor)提供的用例和參與者,用例之間用關(guān)聯(lián)來連接以求把系統(tǒng)的整個結(jié)構(gòu)和功能反映給非技 術(shù)人 員(通常是軟件的用戶),對應(yīng)的是軟件的結(jié)構(gòu)和功能分解。用例是從系統(tǒng)外部可見的行為,是系統(tǒng)為某一個或幾個參與者(一段完整的服務(wù)。從原則上來講,用例之間都是獨(dú)立、并列的,它們之間并不存 在
28、著包含從屬關(guān)系。但是為了體現(xiàn)一些用例之間的業(yè)務(wù)關(guān)系,提高可維護(hù)性和一 致性,用例之間可以抽象出包含(include)、擴(kuò)展(extend)和泛(generalization) 幾種關(guān)系。共性:都是從現(xiàn)有的用例中抽取出公共的那部分信息, 作為一個單獨(dú)的用例,然 后通后過不同的方法來重用這個公共的用例,以減少模型維護(hù)的工作量。1、包含(include)包含關(guān)系:使用包含(Inclusion )用例來封裝一組跨越多個用例的相似動 作(行為片斷),以便多個基(Base)用例復(fù)用。基用例控制與包含用例的 關(guān) 系,以及被包含用例的事件流是否會插入到基用例的事件流中。基用例可以依賴包含用例執(zhí)行的結(jié)果,但是雙
29、方都不能訪問對方的屬性。包含關(guān)系對典型的應(yīng)用就是復(fù)用,也就是定義中說的情景。但是有時當(dāng)某用 例的事件流過于復(fù)雜時,為了簡化用例的描述,我們也可以把某一段事件流抽象 成為一個被包含的用例;相反,用例劃分太細(xì)時,也可以抽象出一個基用例,來 包含這些細(xì)顆粒的用例。這種情況類似于在過程設(shè)計(jì)語言中, 將程序的某一段算 法封裝成一個子過程,然后再從主程序中調(diào)用這一子過程。例如:業(yè)務(wù)中,總是存在著維護(hù)某某信息的功能,如果將它作為一個用例, 那新建、編輯以及修改都要在用例詳述中描述,過于復(fù)雜;如果分成新建用例、 編輯用例和刪除用例,則劃分太細(xì)。這時包含關(guān)系可以用來理清關(guān)系。2、擴(kuò)展(extend)擴(kuò)展關(guān)系:將
30、基用例中一段相對獨(dú)立并且可選的動作,用擴(kuò)展( Extension )用 例加以封裝,再讓它從基用例中聲明的擴(kuò)展點(diǎn)(Extension Point )上進(jìn)行擴(kuò)展,從而使基用例行為更簡練和目標(biāo)更集中。 擴(kuò)展用例為基用例添加新的行為。擴(kuò)展 用例可以訪問基用例的屬性,因此它能根據(jù)基用例中擴(kuò)展點(diǎn)的當(dāng)前狀態(tài)來判斷是否執(zhí)行自己。但是擴(kuò)展用例對基用例不可見。對于一個擴(kuò)展用例,可以在基用例上有幾個擴(kuò)展點(diǎn)。例如,系統(tǒng)中允許用戶對查詢的結(jié)果進(jìn)行導(dǎo)出、打印。對于查詢而言,能不能導(dǎo)出、打印查詢都是一樣的,導(dǎo)出、打印是不可見的。導(dǎo)入、打印和查詢相對獨(dú)立,而且為查詢添加了新行為。因此可以采用擴(kuò)展關(guān)系來描述:3、泛化(gen
31、eralization)泛化關(guān)系:子用例和父用例相似,但表現(xiàn)出更特別的行為;子用例將繼承父用例 的所有結(jié)構(gòu)、行為和關(guān)系。 子用例可以使用父用例的一段行為,也可以重載它。父用例通常是抽象的。在實(shí)際應(yīng)用中很少使用泛化關(guān)系,子用例中的特殊行為都 可以作為父用例中的備選流存在。例如,業(yè)務(wù)中可能存在許多需要部門領(lǐng)導(dǎo)審批的事情,但是領(lǐng)導(dǎo)審批的流程是很相似的, 這時可以做成泛化關(guān)系表示:案例在此基礎(chǔ)上結(jié)合上面是我參考的一篇文章,覺得將三種關(guān)系的區(qū)別講得很清晰,自己的系統(tǒng),對項(xiàng)目(在線購物系統(tǒng))的用例做了整體的描繪。*(1)系統(tǒng)整體用例圖用戶楮亶(商品用例圖)(購買信息用例)廊式啟自客戶時事買危息皆理討學(xué)事褶
32、縣(用戶資料用例)用聲塞料巨費(fèi)僉星費(fèi)用苴說徵星月按照先整體用例,后子系統(tǒng)用例來進(jìn)行描繪的,歡迎大家提出好的建議轉(zhuǎn): UML 中擴(kuò)展和泛化的區(qū)別泛化表示類似于 OO術(shù)語 繼承"或 多態(tài)"。UML中的Use Case泛化過程是將不同 Use Case 之間的可合并部分抽象成獨(dú)立的父Use Case,并將不可合并部分單獨(dú)成各自的子Use Case;包含以及擴(kuò)展過程與泛化過程類似,但三者對用例關(guān)系的優(yōu)化側(cè)重點(diǎn)是不同的。如下:泛化側(cè)重表示子用例間的互斥性;包含側(cè)重表示被包含用例對Actor 提供服務(wù)的間接性;擴(kuò)展側(cè)重表示擴(kuò)展用例的觸發(fā)不定性;詳述如下:既然用例是系統(tǒng)提供服務(wù)的UML8
33、述,那么服務(wù)這個過程在所 有用例場景中是必然發(fā)生的,但發(fā)生按照發(fā)生條件可分為如下兩種情況:1 .無條件發(fā)生:肯定發(fā)生的;2 .有條件發(fā)生:未必發(fā)生,發(fā)生與否取決于系統(tǒng)狀態(tài); 因此,針對用例的三種關(guān)系結(jié)合系統(tǒng)狀態(tài)考慮,泛化與包含用例屬于無條件發(fā)生的用例, 而擴(kuò)展屬于有條件發(fā)生的用例。 進(jìn)一步, 用例的存在是為 Actor 提供服 務(wù),但用例提供服務(wù)的方式可分為間接和直接兩種,依據(jù)于此, 泛化中的子用例提供的是直接服務(wù), 而包含中的被包含用例提供的是間接服務(wù)。同樣,擴(kuò)展用例提供 的也是直接服務(wù),但擴(kuò)展用例的發(fā)生是有條件的。另外一點(diǎn)需要提及的是:泛化中的子用例和擴(kuò)展中的擴(kuò)展用 例均可以作為基本用例事
34、件的備選擇流而存在。以下是:活動圖UML活動圖記錄了單個操作或方法的邏輯,單個用戶案例,或者單個業(yè)務(wù)流程的邏輯。在很多方面, 活動圖 是結(jié)構(gòu)化開發(fā)中流程圖和數(shù)據(jù)流程圖 (DFD) 的面向?qū)ο蟮韧w, 要創(chuàng)建一個UML 活動圖,您需要反復(fù)執(zhí)行下列步驟。第一步, 定義活動圖的范圍首先應(yīng)該定義您要對什么建模。 單個用戶案例力?一個用戶案例的一部分?一個包含多個用戶案例的商務(wù)流程?一個類的單個方法?一旦 您定義了您所作圖的范圍,您應(yīng)該在其頂部,用一個標(biāo)注添加標(biāo)簽,指明該圖的標(biāo)題和唯一的標(biāo)示符。您有可能也想要包括該圖的時間甚至作者名。第二步,添加起始和結(jié)束點(diǎn)每個活動圖有一個起始點(diǎn)和結(jié)束點(diǎn),因此您也要馬上
35、添加它們。在UML精粹(UMLDistilled)(參見參考資料),F(xiàn)owler和 Scott 認(rèn)為結(jié)束點(diǎn)是可選的。有時候一個活動只是一個簡單的結(jié)束,如果是這種情況, 指明其唯一的轉(zhuǎn)變是到一個結(jié)束點(diǎn)也是無害的。 這樣, 當(dāng)其他人閱讀您的圖時,他或 她知道您已經(jīng)考慮了如何退出這些活動。第三步,添加活動如果您正對一個用戶案例建模,對每個角色(actor)所發(fā)出的主要步驟引入一個活動(該活動可能包括起始步驟,加上對起始步驟系統(tǒng)響應(yīng)的 任何步驟)。如果您正對一個高層的商務(wù)流程建模,對每個主要流程引入一個活 動,通常為一個用戶案例或用戶案例包。最后,如果您正對一個方法建模,那么 對 此引入一個活動是很常
36、見的。第四步,添加活動間的轉(zhuǎn)變我的風(fēng)格總是應(yīng)該退出一個活動,即使它是轉(zhuǎn)變到一 個結(jié)束點(diǎn)。一旦一個活動有多個轉(zhuǎn)變時,您必需對每個轉(zhuǎn)變加以相應(yīng)標(biāo)示。第五步,添加決策點(diǎn)有時候,您所建模的邏輯需要做出一個決策。 有可能是需要 檢查某些事務(wù)或比較某些事務(wù)。要注意的是,使用決策點(diǎn)是可選的。第六步,找出可并行活動之處當(dāng)兩個活動間沒有直接的聯(lián)系, 而且它們都必需在 第三個活動開始前結(jié)束,那它們是可以并行運(yùn)行的。下面的活動圖描述了大學(xué)新生第一次將如何辦理入學(xué)的商業(yè)邏輯。 實(shí)心圓表示活動圖的起點(diǎn),實(shí)際上是一個占位符,帶邊框的實(shí)心圓表示終 點(diǎn)。 圓角矩形表示執(zhí)行的過程或活動。 在該圖中,雖然您會注意到“登記研習(xí) 班
37、”用例將多次調(diào)用“登記研習(xí)班”活動, 但這些活動卻相當(dāng)緊密地映射 到用例。活動可以細(xì)致得多,特別在選擇記錄方法邏輯,而不是高級商業(yè) 過程時。 菱形表示判定點(diǎn),雖然在此示例中判定點(diǎn)只有兩種可能結(jié)果;但即使有更 多可能結(jié)果,它也同樣容易。 箭頭表示活動之間的轉(zhuǎn)換,各種活動之間的流動次序。 箭頭上的文字表示繼續(xù)轉(zhuǎn)換所必須滿足的條件,總是使用格式"條件” 來描述。我猜想,在 UML的將來版本中,我們將會看到使用 UML約 束表示法(如“ condition ” )記錄的條件。 粗線條表示可能會并行進(jìn)行的過程的開始和結(jié)束;在大學(xué)里成功入學(xué)后, 必須參加指定的概況介紹,還要至少登記一個研習(xí)班并交
38、付一部分的學(xué)費(fèi)。退出活動可能有幾種方法,如您看到的“填寫入學(xué)表”活動的那樣。如果正確填 寫了表格,那么可以繼續(xù)進(jìn)行大學(xué)的入學(xué)手續(xù)。但是,如果表格不正確,那么必 須獲得幫助(可能從注冊員獲得幫助)以正確填寫它們。圖1.第一次入學(xué)的 UML活動圖這個活動圖非常有趣.因?yàn)樗〉袅藞D2 中標(biāo)識的幾個用例的邏輯。用例模型 沒有很好地表達(dá)處理的順序是件好事。 例如,雖然圖2 中顯示的用例圖為您清 楚地描述了該系統(tǒng)所執(zhí)行的功能類型,但是它沒有明確地表達(dá)這些用例可能發(fā)生 的順序。但是,圖工 的活動圖做到了這一點(diǎn)。總之,不同模型的優(yōu)缺點(diǎn)各有不 同。中標(biāo)識的幾個用例的邏輯。用例模型沒有很好地表達(dá)處理的順序是件好事。 例如, 雖然中顯示的用例圖為您清楚地描述了該系統(tǒng)所執(zhí)行的功能類型,但是它沒有 明確地表達(dá)這些用例可能發(fā)生的順序。但是,的活動圖做到了這一點(diǎn)。總之,不同模型的優(yōu)缺點(diǎn)各有不同。圖2.大學(xué)的用例圖泳道將模型中的活動按照職責(zé)組織起來通常很有用。 例如,可以將一個商業(yè)組織處理 的所有活動組織起來。這種分配可以通過將活動組織成用線分開的不同區(qū)域來表 示。由于它們的外觀的緣故,這些區(qū)域被稱作泳道。圖7-2表示
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025汽車銷售合同電子版
- 《城市基礎(chǔ)設(shè)施發(fā)展》市政工程課件
- 2025城鄉(xiāng)供水供用水合同范本
- 百年中國觀后感600字
- 瑕疵車修復(fù)合同協(xié)議
- 瓷磚鍍金加工合同協(xié)議
- 電子招標(biāo)服務(wù)合同協(xié)議
- 電腦軟件維護(hù)合同協(xié)議
- 電梯使用管理合同協(xié)議
- 瑜伽館禮品合同協(xié)議
- 2024屆清華大學(xué)強(qiáng)基計(jì)劃數(shù)學(xué)學(xué)科筆試試題(附答案)
- 5、科技成果轉(zhuǎn)化的組織實(shí)施與激勵獎勵制度
- 全國統(tǒng)一規(guī)范電子稅務(wù)局概況介紹及操作輔導(dǎo)
- 工商企業(yè)管理畢業(yè)論文范文(4篇)
- 浙江省杭州市(2024年-2025年小學(xué)三年級語文)人教版開學(xué)考試(上學(xué)期)試卷(含答案)
- VDA6.3 2023 過程審核檢查表-參考表單
- 【網(wǎng)絡(luò)謠言型尋釁滋事罪的認(rèn)定存在的爭議探析8600字(論文)】
- 2024延遲退休政策詳解
- IC反應(yīng)器的設(shè)計(jì)11
- IEEE-30節(jié)點(diǎn)全套數(shù)據(jù)2
- 施工現(xiàn)場安全隱患檢查表
評論
0/150
提交評論