[計(jì)算機(jī)軟件及應(yīng)用]uml課件_第1頁(yè)
[計(jì)算機(jī)軟件及應(yīng)用]uml課件_第2頁(yè)
[計(jì)算機(jī)軟件及應(yīng)用]uml課件_第3頁(yè)
[計(jì)算機(jī)軟件及應(yīng)用]uml課件_第4頁(yè)
[計(jì)算機(jī)軟件及應(yīng)用]uml課件_第5頁(yè)
已閱讀5頁(yè),還剩236頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、UML建模語(yǔ)言及工具第 3 章可視化建模實(shí)踐 A Practice of Visual Modeling with UML-3-學(xué)習(xí)線(xiàn)路圖OOUMLOOAOODDP Case-Study 學(xué) 習(xí) 線(xiàn) 路 圖-4-UML結(jié)構(gòu)UML Structure構(gòu)造塊building blocks公共機(jī)制common mechanisms構(gòu)架architecture基本UML建模元素、關(guān)系和圖達(dá)到特定目標(biāo)的公共UML方法系統(tǒng)架構(gòu)的UML視圖-5-構(gòu)造塊構(gòu)造塊building blocks物件things關(guān)系relationships圖diagrams建模元素本身把物件聯(lián)系在一起,關(guān)系說(shuō)明兩個(gè)或多個(gè)物件是如何

2、語(yǔ)義相關(guān)的UML模型的視圖,它們展現(xiàn)物件的集合,“講述關(guān)于軟件系統(tǒng)的故事”,是我們可視化系統(tǒng)將做什么(分析級(jí)圖)或者系統(tǒng)如何做(設(shè)計(jì)級(jí)圖)的方法-6-物件物件things結(jié)構(gòu)物件行為物件分組物件注解物件UML模型中的名詞,如類(lèi)、接口、協(xié)作、用例、活動(dòng)類(lèi)、組件、節(jié)點(diǎn)UML模型的動(dòng)詞,代表軟件系統(tǒng)在空間或時(shí)間上的行為如交互、狀態(tài)機(jī)包,它用于把語(yǔ)義上相關(guān)的建模元素分組為內(nèi)聚的單元注解,它附加到模型以捕獲特殊信息,同黃色便箋很相像-7-類(lèi)類(lèi)是具有相同屬性、操作和關(guān)系的對(duì)象集合的總稱(chēng)。通常在UML中類(lèi)被畫(huà)成矩形,包括三個(gè)部分:名稱(chēng)、屬性和操作。名稱(chēng):每個(gè)類(lèi)都必須有一個(gè)名字,用來(lái)區(qū)分其它的類(lèi)。屬性:類(lèi)可以

3、有任意多個(gè)屬性,也可以沒(méi)有屬性。在類(lèi)圖中屬性只要寫(xiě)上名字就可以了,也可以在屬性名后跟上類(lèi)型甚至缺省取值 。 操作:操作是類(lèi)的任意一個(gè)實(shí)例對(duì)象都可以調(diào)用的,并可能影響該對(duì)象行為的實(shí)現(xiàn)。 -8-類(lèi)類(lèi)名屬性操作-9-類(lèi)-10-類(lèi)(抽象和靜態(tài))-11-接口接口是未給出實(shí)現(xiàn)的對(duì)象行為的描述,一個(gè)或多個(gè)類(lèi)可以實(shí)現(xiàn)接口,每個(gè)類(lèi)實(shí)現(xiàn)接口的操作。StringisEqual(String) : BooleanHash() : IntegerHashableComparable接口標(biāo)記-12-組件組件是系統(tǒng)中遵循一組接口規(guī)范且提供其實(shí)現(xiàn)的物理的、可替換的軟件模塊。一個(gè)組件可能是源代碼、可執(zhí)行程序或動(dòng)態(tài)庫(kù)。Stude

4、nt-13-節(jié)點(diǎn)節(jié)點(diǎn)代表系統(tǒng)運(yùn)行時(shí)的物理單元,主要用于系統(tǒng)物理方面的建模。節(jié)點(diǎn)可以分為處理器和設(shè)備兩種。處理器:任何具有處理功能的機(jī)器,如服務(wù)器,工作站。處理器用邊框?yàn)楹谏牧⒎襟w表示。設(shè)備:沒(méi)有處理功能的機(jī)器,如打印機(jī),掃描儀。設(shè)備用邊框?yàn)榘咨牧⒎襟w表示。-14-15-包包是一個(gè)用來(lái)將模型單元分組的通用機(jī)制。包可以含有類(lèi)、接口、組件、用例等物件或其它的包。包Package-16-包任何大系統(tǒng)都必須劃分為較小的單元,以便人們?cè)谀骋粫r(shí)刻可以和有限的信息工作,使團(tuán)隊(duì)的工作不相互影響。-17-注釋注釋用于解釋設(shè)計(jì)的思路,便于理解。一個(gè)好的模型應(yīng)該有詳盡的注釋。Representsan incorp

5、orated entityCompany注釋-18-關(guān)系關(guān)系relationships關(guān)聯(lián)association依賴(lài)dependency泛化generalization實(shí)現(xiàn)realization描述對(duì)象之間的一組鏈接,代表鏈接的元素之間的某種語(yǔ)義上的聯(lián)系物件的改變引起依賴(lài)物件的語(yǔ)義改變描述一般事物和特殊事物之間的關(guān)系類(lèi)元之間的關(guān)系,一個(gè)類(lèi)元說(shuō)明一份契約,另一個(gè)類(lèi)元保證實(shí)現(xiàn)該契約-19-關(guān)聯(lián)關(guān)聯(lián)關(guān)系表示兩個(gè)類(lèi)之間存在某種語(yǔ)義上的聯(lián)系。關(guān)聯(lián)至類(lèi)的連接點(diǎn)稱(chēng)為關(guān)聯(lián)端點(diǎn),很多信息被附在關(guān)聯(lián)端點(diǎn)上,它擁有角色名、重?cái)?shù)(多少個(gè)類(lèi)的實(shí)例可以關(guān)聯(lián)于另一個(gè)類(lèi)的實(shí)例)等。-20-關(guān)聯(lián)Jobemployeeemplo

6、yer1.*CompanyPerson角色名重?cái)?shù)關(guān)聯(lián)名稱(chēng)-21-關(guān)聯(lián)多重性多重性(multiplicity):指定了一個(gè)類(lèi)與關(guān)聯(lián)類(lèi)的單個(gè)實(shí)例可能相關(guān)的實(shí)例數(shù)目?!?”、“*”、“0.1”、“3.5”不要在軟件開(kāi)發(fā)早期過(guò)度擔(dān)心多重性。首先確定類(lèi)和關(guān)聯(lián),然后再確定多重性。-22-關(guān)聯(lián)關(guān)聯(lián)終端名關(guān)聯(lián)終端名(association end):指定了關(guān)聯(lián)終端的名字。關(guān)聯(lián)終端名在問(wèn)題陳述中常以名詞形式出現(xiàn)。關(guān)聯(lián)終端名的使用是可選的,但是對(duì)于同一個(gè)類(lèi)的兩個(gè)對(duì)象之間的關(guān)聯(lián)來(lái)說(shuō),關(guān)聯(lián)終端名是必需的。關(guān)聯(lián)終端名也可以區(qū)分同一對(duì)類(lèi)之間的多重關(guān)聯(lián)。在創(chuàng)建類(lèi)圖時(shí),應(yīng)該正確使用關(guān)聯(lián)終端名,不應(yīng)該為每個(gè)引用引入一個(gè)獨(dú)立的類(lèi)

