【文章內(nèi)容簡(jiǎn)介】
了達(dá)到某一用戶目標(biāo)而組合在一起的一組場(chǎng)景 A use case, then, is a set of scenarios tied together by a mon user goal. 用例圖 :用來(lái)顯示在系統(tǒng)(或其它實(shí)體)內(nèi)的用例與系統(tǒng)參與者之間的關(guān)系 A use case diagram shows the relationship among use cases within a system or other semantic entity and their actors 主要使用場(chǎng)合:需求獲取、定義、分析 63 UseCase Flow of Events ? Has one normal, basic flow ? Several alternative flows ? Regular variants ? Odd cases ? Exceptional flows for handling error situations What Is a Scenario? ? A scenario is an instance of a use case. 65 用例圖元語(yǔ) include extend 參與者 用例 系統(tǒng)邊界 關(guān)聯(lián) 擴(kuò)展 包含 泛化 注釋體 注釋連接 66 示例 0301: POST系統(tǒng) ? 銷(xiāo)售點(diǎn)終端( PointOfSale Terminal,POST)系統(tǒng) ? 是一個(gè)計(jì)算機(jī)自動(dòng)化系統(tǒng) ? 用來(lái)記錄商品銷(xiāo)售信息 ? 處理客戶的支付信息 ? 客戶可以使用現(xiàn)金、信用卡、支票等多種支付手段 ? 主要用于零售的百貨商店 ? 包括計(jì)算機(jī)和條形碼掃描儀等硬件設(shè)備和系統(tǒng)運(yùn)行軟件 ? …… 67 示例 03011: POST用例圖 啟動(dòng)Administrator現(xiàn)金支付支票支付CheckProcessingCompanyCashier購(gòu)買(mǎi)商品 i n c l u d e i n c l u d e CardProcessingCompany信用卡支付 i n c l u d e Account68 用例闡述 Use Case:購(gòu)買(mǎi)商品 ID UC1 參與者 Cashier, Customer 交叉引用 … 描述 顧客帶著所要購(gòu)買(mǎi)的商品來(lái)到付款處,出納員記錄下商品信息并接受付款,付款完成后,顧客帶著所購(gòu)買(mǎi)的商品離開(kāi) 前置條件 客戶購(gòu)買(mǎi)了若干件商品 基本事件流: 1. 用例起始于顧客帶著所要購(gòu)買(mǎi)的商品到達(dá)一個(gè)銷(xiāo)售點(diǎn)終端 2. 出納員錄入每個(gè)商品的商品號(hào),如果出現(xiàn)多個(gè)商品,則還需要錄入數(shù)量 3. 系統(tǒng)確定商品信息輸入到正在運(yùn)行的 POST系統(tǒng),顯示當(dāng)前商品信息和價(jià)格 4. 輸入完商品信息后,出納員向 POST發(fā)出提示,提示商品信息錄入完畢 5. 計(jì)算和顯示顧客的商品價(jià)格總額 6. 出納員將商品價(jià)值總額報(bào)告給顧客 7. 出納員接收顧客的付款 — 顧客的付款數(shù)可能高于商品總額 8. 出納員錄入顧客所付的現(xiàn)金總額 9. 系統(tǒng)顯示出應(yīng)找還給顧客的余額,打印付款收據(jù) 10. 出納員收管好現(xiàn)金并取出要找還給顧客的現(xiàn)金,并支付給顧客打印付款收據(jù) 11. 系統(tǒng)記錄本次交易 12. 顧客帶著所購(gòu)的商品離開(kāi) 備選事件流: ? 第 2步:如果輸入的商品號(hào)碼無(wú)效,系統(tǒng)顯示出錯(cuò)信息 ? 第 7步:顧客沒(méi)有足夠的現(xiàn)金,則取消本次交易 后置條件 69 示例 0302:網(wǎng)上銷(xiāo)售系統(tǒng)用例圖 F i n d P r o d u ct sC a n ce l O r d e rU p d a t e P r o d u ctD e l e t e P r o d u ct F r o m C a t a l o gS h o p K e e p e rB r o w se C D sB r o w se B o o ksF i n d C D sF i n d B o o ksB r o w se P r o d u ct sL o g O n C u st o m e rU p d a t e C u st o m e rC r e a t e N e w C u st o m e rD i sp l a y B a ske tD i sp l a y O r d e r sC h e ckO u tC u st o m e r e x t e n d in c l u d e in c l u d e 70 示例 0303:簡(jiǎn)單手表用例圖 71 靜態(tài)圖:類(lèi) 圖、對(duì)象圖、包圖 類(lèi)圖 :是軟件的藍(lán)圖,詳細(xì)描述了系統(tǒng)內(nèi)各個(gè)對(duì)象的相關(guān)的類(lèi),以及這些類(lèi)之間的靜態(tài)關(guān)系 A class diagram is a software blueprint Details the types of objects within a system Describes the static relationships between classes 對(duì)象圖 :表示在某一時(shí)刻類(lèi)的對(duì)象靜態(tài)結(jié)構(gòu)和行為 An object diagram represents a concrete situation at a given time, it express both the static structure (found in class diagrams) and behavior 主要使用場(chǎng)合:系統(tǒng)分析、設(shè)計(jì)、代碼生成 72 類(lèi)圖元語(yǔ) 1 類(lèi) 第一欄是類(lèi)名,第二欄是類(lèi)的屬性,第三欄是類(lèi)的操作 包 包表示一個(gè)類(lèi)圖的集合 關(guān)聯(lián) 關(guān)聯(lián)用于表示類(lèi)的對(duì)象之間的關(guān)系,其特殊形式有組成關(guān)聯(lián)和聚集關(guān)聯(lián) 聚集關(guān)聯(lián) 聚集關(guān)聯(lián)用于表示類(lèi)的對(duì)象之間的關(guān)系是整體與部分的關(guān)系 組成關(guān)聯(lián) 組成關(guān)聯(lián)用于表示類(lèi)的對(duì)象之間的關(guān)系是整體擁有各部分且部分與整體共存亡 Package 73 類(lèi)圖元語(yǔ) 2 泛化關(guān)系 泛化關(guān)系 (繼承關(guān)系 )定義類(lèi)和包之間的一般元素和特殊元素之間的分類(lèi)關(guān)系 依賴(lài)關(guān)系 有兩個(gè)類(lèi)或包 X、 Y,修改 X的定義引起對(duì) Y的定義的修改,則稱(chēng) Y依賴(lài)于 X 注釋體 注釋體用于對(duì) UML實(shí)體進(jìn)行文字描述 注釋連接 注釋連接將注釋體與要描述的實(shí)體相連 74 示例 03012:靜態(tài)結(jié)構(gòu)圖 75 OO思想 76 OO思想 77 如何閱讀類(lèi)圖 ? 先看清有哪些類(lèi) ? 然后看類(lèi)之間的關(guān)系 ? 結(jié)合多重性來(lái)理解類(lèi)圖的結(jié)構(gòu)特點(diǎn)以及各屬性、方法的含義 78 閱讀過(guò)程 ? 找出類(lèi) ? Order、 OrderItem、 Customer、Consignee、 DeliverOrder、 Peddlery、Product ? 找出關(guān)系 ? 從圖中關(guān)系最復(fù)雜(也就是線最密集)的類(lèi)開(kāi)始閱讀,如 Order類(lèi) ? OerderItem和 Order之間是組合關(guān)系,根據(jù)箭頭方向可知 Order包含了 OrderItem ? Order類(lèi)和 Customer、 Consignee、DeliverOrder是關(guān)聯(lián)關(guān)系。也就是說(shuō),一個(gè)訂單和客戶、收貨人、送貨單是相關(guān)的。 79 閱讀過(guò)程 ? 多重性 :用來(lái)說(shuō)明關(guān)聯(lián)的兩個(gè)類(lèi)之間的數(shù)量關(guān)系 80 閱讀過(guò)程 ? 理解方法 ? Order類(lèi)有兩個(gè)方法 dispatch()和 close (),從名字中可以猜出它們分別實(shí)現(xiàn) “ 分發(fā)訂單生成送貨單 ” 和 “ 完成訂單 ” 。 ? DeliveOrder 類(lèi)中有一個(gè) close ()方法,同理,它表示 “ 完成送貨 ” 。 ? 而在 OrderItem中有一個(gè) stateChange ()方法和 deliverState,不難猜出它就是用于改變其 “ 是否交給收貨人 ” 標(biāo)志位的。 ? 先調(diào)用 Order的 dispatch ()方法,它將根據(jù)其包含的 OrderItem中產(chǎn)品信息,來(lái)按供應(yīng)商戶分拆成若干個(gè) DeliverOrder。商戶登錄系統(tǒng)后就可以獲取其 DeliverOrder,并在執(zhí)行完成后再調(diào)用close ()方法。此時(shí),就將調(diào)用 OrderItem的 stateChange()方法來(lái)改變其狀態(tài)。同時(shí)再調(diào)用 Order的 close()方法,判斷該Order的所有的 OrderItem是否都已經(jīng)送到了,如果是就將其真正 close()掉。 81 82 對(duì)象圖 ? 類(lèi)和對(duì)象 ? 類(lèi)是靜態(tài)的,對(duì)象是動(dòng)態(tài)的; ? 類(lèi)是一般化,對(duì)象是個(gè)性化; ? 類(lèi)是定義,對(duì)象是實(shí)例; ? 類(lèi)是抽象,對(duì)象是具體。 83 對(duì)象的表示法 ? 對(duì)象名 ? 對(duì)象名:類(lèi)名 兩個(gè)部分是可選的,如果有類(lèi)名,則必須加冒號(hào),對(duì)象名加下劃線 ? 屬性 ? 由于對(duì)象是具體事物,則所有屬性均已確定,因此在屬性后面列出其值。 84 ? Rose中沒(méi)有專(zhuān)門(mén)的對(duì)象圖,可在協(xié)作圖中表示。 85 ? 由于類(lèi)圖只展示程序的靜態(tài)類(lèi)結(jié)構(gòu),因此通過(guò)類(lèi)圖看懂代碼的意圖相對(duì)困難時(shí),可以通過(guò)對(duì)象圖進(jìn)行細(xì)化分析 。 ? 開(kāi)發(fā)人員在建立復(fù)雜邏輯的類(lèi)交互時(shí),不妨畫(huà)出對(duì)象圖幫助補(bǔ)充說(shuō)明 。 86 ? 在跟蹤系統(tǒng)的交互過(guò)程時(shí) , 往往會(huì)涉及到系統(tǒng)交互過(guò)程的某一瞬間交互對(duì)象的狀態(tài) , 但系統(tǒng)類(lèi)圖并沒(méi)有對(duì)此進(jìn)行描述 。 ? 在 UML中引入 對(duì)象圖 , 用于描述一個(gè)參與交互的對(duì)象在交互過(guò)程中 某一時(shí)刻的狀態(tài) 。 ? 對(duì)象圖 ( Object Diagram) 是描述在某一時(shí)刻 ,一組對(duì)象以及它們之間關(guān)系的圖形 。 ? 對(duì)象圖是描述系統(tǒng)交互的靜態(tài)圖形 , 它由協(xié)作的對(duì)象組成 , 但不包含在對(duì)象之間傳遞的任何消息 。 87 對(duì)象圖中一般包括 “ 對(duì)象 ” 和 “ 鏈 ” 兩類(lèi)基本的模型元素 。 ? 對(duì)象 (Object) ? 鏈 ( link) ? 鏈?zhǔn)莾蓚€(gè)或多個(gè)對(duì)象之間的獨(dú)立連接 , 是關(guān)聯(lián)的實(shí)例 ? 通過(guò)鏈可以將多個(gè)對(duì)象連接起來(lái) , 形成一個(gè)有序列表 , 通常將兩個(gè)對(duì)象之間的連接稱(chēng)為二元鏈 。 ? 鏈在圖形上使用一條不帶箭頭的實(shí)線表示 。 88 包圖 ? 包在 UML中被視為文件夾 89 什么是包 ? 包的作用 ? 包像一個(gè)容器,通常用來(lái)組織 用例圖 和 類(lèi)圖 ,當(dāng)然,包圖的用途不僅限于這些 UML元素; ? 語(yǔ)義上相關(guān)的元素進(jìn)行分組;定義模型中的“ 語(yǔ)義邊界 ” ; ? 提供封裝的命名空間,其中所有名稱(chēng)必須唯一。 90 什么是包 ? 包的表示法 ? 名稱(chēng):每個(gè)包都必須有一個(gè)與其它包相區(qū)別的名稱(chēng) ? 簡(jiǎn)單名、路徑名 ? 擁有的元素:在包中可以擁有各種其它元素,包括類(lèi)、接口、構(gòu)件、節(jié)點(diǎn)、協(xié)作、用例,甚至是其它包或圖 91 ? 對(duì)包中的元素也可以進(jìn)行可見(jiàn)性的控制。 ? 公有元素,任何導(dǎo)入此包的包中,都可以引用公有元素 ? 保護(hù)元素,只有此包的子包才可以引用保護(hù)元素 ? 私有元素,只有在此包中才可以引用私有元素,對(duì)外一律不可見(jiàn)。 ? Rose2022中畫(huà)可見(jiàn)性 ? 如,畫(huà)一個(gè), class,并設(shè)置其 specification中的export control ? 右擊目標(biāo) package,選擇 slect partment items 92 包的版型 ? system ? 表示正在建模的整個(gè)系統(tǒng) ? subsystem ? 表示正在建模的系統(tǒng)中某個(gè)獨(dú)立的部分 ? facade ? 虛包,只是某個(gè)其它包的視圖,主要用于為其它一些復(fù)雜的包提供簡(jiǎn)略視圖 ? stub ? 是一個(gè)代理包,通常應(yīng)用于分布式系統(tǒng)的建模中 ? framework ? 用來(lái)表示一個(gè)主要由模式組成的包,框架是一個(gè)領(lǐng)域內(nèi)的應(yīng)用系統(tǒng)提供可擴(kuò)充模板的體系結(jié)構(gòu)模式 最流行的三種分布式結(jié)構(gòu)CORBA、 RMI和 DCOM 93 包的版型 94 包的關(guān)系 ? 引入依賴(lài)關(guān)系 Import 是默認(rèn)的關(guān)系 ? 說(shuō)明提供者包的命名空間將被添加到客戶包的命名空間中,客戶包中的元素也能夠訪問(wèn)提供者包的所有公共元素 ? 源包可以存取目的包中內(nèi)容,并且引用目的包時(shí)無(wú)需包名,直接用元素名稱(chēng)就可。 ? 依賴(lài)不傳遞 客戶包 提供者包 95 包的關(guān)系 ? 也可以在包和接口之間建立實(shí)現(xiàn)關(guān)系 96 包圖 ? 訂單 表示層 數(shù)據(jù)層 業(yè)務(wù)邏輯層 97 設(shè)計(jì)類(lèi)包的原則 ? 復(fù)用等價(jià)原則 ? 把類(lèi)放入包時(shí),應(yīng)把包作為可復(fù)用的單元,方便版本更替 ? 共用閉包原則 ? 把需要同時(shí)改變的類(lèi)放在一個(gè)包中 ? 一個(gè)類(lèi)改變要求另一個(gè)類(lèi)隨之改變 ? 刪除了一個(gè)類(lèi)后,另一個(gè)類(lèi)多余 ? 兩個(gè)類(lèi)之間有大量消息發(fā)送 ? 共用使用原則