7、。-23-關(guān)聯(lián)關(guān)聯(lián)終端名Directorycontainercontents*0.1User*ownerauthorizedUser1*ParentChild2*錯(cuò)誤的模型Person正確的模型*0.2parentchild-24-關(guān)聯(lián)關(guān)聯(lián)類(lèi)關(guān)聯(lián)類(lèi)(association class):是一種關(guān)聯(lián),也是一種類(lèi)。描述了關(guān)聯(lián)的屬性和操作。不應(yīng)把關(guān)聯(lián)類(lèi)的屬性建模為類(lèi)的屬性。PersonnamebirthDateaddressCompanynameaddress*0.1WorksForsalaryjobTitle-25-關(guān)聯(lián)限定關(guān)聯(lián)限定關(guān)聯(lián)(qualified association):是這樣一種關(guān)聯(lián)

8、,其中被稱(chēng)為限定符(qualifier)的屬性會(huì)消除在“多”關(guān)聯(lián)端上對(duì)象的歧義。限定符在目標(biāo)對(duì)象間進(jìn)行選擇,將多重性從“多”降到“1”。Bank*1AccountaccountNumber未限定BankAccountaccountNumber0.11限定-26-關(guān)聯(lián)n元關(guān)聯(lián)要盡量避免n元關(guān)聯(lián)大部分關(guān)聯(lián)可以分解成帶限定符和屬性的二元關(guān)聯(lián)。n元關(guān)聯(lián)的UML符號(hào)是以直線(xiàn)連接相關(guān)類(lèi)的一個(gè)菱形。在實(shí)現(xiàn)時(shí)要把n元關(guān)聯(lián)提升為類(lèi)。-27-ProjectLanguagePerson*programmer類(lèi)圖Cobol:LanguageMary:PersonaccountingSystem:Projectname

9、=“accounting system”CADprogram:Projectname=“CAD program”name=“Cobol”C:Languagename=“C”name=“Mary”對(duì)象圖-28-29-30-類(lèi)之間的關(guān)聯(lián)聚合具有has a語(yǔ)義對(duì)象A是對(duì)象B的一個(gè)組成部分-31-32-33-34-35-36-37-泛化泛化是一般化和具體化之間的一種關(guān)系。繼承就是一種泛化關(guān)系,更一般化的描述稱(chēng)為雙親,雙親的雙親稱(chēng)為祖先,更具體化的描述稱(chēng)為孩子。TreeOakElmBirch孩子雙親PersonStudentGraduate祖先-38-實(shí)現(xiàn)實(shí)現(xiàn):多數(shù)情況下,實(shí)現(xiàn)關(guān)系被用來(lái)規(guī)定接口和實(shí)現(xiàn)接

10、口的類(lèi)或組件之間的關(guān)系StringisEqual(String) : BooleanHash() : IntegerComparableComparableisEqual(String) : BooleanHash() : Integer實(shí)現(xiàn)特殊的實(shí)現(xiàn)標(biāo)記-39-依賴(lài)依賴(lài):如果一個(gè)模型元素的變化會(huì)影響另一個(gè)模型元素,那么二者之間存在依賴(lài)關(guān)系。依賴(lài)類(lèi)型-40-依賴(lài)-41-關(guān)系小結(jié)語(yǔ)義上,所有的關(guān)系(包括關(guān)聯(lián)、泛化、實(shí)現(xiàn))都是各種各樣的依賴(lài)關(guān)系,因?yàn)檫@3種關(guān)系具有重要的語(yǔ)義,所以在UML中被分離出來(lái)成為獨(dú)立的關(guān)系。-42-圖(UML1.4)圖diagrams類(lèi)圖class diagrams對(duì)象圖o

11、bject diagrams構(gòu)件圖component diagrams部署圖deployment diagrams用例圖use case diagrams順序圖sequence diagrams協(xié)作圖collaboration diagrams狀態(tài)圖statechart diagrams活動(dòng)圖activity diagrams結(jié)構(gòu)圖行為圖包圖package diagrams-43-圖(UML2.0)圖diagrams類(lèi)圖class diagrams對(duì)象圖object diagrams構(gòu)件圖component diagrams部署圖deployment diagrams用例圖use case d

12、iagrams交互圖interaction diagrams狀態(tài)圖 state machine diagrams活動(dòng)圖activity diagrams結(jié)構(gòu)圖行為圖復(fù)合結(jié)構(gòu)圖 composite structure diagrams順序圖sequence diagrams通信圖communication diagrams交互概圖interaction overview diagrams時(shí)序圖timing diagrams包圖package diagrams-44-UML結(jié)構(gòu)UML Structure構(gòu)造塊building blocks公共機(jī)制common mechanisms構(gòu)架archite

13、cture基本UML建模元素、關(guān)系和圖達(dá)到特定目標(biāo)的公共UML方法系統(tǒng)架構(gòu)的UML視圖-45-公共機(jī)制公共機(jī)制common mechanisms規(guī)格說(shuō)明specifications修飾adornments通用劃分common divisions擴(kuò)展機(jī)制extensibility mechanisms-46-規(guī)格說(shuō)明UML模型至少具有兩種維度:圖形維度:允許使用圖和圖標(biāo)可視化模型文本維度:由各種建模元素的規(guī)格說(shuō)明所組成規(guī)格說(shuō)明模型元素的特征和語(yǔ)義的文本描述模型的“肉”形成了承載模型的語(yǔ)義背板(semantic backplane),賦予模型意義,各種圖僅僅是該背板的視圖或者可視化投影death

14、by diagram因圖而亡模型被過(guò)度圖形化而沒(méi)有說(shuō)明。-47-修飾修飾:圖中建模元素上暴露的信息項(xiàng)以表現(xiàn)某個(gè)要點(diǎn)任何UML圖僅是模型的視圖,因此,只有在修飾增強(qiáng)了圖的整體清晰性和可讀性或者突出模型的某些重要特征時(shí),你才應(yīng)該表示那些修飾Window-48-通用劃分通用劃分是UML對(duì)事物被劃分成抽象描述和具體實(shí)例的兩分法的表達(dá)。類(lèi)元(Classifier)和實(shí)例類(lèi)元:一類(lèi)事物的抽象概念;如bank account參與者、類(lèi)、類(lèi)元角色、組件、數(shù)據(jù)類(lèi)型、接口、節(jié)點(diǎn)、信號(hào)、子系統(tǒng)、用例實(shí)例:一類(lèi)事物的特定實(shí)例;如my bank account接口(interface)和實(shí)現(xiàn)接口:說(shuō)明事物行為的契約(做

15、什么)實(shí)現(xiàn):事物是如何工作的特殊細(xì)節(jié)(如何做)-49-擴(kuò)展機(jī)制約束:允許對(duì)模型元素添加新的規(guī)則,限制一種或多個(gè)元素語(yǔ)義的規(guī)則,形式:約束條件構(gòu)造型(stereotypes):基于已有的建模元素引入新的建模元素The means by which to extend the UMLStereotypes convey key properties to the model readerA number of stereotypes are packaged along with the UMLCan define your own stereotypes標(biāo)記值:允許為模型元素添加新的特性,附屬于

16、UML元素的各種信息(Property),是帶有相關(guān)值的關(guān)鍵字,具有形式: 屬性名 = 值-50-擴(kuò)展機(jī)制之約束 約束是用文字表達(dá)式表示的語(yǔ)義限制。 約束用大括弧內(nèi)的字符串表達(dá)式表示。-51-Employeesalarysalaryboss.salaryboss0.1*Windowlengthwidth0.8length/width 1.5Jobprioritypriority never increases對(duì)象上的約束PersonCommitteeMemberOfChairOf*1subset關(guān)聯(lián)之間的子集約束-52-擴(kuò)展機(jī)制之構(gòu)造型 UML中元素具有通用的語(yǔ)義,用構(gòu)造型可以對(duì)它們進(jìn)行專(zhuān)有化

17、和擴(kuò)展 構(gòu)造型機(jī)制是指在已有的模型元素基礎(chǔ)上建立一種新的模型元素。它與現(xiàn)有元素要相差不多,只是多一些特別的語(yǔ)義-53-擴(kuò)展機(jī)制之標(biāo)記值 標(biāo)記值是一組字符串,存儲(chǔ)著有關(guān)元素的一些信息。 -54-UML結(jié)構(gòu)UML Structure構(gòu)造塊building blocks公共機(jī)制common mechanisms構(gòu)架architecture基本UML建模元素、關(guān)系和圖達(dá)到特定目標(biāo)的公共UML方法系統(tǒng)架構(gòu)的UML視圖-55-架構(gòu)ArchitectureThe organizational structure of a system, including its decomposition into pa

18、rts, their connectivity, interaction mechanisms, and the guiding principles that inform the design of a system構(gòu)架是一個(gè)系統(tǒng)的組織結(jié)構(gòu),包括系統(tǒng)分解成的各個(gè)部分、它們的連接性、交互機(jī)制和系統(tǒng)設(shè)計(jì)的向?qū)б?guī)則IEEE:在其環(huán)境中系統(tǒng)的高級(jí)概念-56-4+1視圖-1-57-4+1視圖-2Use Case ViewEnd-user: Functionality這些視圖由用例視圖所統(tǒng)一,它描述項(xiàng)目干系人(stakeholder)的需求;所有其他視圖都是從用例視圖派生而來(lái),該視圖把系統(tǒng)的基本需求捕

19、獲為用例并提供構(gòu)造其他視圖的基礎(chǔ)Logical View Analysts/Designers: Structure系統(tǒng)功能和詞匯;描述問(wèn)題域的詞匯,作為類(lèi)和對(duì)象的集合。重點(diǎn)是展示對(duì)象和類(lèi)是如何組成系統(tǒng)、實(shí)現(xiàn)所需系統(tǒng)行為的-58-4+1視圖-3Process View System integrators: Performance, Scalability, Throughput系統(tǒng)性能、可伸縮性和吞吐量;建模在我們系統(tǒng)中的可執(zhí)行線(xiàn)程和進(jìn)程作為活動(dòng)類(lèi)。其實(shí),它是邏輯視圖面向進(jìn)程的變體,包含所有相同的制品Implementation ViewProgrammers: Software Manag

20、ement系統(tǒng)組裝和配置管理;對(duì)組成基于系統(tǒng)的物理代碼的文件和組件進(jìn)行建模。它同樣展示出組件之間的依賴(lài),展示一組組件的配置管理以定義系統(tǒng)的版本-59-4+1視圖-4Deployment View System engineering: System Topology, Delivery, Installation, Communication系統(tǒng)的拓?fù)浣Y(jié)構(gòu)、分布、移交和安裝;建模把組件物理地部署到一組物理的、可計(jì)算節(jié)點(diǎn)上,如計(jì)算機(jī)和外設(shè)上。它允許你建模橫跨分布式系統(tǒng)節(jié)點(diǎn)上的組件的分布-60-總結(jié):UML結(jié)構(gòu)-61-UML Diagrams in Rational Software Archit

21、ect Behavioral DiagramsStructural DiagramsActivityDiagramsSequenceDiagramsCommunicationDiagramsState MachineDiagramsComponentDiagramsCompositeStructureDiagramsClassDiagramsModelObjectDiagramsDeploymentDiagramsUse-CaseDiagrams-62-用例與用例圖場(chǎng)景:是用來(lái)描述用戶(hù)和系統(tǒng)之間交互的順序的步驟A scenario is a sequence of steps describi

22、ng an interaction between a user and a system 用例:是為了達(dá)到某一用戶(hù)目標(biāo)而組合在一起的一組場(chǎng)景A use case, then, is a set of scenarios tied together by a common user goal. 用例圖:用來(lái)顯示在系統(tǒng)(或其它實(shí)體)內(nèi)的用例與系統(tǒng)參與者之間的關(guān)系A(chǔ) use case diagram shows the relationship among use cases within a system or other semantic entity and their actors主要使用

23、場(chǎng)合:需求獲取、定義、分析-63-Use-Case Flow of EventsHas one normal, basic flow Several alternative flowsRegular variantsOdd casesExceptional flows for handling error situationsWhat Is a Scenario?A scenario is an instance of a use case.-65-用例圖元語(yǔ)參與者用例系統(tǒng)邊界關(guān)聯(lián)擴(kuò)展包含泛化注釋體注釋連接-66-示例03-01:POST系統(tǒng)銷(xiāo)售點(diǎn)終端(Point-Of-Sale Termin

24、al,POST)系統(tǒng)是一個(gè)計(jì)算機(jī)自動(dòng)化系統(tǒng)用來(lái)記錄商品銷(xiāo)售信息處理客戶(hù)的支付信息客戶(hù)可以使用現(xiàn)金、信用卡、支票等多種支付手段主要用于零售的百貨商店包括計(jì)算機(jī)和條形碼掃描儀等硬件設(shè)備和系統(tǒng)運(yùn)行軟件-67-示例03-01-1:POST用例圖-68-用例闡述Use Case:購(gòu)買(mǎi)商品IDUC1參與者Cashier,Customer交叉引用描述顧客帶著所要購(gòu)買(mǎi)的商品來(lái)到付款處,出納員記錄下商品信息并接受付款,付款完成后,顧客帶著所購(gòu)買(mǎi)的商品離開(kāi)前置條件客戶(hù)購(gòu)買(mǎi)了若干件商品基本事件流:用例起始于顧客帶著所要購(gòu)買(mǎi)的商品到達(dá)一個(gè)銷(xiāo)售點(diǎn)終端出納員錄入每個(gè)商品的商品號(hào),如果出現(xiàn)多個(gè)商品,則還需要錄入數(shù)量系統(tǒng)確定

25、商品信息輸入到正在運(yùn)行的POST系統(tǒng),顯示當(dāng)前商品信息和價(jià)格輸入完商品信息后,出納員向POST發(fā)出提示,提示商品信息錄入完畢計(jì)算和顯示顧客的商品價(jià)格總額出納員將商品價(jià)值總額報(bào)告給顧客出納員接收顧客的付款顧客的付款數(shù)可能高于商品總額出納員錄入顧客所付的現(xiàn)金總額系統(tǒng)顯示出應(yīng)找還給顧客的余額,打印付款收據(jù)出納員收管好現(xiàn)金并取出要找還給顧客的現(xiàn)金,并支付給顧客打印付款收據(jù)系統(tǒng)記錄本次交易顧客帶著所購(gòu)的商品離開(kāi)備選事件流:第2步:如果輸入的商品號(hào)碼無(wú)效,系統(tǒng)顯示出錯(cuò)信息第7步:顧客沒(méi)有足夠的現(xiàn)金,則取消本次交易后置條件-69-示例03-02:網(wǎng)上銷(xiāo)售系統(tǒng)用例圖-70-示例03-03:簡(jiǎn)單手表用例圖-71

26、-靜態(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(chǔ) 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

27、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ì)

28、Y的定義的修改,則稱(chēng)Y依賴(lài)于X注釋體注釋體用于對(duì)UML實(shí)體進(jìn)行文字描述注釋連接注釋連接將注釋體與要描述的實(shí)體相連-74-示例03-01-2:靜態(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ù)雜(也就是線(xiàn)最密集)的類(lèi)開(kāi)始閱讀,如Order類(lèi)OerderItem和Order之間是組合關(guān)系,根據(jù)箭頭方向可知Order包含了OrderIt

29、emOrder類(lèi)和Customer、Consignee、DeliverOrder是關(guān)聯(lián)關(guān)系。也就是說(shuō),一個(gè)訂單和客戶(hù)、收貨人、送貨單是相關(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的dis

30、patch ()方法,它將根據(jù)其包含的OrderItem中產(chǎn)品信息,來(lái)按供應(yīng)商戶(hù)分拆成若干個(gè)DeliverOrder。商戶(hù)登錄系統(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è)部分是

31、可選的,如果有類(lèi)名,則必須加冒號(hào),對(duì)象名加下劃線(xiàn)屬性由于對(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ì)象以及它們之

32、間關(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í)線(xiàn)表示。-88-包圖包在UML中被視為文件夾-89-什么是包包的作用包像一個(gè)容器,通常用來(lái)組織用例圖和類(lèi)圖,當(dāng)然,包圖的用途不僅限于這些UML元素;語(yǔ)義上相關(guān)的元素進(jìn)行分組;定義模型中的“語(yǔ)義邊界”;提供封裝的命名空間,其中所有名稱(chēng)必須唯一。-

33、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)。Rose2003中畫(huà)可見(jiàn)性如,畫(huà)一個(gè),class,并設(shè)置其specification中的export control右擊目標(biāo)package,選擇slect compartment items-92-包的版型表示正在建模的整個(gè)系統(tǒng)表

34、示正在建模的系統(tǒng)中某個(gè)獨(dú)立的部分虛包,只是某個(gè)其它包的視圖,主要用于為其它一些復(fù)雜的包提供簡(jiǎn)略視圖是一個(gè)代理包,通常應(yīng)用于分布式系統(tǒng)的建模中用來(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ō)明提供者包的命名空間將被添加到客戶(hù)包的命名空間中,客戶(hù)包中的元素也能夠訪問(wèn)提供者包的所有公共元素源包可以存取目的包中內(nèi)容,并且引用目的包時(shí)無(wú)需包名,直接用元素名稱(chēng)就可。依賴(lài)不傳遞客戶(hù)包提供者包-95-包的關(guān)系也可以在包和接口之間建立實(shí)現(xiàn)關(guān)系-96-包

35、圖UML2.0正式圖形訂單表示層數(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ā)送共用使用原則不會(huì)一起使用的類(lèi)不要放在一個(gè)包中,避免無(wú)辜影響如果元素A依賴(lài)于包P中的某個(gè)元素B,則表示A會(huì)依賴(lài)于P中的所有元素,如果包P中任何一個(gè)元素做了修改,A都要重新審視自己是否還能使用包P非循環(huán)依賴(lài)原則包之間的依賴(lài)關(guān)系不要形成循環(huán),如果確實(shí)有 此類(lèi)情況出現(xiàn),不妨將幾個(gè)循環(huán)依賴(lài)的包中全部放到一個(gè)更大的包中-98-交互圖概述Interacti

36、on diagram,是描述對(duì)象之間的關(guān)系和對(duì)象之間的信息傳遞的圖;通常用來(lái)描述一個(gè)用例的行為,實(shí)現(xiàn)一個(gè)用例,完成對(duì)系統(tǒng)的動(dòng)態(tài)行為建模;包含兩種:順序圖(或時(shí)序圖,sequence diagram)協(xié)作圖(collaboration diagram)-99-順序圖面向時(shí)間描述對(duì)象交互的圖協(xié)作圖對(duì)象間消息的結(jié)構(gòu)化視圖-100-順序圖按照時(shí)間順序顯式對(duì)象之間交互的圖-101-順序圖的組成活動(dòng)者(actor)或者 對(duì)象(object)生命線(xiàn)(lifeline)激活(activation)/ 控制焦點(diǎn)(focus of control)消息(message)-102-活動(dòng)者或?qū)ο蠡顒?dòng)者和對(duì)象按照從左到

37、右的順序排列一般最多兩個(gè)活動(dòng)者,他們分列兩端。啟動(dòng)這個(gè)用例的活動(dòng)者往往排在最左邊;接收消息的活動(dòng)者則排在最右端;對(duì)象從左到右按照重要性排列或按照消息先后順序排列。-103-104-活動(dòng)者或?qū)ο髮?duì)象的命名方式有三種:包括對(duì)象名和類(lèi)名類(lèi)名(匿名對(duì)象)對(duì)象名(不關(guān)心類(lèi))-105-生命線(xiàn)生命線(xiàn)(Lifeline):每個(gè)對(duì)象都有自己的生命線(xiàn),用來(lái)表示在該用例中一個(gè)對(duì)象在一段時(shí)間內(nèi)的存在垂直的虛線(xiàn)如果對(duì)象生命期結(jié)束,則用注銷(xiāo)符號(hào)表示對(duì)象默認(rèn)的位置在圖頂部,表示對(duì)象在交互之前已經(jīng)存在如果是在交互過(guò)程中由另外的對(duì)象所創(chuàng)建,則位于圖的中間某處。-106-107-激活期激活期(activation)/控制焦點(diǎn)(f

38、ocus of control)對(duì)象在一段時(shí)間內(nèi)獲得了焦點(diǎn),也稱(chēng)激活期對(duì)象執(zhí)行某個(gè)動(dòng)作的時(shí)期空心矩形條激活期的長(zhǎng)短意味著對(duì)象執(zhí)行某個(gè)動(dòng)作的時(shí)間有多長(zhǎng),可以通過(guò)約束10ms來(lái)限制執(zhí)行時(shí)間的長(zhǎng)短。-108-109-消息面向?qū)ο蠓椒ㄖ校⑹菍?duì)象間交互信息的主要方式。結(jié)構(gòu)化程序設(shè)計(jì)中,模塊間傳遞信息的方式主要是過(guò)程(或函數(shù))調(diào)用。對(duì)象A向?qū)ο驜發(fā)送消息,可以簡(jiǎn)單地理解為對(duì)象A調(diào)用對(duì)象B的一個(gè)操作(operation)。-110-消息順序圖中,盡力保持消息的順序是從左到右排列的。一個(gè)順序圖的消息流開(kāi)始于左上方,消息2的位置比消息1低,這意味著消息2的順序比消息1要遲。順序圖中消息編號(hào)可顯示,也可不顯示

39、。協(xié)作圖中必須顯示。-111-消息UML三種消息:調(diào)用(Procedure Call)異步(Asynchronous)返回(Return)-112-消息UML三種消息:調(diào)用(Procedure Call)發(fā)送者把消息發(fā)送后,等待直到接收者返回控制,可以表示同步;實(shí)心箭頭符號(hào)-113-消息UML三種消息:異步(Asynchronous)消息發(fā)送后,發(fā)送者繼續(xù)操作,不等待,常用于并發(fā);-114-消息UML三種消息:返回(Return)表示消息的返回。消息上方放置返回值同步消息的返回可以畫(huà)出(如果想明確表達(dá)返回值),也可以不畫(huà)出,直接隱含。異步消息可以有返回,也可以沒(méi)有。(可以響應(yīng)異步消息,也可以不

40、響應(yīng)該異步消息。)如果順序圖上顯示有編號(hào),則返回消息的編號(hào)和當(dāng)初發(fā)送消息的編號(hào)完全一樣。虛線(xiàn)箭頭表示,和依賴(lài)關(guān)系不要混淆-115-116-消息自調(diào)用(Self Call)某對(duì)象自己調(diào)用自己的操作UML標(biāo)記 (嵌套的矩形條) Rose標(biāo)記-117-建立順序圖的步驟確定交互的范圍;識(shí)別參與交互的對(duì)象和活動(dòng)者;設(shè)置對(duì)象生命線(xiàn)開(kāi)始和結(jié)束;設(shè)置消息;細(xì)化消息;-118-案例:存款分析級(jí)別的順序圖,粗略,雙斜杠忽略消息同步異步類(lèi)別也無(wú)妨-119-Add title 新增書(shū)目和圖書(shū)操作-120-121-每個(gè)用例需要一張或多張順序圖來(lái)描述其行為。每張順序圖顯示用例的一個(gè)特定的行為序列。順序圖可以顯示大規(guī)模的交

41、互,但這樣的交互常會(huì)包含許多獨(dú)立的可以按不同方式進(jìn)行組合的任務(wù)。無(wú)需重復(fù)信息就可以為每項(xiàng)任務(wù)繪制一張獨(dú)立的順序圖。也要為用例內(nèi)部的每種異常繪制一張順序圖。-122-:顧客:股票經(jīng)紀(jì)人系統(tǒng):證券交易所輸入買(mǎi)入日期申請(qǐng)確認(rèn)確認(rèn)買(mǎi)入顯示訂單號(hào)下訂單報(bào)告交易結(jié)束驗(yàn)證資金執(zhí)行訂單買(mǎi)入股票的順序圖-123-:顧客:股票經(jīng)紀(jì)人系統(tǒng):證券交易所輸入買(mǎi)入日期拒絕買(mǎi)入取消買(mǎi)入驗(yàn)證資金:資金不足買(mǎi)入股票失敗的順序圖-124-順序圖示例:簡(jiǎn)單手表調(diào)時(shí)-125-順序模型的準(zhǔn)則:至少為每個(gè)用例編寫(xiě)一種場(chǎng)景;把場(chǎng)景抽象為順序圖;劃分復(fù)雜的交互;為每種錯(cuò)誤條件繪制一張順序圖。-126-高級(jí)交互建模帶有被動(dòng)對(duì)象的順序圖主動(dòng)對(duì)象

42、在發(fā)送消息之后還保持活動(dòng)狀態(tài),并可以響應(yīng)其他消息。所有的對(duì)象并不總是主動(dòng)的,多數(shù)是被動(dòng)的對(duì)象:沒(méi)有自己的控制線(xiàn)程,在調(diào)用時(shí)才會(huì)被激活。一旦操作完成,控制權(quán)就會(huì)返回給調(diào)用者,被動(dòng)對(duì)象就會(huì)變成不活動(dòng)的。-127-高級(jí)交互建模帶有被動(dòng)對(duì)象的順序圖:事務(wù)對(duì)象:客戶(hù)表:費(fèi)率表對(duì)象服務(wù)級(jí)別(客戶(hù))級(jí)別計(jì)算傭金(級(jí)別、事務(wù))傭金計(jì)算傭金傭金帶有被動(dòng)對(duì)象的順序圖-128-高級(jí)交互建模帶有臨時(shí)對(duì)象的順序圖UML表示創(chuàng)建的方法是,把對(duì)象符號(hào)放在表示創(chuàng)建此對(duì)象的調(diào)用的箭頭頭部。一個(gè)大“X”標(biāo)記表示順序圖中被銷(xiāo)毀對(duì)象生命周期的結(jié)束?!癤”放在銷(xiāo)毀對(duì)象的調(diào)用箭頭的頭部;如果對(duì)象自行銷(xiāo)毀并將控制權(quán)返回給另一個(gè)對(duì)象,那么“

43、X”就放在返回箭頭的尾部。objectAobjectBobjectCoperationE(c, d)resultV帶有臨時(shí)對(duì)象的順序圖createC(arg)operationE(m, n)resultT-129-練習(xí)用戶(hù)打印文件,計(jì)算機(jī)向打印服務(wù)器發(fā)送打印命令,打印機(jī)如果空閑,則直接打印,否則把打印文件存儲(chǔ)在打印隊(duì)列中。-130-131-練習(xí)管理員通過(guò)課程管理器打印課程UML的信息順序圖制作提示:只關(guān)注核心對(duì)象順序圖用于描述某個(gè)用例的部分交互細(xì)節(jié)-132-133-管理員通過(guò)課程管理器打印所有課程信息-134-135-協(xié)作圖描述系統(tǒng)對(duì)象(或活動(dòng)者)如何共同協(xié)作實(shí)現(xiàn)用例;強(qiáng)調(diào)的是參與交互的對(duì)象的

44、組織;一般,順序圖和交互圖可以相互轉(zhuǎn)換,Rose提供了轉(zhuǎn)換工具。先畫(huà)順序圖,再轉(zhuǎn)成協(xié)作圖更容易-136-多對(duì)象多對(duì)象是多個(gè)對(duì)象組成的集合,往往是同一個(gè)類(lèi)的對(duì)象;如果消息同時(shí)發(fā)給多個(gè)對(duì)象,則用多對(duì)象表示;在順序圖中仍然顯示為單對(duì)象一樣的圖標(biāo), rose中multiple instance協(xié)作圖中重疊的方框。-137-活動(dòng)對(duì)象/主動(dòng)對(duì)象主動(dòng)對(duì)象是一組屬性和一組方法的封裝體,其中至少有一個(gè)方法不需要接收消息就能主動(dòng)執(zhí)行(稱(chēng)為主動(dòng)方法)主動(dòng)對(duì)象是不需接收消息就可自動(dòng)啟動(dòng)交互的對(duì)象除了含有主動(dòng)方法外,主動(dòng)對(duì)象和被動(dòng)對(duì)象無(wú)區(qū)別-138-案例:存款-139-協(xié)作圖示例:打印服務(wù)器-140-狀態(tài)圖狀態(tài)圖:用于

45、利用狀態(tài)和事件描述對(duì)象本身的行為A statechart diagram can be used to describe formally the behavior of objects in terms of states and events狀態(tài)(states): the state of an object轉(zhuǎn)移(transitions): the passing from one state to another事件(events): the occurrence of a given situation主要使用場(chǎng)合:系統(tǒng)分析(類(lèi))、設(shè)計(jì)-141-狀態(tài)圖元語(yǔ)-1初態(tài)表示狀態(tài)圖的起始點(diǎn)中間

46、狀態(tài)表示狀態(tài)圖的簡(jiǎn)單狀態(tài)終態(tài)表示狀態(tài)圖的終點(diǎn)狀 態(tài)狀態(tài)圖元語(yǔ)-2轉(zhuǎn)移用于說(shuō)明兩個(gè)對(duì)象間存在某種關(guān)系,如滿(mǎn)足某個(gè)條件并當(dāng)某一事件發(fā)生時(shí),對(duì)象將從一個(gè)狀態(tài)變遷到另一個(gè)狀態(tài)并同時(shí)執(zhí)行一些活動(dòng)注釋體注釋連接-143-示例03-01-5:狀態(tài)圖-144-狀態(tài)圖TransitionsSource StateTarget StateTrigger guard / Effect-145-轉(zhuǎn)換(Transitions)轉(zhuǎn)換表示當(dāng)一個(gè)特定事件發(fā)生或者某些條件得到滿(mǎn)足時(shí),一個(gè)源狀態(tài)下的對(duì)象在完成一定的動(dòng)作后將發(fā)生狀態(tài)轉(zhuǎn)變,轉(zhuǎn)向另一個(gè)稱(chēng)之為目標(biāo)狀態(tài)的狀態(tài)。 轉(zhuǎn)換進(jìn)入的狀態(tài)為活動(dòng)狀態(tài),轉(zhuǎn)換離開(kāi)的狀態(tài)變?yōu)榉腔顒?dòng)狀態(tài)。-1

47、46-轉(zhuǎn)換組成:源狀態(tài):即受轉(zhuǎn)換影響的狀態(tài)目標(biāo)狀態(tài):當(dāng)轉(zhuǎn)換完成后對(duì)象的狀態(tài) 觸發(fā)事件:用來(lái)為轉(zhuǎn)換定義一個(gè)事件,包括調(diào)用、改變、信號(hào)、時(shí)間四類(lèi)事件監(jiān)護(hù)條件:布爾表達(dá)式,決定是否激活轉(zhuǎn)換動(dòng)作:轉(zhuǎn)換激活時(shí)的操作-147-IdleMenu visibleright button down/ display pop-up menuright button up/ erase pop-up menuCursor moved/ highlight menu item-148-觸發(fā)事件(Event Trigger)觸發(fā)事件是能夠引起狀態(tài)轉(zhuǎn)換的事件。轉(zhuǎn)換也可以是非觸發(fā)的, 非觸發(fā)轉(zhuǎn)換(Triggerless T

48、ransition)也被稱(chēng)為完成轉(zhuǎn)換(Completion Transition),當(dāng)源狀態(tài)完成活動(dòng)時(shí),轉(zhuǎn)換被隱式地觸發(fā)。-149-監(jiān)護(hù)條件(Guard Condition)監(jiān)護(hù)條件是觸發(fā)轉(zhuǎn)換必須滿(mǎn)足的條件,它是一個(gè)布爾表達(dá)式。 布爾表達(dá)式由“ ”括起,放在觸發(fā)事件后面。當(dāng)觸發(fā)事件發(fā)生后,求監(jiān)護(hù)條件的值,如果值為真,轉(zhuǎn)換可以觸發(fā);如果值為假,轉(zhuǎn)換就不能被觸發(fā),如果也沒(méi)有其他的轉(zhuǎn)換被這個(gè)觸發(fā)事件觸發(fā),則事件被忽略。從一個(gè)狀態(tài)引出的多個(gè)轉(zhuǎn)換可以有同樣的觸發(fā)器事件,但是每個(gè)轉(zhuǎn)換必須具有不同的監(jiān)護(hù)條件。 -150-動(dòng)作(Action)動(dòng)作是一組可執(zhí)行語(yǔ)句或者計(jì)算處理過(guò)程。動(dòng)作可以包括發(fā)送消息給另一個(gè)對(duì)

49、象、操作調(diào)用、設(shè)置返回值、創(chuàng)建和銷(xiāo)毀對(duì)象等。動(dòng)作是原子的,不可中斷的,動(dòng)作或動(dòng)作序列的執(zhí)行不會(huì)被同時(shí)發(fā)生的其他動(dòng)作影響或終止。整個(gè)系統(tǒng)可以在同一時(shí)間執(zhí)行多個(gè)動(dòng)作。-151-入口動(dòng)作與出口動(dòng)作(Entry/Exit Actions) 入口動(dòng)作和出口動(dòng)作表示進(jìn)入或退出這個(gè)狀態(tài)所要執(zhí)行的動(dòng)作。入口動(dòng)作用“entry/要執(zhí)行的動(dòng)作”表達(dá),而出口動(dòng)作用“exit/要執(zhí)行的動(dòng)作”表達(dá)。do:用來(lái)指定處于狀態(tài)時(shí)發(fā)生的動(dòng)作;event:用來(lái)指定當(dāng)特定事件觸發(fā)時(shí)發(fā)生的動(dòng)作。-152-簡(jiǎn)單手表“設(shè)置時(shí)間” 的狀態(tài)圖-153-轉(zhuǎn)換轉(zhuǎn)換種類(lèi):外部轉(zhuǎn)換內(nèi)部轉(zhuǎn)換自轉(zhuǎn)換-154-外部轉(zhuǎn)換外部轉(zhuǎn)換是一種改變對(duì)象狀態(tài)的轉(zhuǎn)換,是

50、最常見(jiàn)的一種轉(zhuǎn)換。外部轉(zhuǎn)換對(duì)事件做出響應(yīng),引起狀態(tài)變化或自身轉(zhuǎn)換,同時(shí)引發(fā)一個(gè)特定動(dòng)作。外部轉(zhuǎn)換用從源狀態(tài)到目標(biāo)狀態(tài)的箭頭表示。 -155-內(nèi)部轉(zhuǎn)換 (Internal Transitions)內(nèi)部轉(zhuǎn)換對(duì)事件做出響應(yīng),并執(zhí)行一個(gè)特定的活動(dòng),但并不引起狀態(tài)變化,因此不需要執(zhí)行入口和出口動(dòng)作。內(nèi)部轉(zhuǎn)換和自轉(zhuǎn)換不同,雖然兩者都不改變狀態(tài)本身,但是自轉(zhuǎn)換會(huì)激發(fā)入口動(dòng)作和出口動(dòng)作的執(zhí)行,而內(nèi)部轉(zhuǎn)換卻不會(huì)。內(nèi)部轉(zhuǎn)換:用來(lái)處理一些不離開(kāi)該狀態(tài)的事件. -156-簡(jiǎn)單狀態(tài) (Simple State)簡(jiǎn)單狀態(tài)是指不包含其他狀態(tài)的狀態(tài)。簡(jiǎn)單狀態(tài)沒(méi)有子結(jié)構(gòu),但它可以具有內(nèi)部轉(zhuǎn)換、入口動(dòng)作和出口動(dòng)作等。 -157-

51、組成狀態(tài)(Composite State)組成狀態(tài)是可以包含一些嵌套的子狀態(tài)的狀態(tài)。組成狀態(tài)可以分解為并發(fā)子狀態(tài),或者分解為互相排斥的順序子狀態(tài)。組成狀態(tài)的一個(gè)入轉(zhuǎn)換代表對(duì)其嵌套子狀態(tài)區(qū)域內(nèi)的初始狀態(tài)的入轉(zhuǎn)換;對(duì)嵌套子狀態(tài)區(qū)域內(nèi)的終結(jié)狀態(tài)的轉(zhuǎn)換代表包含它的終止?fàn)顟B(tài)的相應(yīng)活動(dòng)的完成。 -158-嵌套的子狀態(tài)的分類(lèi)1. 順序子狀態(tài)(Sequence /Disjoint Substates)2. 并發(fā)子狀態(tài)(Concurrent Substates)-159-1. 順序子狀態(tài)(Sequence Substate)如果一個(gè)組成狀態(tài)的子狀態(tài)對(duì)應(yīng)的對(duì)象在其生命期內(nèi)的任何時(shí)刻都只能處于一個(gè)子狀態(tài),即多個(gè)子狀

52、態(tài)之間是互斥的,不能同時(shí)存在,這種子狀態(tài)稱(chēng)為順序子狀態(tài)。當(dāng)狀態(tài)機(jī)通過(guò)轉(zhuǎn)換從某種狀態(tài)轉(zhuǎn)入組成狀態(tài)時(shí),此轉(zhuǎn)換的目的可能是這個(gè)組成狀態(tài)本身,也可能是這個(gè)組成狀態(tài)的子狀態(tài)。例:-160-Example: State MachineHiredAssistantProfessorTenuredProfessorAppliedrejectedacceptedHiatusHHtakeSabbaticalretiredmaxPapersseniorityreturn-161-2. 并發(fā)子狀態(tài)(Concurrent Substate)有時(shí)組合狀態(tài)有兩個(gè)或者多個(gè)并發(fā)的子狀態(tài)機(jī),此時(shí)稱(chēng)組成狀態(tài)的子狀態(tài)為并發(fā)子狀態(tài)。

53、順序子狀態(tài)與并發(fā)子狀態(tài)的區(qū)別在于后者在同一層次給出兩個(gè)或多個(gè)并發(fā)子狀態(tài),對(duì)象處于同一層次中來(lái)自每個(gè)并發(fā)子狀態(tài)的一個(gè)時(shí)序狀態(tài)中。-162-并發(fā)子狀態(tài)例子-163-Compound State-164-狀態(tài)圖建模技術(shù)建模步驟:找出適合用模型描述其行為的類(lèi)。確定對(duì)象可能存在的狀態(tài)。確定引起狀態(tài)轉(zhuǎn)換的事件。確定轉(zhuǎn)換進(jìn)行時(shí)對(duì)象執(zhí)行的相應(yīng)動(dòng)作。對(duì)建模的結(jié)果進(jìn)行相應(yīng)的精化和細(xì)化。-165-狀態(tài)圖History StatesA History State is used to remember the previous state of a state machine when it was interrup

54、ted. 歷史狀態(tài)代表上次離開(kāi)組成狀態(tài)時(shí)的最后一個(gè)活動(dòng)子狀態(tài),它用一個(gè)包含字母“H”的小圓圈表示。每當(dāng)轉(zhuǎn)換到組成狀態(tài)的歷史狀態(tài)時(shí),對(duì)象便恢復(fù)到上次離開(kāi)該組成狀態(tài)時(shí)的最后一個(gè)活動(dòng)子狀態(tài),并執(zhí)行入口動(dòng)作。-166-WashingRinsingSpinningHPower OffPower CutRestore Power-167-活動(dòng)圖Activity Diagram用于描述活動(dòng)流程的圖形稱(chēng)為活動(dòng)圖 和結(jié)構(gòu)化方法中的工具程序流程圖作用基本一致。是一種特殊的狀態(tài)圖。與狀態(tài)圖的區(qū)別活動(dòng)圖著重表現(xiàn)從一個(gè)活動(dòng)到另一個(gè)活動(dòng)的控制流,是內(nèi)部處理驅(qū)動(dòng)的流程;狀態(tài)圖著重描述從一個(gè)狀態(tài)到另一個(gè)狀態(tài)的流程,主要有外部

55、事件的參與。-168-活動(dòng)圖活動(dòng)圖可以用作以下目的:說(shuō)明一次業(yè)務(wù)流程中的人(參與者)和對(duì)象是如何工作的。 顯示用例的實(shí)例如何執(zhí)行動(dòng)作以及如何改變對(duì)象狀態(tài)。描述一個(gè)操作執(zhí)行過(guò)程中所完成的工作(動(dòng)作)。描述對(duì)象內(nèi)部的工作。顯示如何執(zhí)行一組相關(guān)的動(dòng)作,以及這些動(dòng)作如何影響它們周?chē)膶?duì)象。-169-存款-170-活動(dòng)圖示例:打印過(guò)程-171-基本概念動(dòng)作狀態(tài)活動(dòng)狀態(tài)轉(zhuǎn)換分支分叉和匯合同步泳道對(duì)象流-172-狀態(tài)State狀態(tài)是指在對(duì)象的生命周期中滿(mǎn)足某些條件、執(zhí)行某些活動(dòng)或等待某些事件時(shí)的一個(gè)條件或狀況?;顒?dòng)圖中的狀態(tài)包括動(dòng)作狀態(tài)和活動(dòng)狀態(tài)。動(dòng)作狀態(tài)對(duì)象的動(dòng)作狀態(tài)是活動(dòng)圖中最小單位的構(gòu)造塊,表示原子動(dòng)

56、作。動(dòng)作狀態(tài)有三個(gè)特性:原子性;不可中斷性:瞬時(shí)性: -173-活動(dòng)狀態(tài)表示的是可以分割的動(dòng)作 特點(diǎn)是:它可以被分解成若干活動(dòng)狀態(tài)或動(dòng)作狀態(tài),它能夠被中斷,占有有限的時(shí)間。 活動(dòng)狀態(tài)可以理解為一個(gè)組合,它的控制流由其他活動(dòng)狀態(tài)或動(dòng)作狀態(tài)組成。動(dòng)作狀態(tài)和活動(dòng)狀態(tài)使用帶圓端的方框表示-174-活動(dòng)圖中也有初態(tài)和終態(tài)初態(tài)表示一個(gè)工作流程的開(kāi)始,用實(shí)心圓點(diǎn)來(lái)表示 終態(tài)表示了一個(gè)活動(dòng)圖的最后和終結(jié)狀態(tài),用實(shí)心圓點(diǎn)外加一個(gè)小圓圈來(lái)表示 -175-轉(zhuǎn)換(transition) 轉(zhuǎn)換是兩個(gè)狀態(tài)間的一種關(guān)系,表示對(duì)象將在當(dāng)前狀態(tài)中執(zhí)行動(dòng)作,并在某個(gè)特定事件發(fā)生或某個(gè)特定的條件滿(mǎn)足時(shí)進(jìn)入后繼狀態(tài)。 -176-分支

57、(Branch)分支用于描述基于某個(gè)條件的可選擇路徑。一個(gè)分支可以有一個(gè)進(jìn)入轉(zhuǎn)換和兩個(gè)或多個(gè)輸出轉(zhuǎn)換在每條輸出轉(zhuǎn)換上都有監(jiān)護(hù)條件表達(dá)式保護(hù),當(dāng)且僅當(dāng)監(jiān)護(hù)條件表達(dá)式為真時(shí),該輸出路徑才有效。在所有輸出轉(zhuǎn)換中,其監(jiān)護(hù)條件不能重疊,而且它們應(yīng)該覆蓋所有的可能性。分支在圖形表示上 用菱形表示 -177-分叉(fork)和匯合(join) 在UML中使用分叉和匯合表示并行發(fā)生的事件流分叉表示把一個(gè)單獨(dú)的控制流分成兩個(gè)或多個(gè)并發(fā)的控制流。一個(gè)分叉可以有一個(gè)進(jìn)入轉(zhuǎn)移和兩個(gè)或多個(gè)輸出轉(zhuǎn)移,每一個(gè)轉(zhuǎn)移表示一個(gè)獨(dú)立的控制流。 匯合表示兩個(gè)或多個(gè)并發(fā)控制流的同步發(fā)生,一個(gè)匯合可以有兩個(gè)或多個(gè)進(jìn)入轉(zhuǎn)移和一個(gè)輸出轉(zhuǎn)移。

58、 分叉和匯合在圖形上都使用同步條來(lái)表示,同步條通常用一條粗的水平線(xiàn)表示 -178-示例:描述打電話(huà)活動(dòng)中的并發(fā)事件-179-泳道(swimlane)“泳道”技術(shù),是將一個(gè)活動(dòng)圖中的活動(dòng)狀態(tài)進(jìn)行分組,每一組表示一個(gè)特定的類(lèi)、人或部門(mén),他們負(fù)責(zé)完成組內(nèi)的活動(dòng)。 “泳道”技術(shù)來(lái)描述每個(gè)活動(dòng)是由哪個(gè)對(duì)象負(fù)責(zé)完成 UML中,每個(gè)組被稱(chēng)為一個(gè)泳道,用一條垂直的實(shí)線(xiàn)與鄰居分開(kāi)每個(gè)活動(dòng)都明確屬于一個(gè)泳道,不可以跨越泳道,而轉(zhuǎn)移則可以跨越泳道-180-用活動(dòng)圖描述客戶(hù)在商店中購(gòu)買(mǎi)物品的過(guò)程。-181-對(duì)象流(object stream)對(duì)象流是動(dòng)作狀態(tài)或活動(dòng)狀態(tài)與對(duì)象間的依賴(lài)關(guān)系。對(duì)象流可用于對(duì)下列關(guān)系建模:動(dòng)

59、作狀態(tài)對(duì)對(duì)象的使用動(dòng)作狀態(tài)對(duì)對(duì)象的影響。 在UML中,使用矩形表示對(duì)象 , 對(duì)象和動(dòng)作之間使用帶箭頭的虛線(xiàn)連接,帶箭頭的虛線(xiàn)表示對(duì)象流。工具欄customize-182-用活動(dòng)圖描述客戶(hù)在商店中購(gòu)買(mǎi)物品的過(guò)程。(使用對(duì)象流技術(shù)描述購(gòu)物這個(gè)動(dòng)態(tài)過(guò)程中系統(tǒng)內(nèi)對(duì)象的狀態(tài)變化 )-183-活動(dòng)分解為子活動(dòng)Rose中演示-184-活動(dòng)圖建?;顒?dòng)圖的建模技術(shù)活動(dòng)圖用于對(duì)系統(tǒng)的動(dòng)態(tài)行為建模,在對(duì)一個(gè)系統(tǒng)建模時(shí),通常有兩種使用活動(dòng)圖的方式: 為工作流建模為對(duì)象的操作建模 -185-使用活動(dòng)圖對(duì)系統(tǒng)建模的步驟確定活動(dòng)圖所關(guān)注的業(yè)務(wù)流程。確定該業(yè)務(wù)流程中的業(yè)務(wù)對(duì)象。確定該工作流的起始狀態(tài)和終止?fàn)顟B(tài)。從該工作流的起

60、始狀態(tài)開(kāi)始,說(shuō)明隨著時(shí)間發(fā)生的動(dòng)作和活動(dòng),并在活動(dòng)圖中把它們表示成活動(dòng)狀態(tài)或動(dòng)作狀態(tài)。將復(fù)雜的動(dòng)作,或多次出現(xiàn)的動(dòng)作集合歸并到一個(gè)活動(dòng)狀態(tài),并對(duì)每個(gè)這樣的活動(dòng)狀態(tài)提供一個(gè)可展開(kāi)的單獨(dú)的活動(dòng)圖。找出連接這些活動(dòng)和動(dòng)作狀態(tài)的轉(zhuǎn)移。如果工作流中涉及重要的對(duì)象,則也把它們加入到活動(dòng)圖中。-186-實(shí)例:新增讀者用例屬于讀者信息管理中的一個(gè)功能,主要用于在系統(tǒng)中增加新的讀者信息,其具體的辦理流程是:(1)讀者填寫(xiě)申請(qǐng)表,并交給圖書(shū)管理員;(2)圖書(shū)管理員將申請(qǐng)表中的信息通過(guò)錄入界面,輸入到圖書(shū)管理系統(tǒng);(3)系統(tǒng)中的業(yè)務(wù)邏輯組件將判斷輸入的信息是否合法;(4)如果不合法則轉(zhuǎn)入步驟(5),否則轉(zhuǎn)入步驟(6

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論