UML (Unified Modeling Language)總結(jié)_第1頁
UML (Unified Modeling Language)總結(jié)_第2頁
UML (Unified Modeling Language)總結(jié)_第3頁
UML (Unified Modeling Language)總結(jié)_第4頁
UML (Unified Modeling Language)總結(jié)_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、UML- 1 -UML- 1 -UML復(fù)習(xí)UML- 2 -UML- 2 -目錄1. 前 言2. 用 例 圖3. 類 圖4. 順 序 圖5. 協(xié) 作 圖6. 狀 態(tài) 圖7. 活 動 圖8. 構(gòu) 件 圖9. 部 署 圖UML- 3 -前言UML概述UML簡介UML (Unified Modeling Language)為面向?qū)ο筌浖O(shè)計提供統(tǒng)一的、標(biāo)準(zhǔn)的、可視化的建模語言。適用于描述以用例為驅(qū)動,以體系結(jié)構(gòu)為中心的軟件設(shè)計的全過程。UML語義UML對語義的描述使開發(fā)者能在語義上取得一致認識,消除了因人而異的表達方法所造成的影響。 UML表示法UML表示法定義UML符號的表示法,為開發(fā)者或開發(fā)工具使

2、用這些圖形符號和文本語法為系統(tǒng)建模提供了標(biāo)準(zhǔn)。事物(Things)UML模型中最基本的構(gòu)成元素,是具有代表性的成分的抽象關(guān)系(Relationships)關(guān)系把事物緊密聯(lián)系在一起圖(Diagrams )圖是事物和關(guān)系的可視化表示UML- 4 -前言UML事物構(gòu)件事物分組事物行為事物注釋事物類:具有相同屬性、相同操作、相同關(guān)系、相同語義的對象的描述接口:描述元素的外部可見行為,即服務(wù)集合的定義說明協(xié)作:描述一組事物間相互作用的集合用例:代表一個系統(tǒng)或系統(tǒng)的一部分行為,是一組動作序列的集合構(gòu)件:系統(tǒng)中的物理存在,可替換的部件節(jié)點:運行中存在的物理元素交互:實現(xiàn)某功能的一組構(gòu)件事物之間的消息的集合,

3、涉及消息、動作序列、鏈接狀態(tài)機:描述事物或交互在生命周期內(nèi)響應(yīng)事件所經(jīng)歷的狀態(tài)序列包:把元素組織成組的機制注釋:對元素進行約束和解釋的簡單符號模型的靜態(tài)部分,描述概念或物理元素模型的動態(tài)部分,描述跨空間和時間的行為模型的組織部分,描述事物的組織結(jié)構(gòu)模型的解釋部分,對事物的內(nèi)容進行解釋UML- 5 -前言UML關(guān)系依賴一個事物(獨立事物)發(fā)生變化,會影響到另一個事物(依賴事物)02關(guān)聯(lián)一個事物的對象與另一個事物的對象間的聯(lián)系04實現(xiàn)類元之間的語義關(guān)系,其中的一個類元指定了由另一個類元保證執(zhí)行的契約03泛化一種特殊/一般的關(guān)系,也可以看作是常說的繼承關(guān)系01UML- 6 -用例圖( Use Cas

4、e Diagram ) 用例圖是從用戶角度描述系統(tǒng)功能, 是用戶所能觀察到的系統(tǒng)功能的模型圖,用例是系統(tǒng)中的一個功能單元 類圖描述系統(tǒng)中類的靜態(tài)結(jié)構(gòu)。不僅定義系統(tǒng)中的類,表示類之間的聯(lián)系如關(guān)聯(lián)、依賴、聚合等,也包括類的內(nèi)部結(jié)構(gòu)(類的屬性和操作) 類圖是以類為中心來組織的,類圖中的其他元素或?qū)儆谀硞€類或與類相關(guān)聯(lián) 類圖(Class Diagram)前言UML圖及特征UML- 7 -對象圖( Object Diagram )對象圖是類圖的實例,幾乎使用與類圖完全相同的標(biāo)識。他們的不同點在于對象圖顯示類的多個對象實例,而不是實際的類順序圖(Sequence Diagram)順序圖顯示對象之間的動態(tài)合

5、作關(guān)系,它強調(diào)對象之間消息發(fā)送的順序,同時顯示對象之間的交互 順序圖的一個用途是用來表示用例中的行為順序。當(dāng)執(zhí)行一個用例行為時,順序圖中的每條消息對應(yīng)了一個類操作或引起狀態(tài)轉(zhuǎn)換的觸發(fā)事件 前言UML圖及特征UML- 8 -協(xié)作圖(Collaboration Diagram) 協(xié)作圖描述對象間的協(xié)作關(guān)系,協(xié)作圖跟順序圖 相似,顯示對象間的動態(tài)合作關(guān)系。除顯示信息交換外,協(xié)作圖還顯示對象以及它們之間的關(guān)系. 協(xié)作圖的一個用途是表示一個類操作的實現(xiàn) 狀態(tài)圖(State Chart Diagram) 狀態(tài)圖是一個類對象所可能經(jīng)歷的所有歷程的模型圖。狀態(tài)圖由對象的各個狀態(tài)和連接這些狀態(tài)的轉(zhuǎn)換組成 Ava

6、ilable Locked Sold 初始狀態(tài) assigned to subscription lock time out unlock buy 狀態(tài) exchange 轉(zhuǎn)換 觸發(fā)器事件 前言UML圖及特征UML- 9 -活動圖(Activity Diagram)活動圖是狀態(tài)圖的一個變體,用來描述執(zhí)行算法的工作流程中涉及的活動活動圖描述了一組順序的或并發(fā)的活動 構(gòu)件圖(Component Diagram)構(gòu)件圖為系統(tǒng)的構(gòu)件建模型構(gòu)件即構(gòu)造應(yīng)用的軟件單元還包括各構(gòu)件之間的依賴關(guān)系,以便通過這些依賴關(guān)系來估計對系統(tǒng)構(gòu)件的修改給系統(tǒng)可能帶來的影響 前言UML圖及特征UML- 10 -部署部署圖圖(

7、Deployment Diagram)部署視圖描述位于節(jié)點實例上的運行構(gòu)件實例的安排。節(jié)點是一組運行資源,如計算機、設(shè)備或存儲器。這個視圖允許評估分配結(jié)果和資源分配各UML圖的關(guān)系前言UML圖及特征需求分析BDFD/DD用例圖順序圖用例圖類圖類圖用例文檔順序圖順序圖UML- 11 -類是對一組具有相同屬性、相同操作、相同關(guān)系和相同語義的對象的描述對象接口是描述了一個類或構(gòu)件的一個服務(wù)的操作集協(xié)作定義了一個交互,它是由一組共同工作以提供某種協(xié)作行為的角色和其他元素構(gòu)成的一個群體用例是對一組動作序列的描述主動類對象至少擁有一個進程或線程的類構(gòu)件是系統(tǒng)中物理的、可替代的部件參與者在系統(tǒng)外部與系統(tǒng)直接

8、交互的人或事物NewClassInterfaceusecase節(jié)點是在運行時存在的物理元素交互它由在特定語境中共同完成一定任務(wù)的一組對象間交換的消息組成狀態(tài)機它描述了一個對象或一個交互在生命期內(nèi)響應(yīng)事件所經(jīng)歷的狀態(tài)序列包把元素組織成組的機制注釋事物是UML模型的解釋部分依賴一條可能有方向的虛線關(guān)聯(lián)一條實線,可能有方向泛化一條帶有空心箭頭的實線實現(xiàn)一條帶有空心箭頭的虛線actorNewProcessorstateNewPackagecomponet前言UML語法描述UML- 12 - 判斷題1、UML中一共有九種圖:它們是用例圖、類圖、對象圖、順序圖、協(xié)作圖、狀態(tài)圖、活動圖、構(gòu)件圖、部署圖2、用

9、例圖是從程序員角度來描述系統(tǒng)的功能3、類圖是描述系統(tǒng)中類的靜態(tài)結(jié)構(gòu),對象圖是描述系統(tǒng)中類的動態(tài)結(jié)構(gòu)4、活動圖和狀態(tài)圖用來描述系統(tǒng)的動態(tài)行為5、協(xié)作圖的一個用途是表示一個類操作的實現(xiàn) 選擇題6、請在下面選項目中選出兩種可以互相轉(zhuǎn)換的圖 (a) 順序圖 (b)協(xié)作圖 (c) 活動圖 (d) 狀態(tài)圖7、下面哪些圖可用于BD階段 (a)用例圖 (b)構(gòu)件圖 (c)類圖 (d)順序圖前言UML習(xí)題UML- 13 -事物名稱解釋UML表示參與者(Actor) 在系統(tǒng)外部與系統(tǒng)直接交互的人或事物,如另一個計算機系統(tǒng)或一些可運行的進程; 參與者是角色(role)而不是具體的人,它代表了參與者在與系統(tǒng)打交道的過

10、程中所扮演的角色,所以在系統(tǒng)的實際運作中,一個實際用戶可能對應(yīng)系統(tǒng)的多個參與者,不同的用戶也可以只對應(yīng)于一個參與者,從而代表同一參與者的不同實例; 參與者作為外部用戶(而不是內(nèi)部)與系統(tǒng)發(fā)生交互作用,是它的主要特征。用例(Use Case) 系統(tǒng)外部可見的一個系統(tǒng)功能單元。系統(tǒng)的功能由系統(tǒng)單元所提供,并通過一系列系統(tǒng)單元與一個或多個參與者之間交換的消息所表達 。用例圖中的事物及解釋用例圖是被稱為參與者的外部用戶所能觀察到的系統(tǒng)功能的模型圖用例圖列出系統(tǒng)中的用例和系統(tǒng)外的參與者,并顯示哪個參與者參與了哪個用例的執(zhí)行用例圖多用于靜態(tài)建模階段(主要是業(yè)務(wù)建模和需求建模)。用例圖用例圖說明UML- 1

11、4 -關(guān)系解釋圖參與者與用例之間的關(guān)系關(guān)聯(lián)表示參與者與用例之間的交互,通信途徑。(關(guān)聯(lián)有時候也用帶箭頭的實線來表示,這樣的表示能夠顯示地表明發(fā)起用例的是參與者。)用例之間的關(guān)系包含箭頭指向的用例為被包含的用例,稱為包含用例;箭頭出發(fā)的用例為基用例。包含用例是必選的,如果缺少包含用例,基用例就不完整;包含用例必須被執(zhí)行,不需要滿足某種條件;其執(zhí)行并不會改變基用例的行為。擴展箭頭指向的用例為被擴展的用例,稱為擴展用例;箭頭出發(fā)的用例為基用例。擴展用例是可選的,如果缺少擴展用例,不會影響到基用例的完整性;擴展用例在一定條件下才會執(zhí)行,并且其執(zhí)行會改變基用例的行為。參與者之間的關(guān)系泛化發(fā)出箭頭的事物“

12、is a”箭頭指向的事物。泛化關(guān)系是一般和特殊關(guān)系,發(fā)出箭頭的一方代表特殊的一方,箭頭指向的一方代表一般一方。特殊一方繼承了一般方的特性并增加了新的特性。用例圖用例圖中的關(guān)系及解釋UML- 15 -實例1 參與者之間的泛化關(guān)系 參與者:經(jīng)理,安全主管,保安 用例:管理人事,批準(zhǔn)預(yù)算,批準(zhǔn)安全證書,監(jiān)視周邊在參與者之間不存在泛化關(guān)系的情況下,各個參與者參與用例的情況分別是:經(jīng)理參與用例管理人事和批準(zhǔn)預(yù)算;安全主管參與用例批準(zhǔn)安全證書;保安參與用例監(jiān)視周邊。由于安全主管與經(jīng)理,安全主管與保安之間泛化關(guān)系的存在,意味著安全主管可以擔(dān)任經(jīng)理和保安的角色,就能夠參與經(jīng)理和保安參與的用例。這樣,安全主管就

13、可以參與全部4個用例。但經(jīng)理或者保安卻不能擔(dān)任安全主管的角色,也就不能參與用例批準(zhǔn)安全證書。實例2 用例之間擴展和包含關(guān)系用例的上下文是:短途旅行但汽車的油不足以應(yīng)付全部路程。那么為汽車加油的動作在旅行的每個場景(事件流)中都會出現(xiàn),不加油就不會完成旅行。吃飯則可以由司機決定是否進行,不吃飯不會影響旅行的完成。用例圖例子UML- 16 -航空售票的用例圖參與者(actor):顧客,監(jiān)督員,信用卡服務(wù)商,信息亭用例(use case): 買票、預(yù)定, 收錢, 調(diào)查顧客參與(或稱發(fā)起)買票和預(yù)定兩個用例(關(guān)聯(lián)關(guān)系)。這兩個用例的事件流都包含Make 。收費用例(包含關(guān)系)。系統(tǒng)由:買票, 預(yù)定,

14、收費, 監(jiān)督組成。該系統(tǒng)主要面向的用戶(參與者):顧客,監(jiān)督員,信用卡服務(wù)商,信息亭。用例圖例子UML- 17 -1.右圖中的參與者有? (a) 1 (b) 2 (c) 3(d) 42.右圖中的用例有?(a) 1(b) 2(c) 3(d) 43.2和3之間是什么關(guān)系?5和6呢?(a) 擴展,包含 (b) 包含,擴展4.5缺少了3仍然是個完整的用例?(a) 是的(b) 不是5.4能夠參與2嗎?1能夠參與5嗎?(a) 可以,不可以 (b) 不可以,可以習(xí)題答案:1、(a)(d) 2、(b)(c) 3、(b) 4、(b) 5、(b)用例圖習(xí)題UML- 18 -UML- 18 - 類圖中的事物及解釋從

15、上到下分為三部分,分別是類名、屬性和操作。類名是必須有的類如果有屬性,則每一個屬性都必須有一個名字,另外還可以有其它的描述信息,如可見性、數(shù)據(jù)類型、缺省值等類如果有操作,則每一個操作也都有一個名字,其它可選的信息包括可見性、參數(shù)的名字、參數(shù)類型、參數(shù)缺省值和操作的返回值的類型等Account- balance : double = 1+ Deposit(amount : double) : int+ ComputeInterest() : double可見性-代表private+代表public#代表protected也可以使用圖形表示返回值類型操作名稱斜體為抽象操作缺省值類名斜體為抽象類屬性

16、名稱參數(shù)列表類圖以反映類的結(jié)構(gòu)(屬性、操作)以及類之間的關(guān)系為主要目的,描述了軟件系統(tǒng)的結(jié)構(gòu),是一種靜態(tài)建模方法類圖中的“類”與面向?qū)ο笳Z言中的“類”的概念是對應(yīng)的,是對現(xiàn)實世界中的事物的抽象類圖事物及解釋UML- 19 -UML- 19 -Shape(標(biāo)準(zhǔn)圖形)Shape+ Draw ()(變體圖形)接口Vehicle- fMaxSpeed : float+ Start() : int+ Stop() : int抽象類模版參數(shù)模版類接口一組操作的集合,只有操作的聲明而沒有實現(xiàn)抽象類不能被實例化的類,一般至少包含一個抽象操作模版類一種參數(shù)化的類,在編譯時把模版參數(shù)綁定到不同的數(shù)據(jù)類型,從而產(chǎn)生

17、不同的類類圖事物及解釋UML- 20 -UML- 20 -UML表示法角色類的角色是“事物“多重性(用數(shù)字和*表示)1*:1個或多個1個類圖有1個或多個類1個類屬于1個或多個類圖ClassDiagramClass+thing+diagram1.*1.*use1.*1.*方向雙向關(guān)聯(lián)(省略箭頭)名字關(guān)系的名字是“使用”實例聚合關(guān)系特殊關(guān)聯(lián)關(guān)系,指明一個聚集(整體)和組成部分之間的關(guān)系UML表示法UML表示法ThingClassDiagramRelation(空心菱形)類圖包含有事物和關(guān)系,類圖不存在了,事物和關(guān)系還可用于其它的類圖ClassAssociation(實心菱形)類與關(guān)聯(lián)關(guān)系之間有組合

18、關(guān)系,類不存在了,則相應(yīng)的關(guān)聯(lián)關(guān)系也不存在關(guān)聯(lián)關(guān)系描述了類的結(jié)構(gòu)之間的關(guān)系。具有方向、名字、角色和多重性等信息。一般的關(guān) 聯(lián)關(guān)系語義較弱。也有兩種語義較強,分別是聚合與組合類圖關(guān)系及解釋組合關(guān)系語義更強的聚合,部分和整體具有相同的生命周期UML- 21 -UML- 21 -UML表示法實現(xiàn)關(guān)系對應(yīng)于類和接口之間的關(guān)系UML表示法類Circle、Rectangle實現(xiàn)了接口Shape的操作Shape+ Draw ()Circle+ Draw ()Rectangle+ Drarw ()RelationAssociationGeneralizationRealizationDependency關(guān)聯(lián)、

19、泛化、實現(xiàn)、依賴都是一種關(guān)系ThingClassInterface類、接口都是一種事物泛化關(guān)系 在面向?qū)ο笾幸话惴Q為繼承關(guān)系,存在于父類與子類、父接口與子接口之間依賴關(guān)系描述了一個類的變化對依賴于它的類產(chǎn)生影響的情況。有多種表現(xiàn)形式, 例如綁定(bind)、友元(friend)等UML表示法模板類Stack定義了棧相關(guān)的操作;IntStack將參數(shù)T與實際類型int綁定,使得所有操作都針對int類型的數(shù)據(jù)類Memento和類Originator建立了友元依賴關(guān)系,以便Originator使用Memento的私有變量state類圖關(guān)系及解釋UML- 22 -UML- 22 -C+代碼class

20、Vehiclepublic: virtual int Start() = 0; virtual int Stop() = 0; virtual int Run(float fSpeed) = 0;private: float fMaxSpeed;Java代碼public abstract class Vehicle public abstract int Start(); public abstract int Stop(); public abstract int Run(float fSpeed); private float fMaxSpeed;Vehicleabstract - fMa

21、xSpeed : float+Start ()Stop ()Run (float fSpeed): int: int: int類的映射類圖類圖與代碼的映射UML- 23 -UML- 23 -關(guān)聯(lián)關(guān)系的映射 C+代碼class Dialog private: Button btnOK; Button btnCancel; TextBox txtInfo;class Button;class TextBox;組合關(guān)系,代碼表現(xiàn)為Dialog的屬性有Button和TextBox的對象TextBoxButtonDialog- btnOK : Button- btnCancel : Button- tx

22、tInfo : TextBox泛化關(guān)系的映射Java代碼public class SavingsAccount extends Account C+代碼class SavingsAccount : public Account ;類圖類圖與代碼的映射UML- 24 -UML- 24 -C+代碼class Shape public: virtual void Draw() = 0;class Circle : public Shapepublic: void Draw();private; Point ptCenter; int nRadius;Java代碼public interface Sh

23、ape public abstract void Draw();public class Circle implements Shapepublic void Draw();private Point ptCenter;private int nRadius;Shape+ Draw ()Circle-ptCenternRadius: Point: int+ Draw ()Rectangle-ptUpperLeftnWidthnHeight: Point: int: int+ Drarw ()在C+語言里面,使用抽象類代替接口,使用泛化關(guān)系代替實現(xiàn)關(guān)系在Java語言里面,有相應(yīng)的關(guān)鍵字inter

24、face、implements實現(xiàn)關(guān)系的映射 依賴關(guān)系的映射綁定依賴TStack- size : int+ Push(elem : T) : int+ Pop() : int+ GetTop() : const T&IntStackFloatStackC+代碼templateclass Stack private: int size;public: int Push(T elem); int Pop(); const T& GetTop();typedef Stack FloatStack;C+代碼(編譯器生成)class FloatStack private: int size;public

25、: int Push(float elem); int Pop(); const float& GetTop();類圖類圖與代碼的映射C+代碼class Shape public: virtual void Draw() = 0;class Circle : public Shapepublic: void Draw();private; Point ptCenter; int nRadius;Java代碼public interface Shape public abstract void Draw();public class Circle implements Shapepublic v

26、oid Draw();private Point ptCenter;private int nRadius;C+代碼templateclass Stack private: int size;public: int Push(T elem); int Pop(); const T& GetTop();typedef Stack FloatStack;UML- 25 -UML- 25 -Graphics: 基本圖形和組合圖形的父類,聲明了所有圖形共同的操作,如Draw;也聲明了專用于組合圖形管理子圖形的操作,如Add、RemoveLine、Rectangle: 基本圖形類GroupGraphic

27、s: 組合圖形類,與父類有組合關(guān)系,從而可以組合所有圖形對象(基本圖形和組合圖形)泛化組合組合模式 圖形編輯器 圖形編輯器一般都具有一些基本圖形,如直線、矩形等,用戶可以直接使用基本圖形畫圖,也可以把基本圖形組合在一起創(chuàng)建復(fù)雜圖形 如果區(qū)別對待基本圖形和組合圖形,會使代碼變得復(fù)雜,而且多數(shù)情況下用戶認為二者是一樣的 組合模式可以用相同的方式處理兩種圖形類圖示例UML- 26 -UML- 26 -演出售票系統(tǒng) 在用例驅(qū)動的開發(fā)過程中,通過分析各個用例及參與者得到類圖。分析用例圖的過程中需要根據(jù)面向?qū)ο蟮脑瓌t設(shè)計類和關(guān)系,根據(jù)用例的細節(jié)設(shè)計類的屬性和操作在這里只考慮以下三個用例:Buy ticke

28、ts: 買個人票Buy Subscription: 買套票Make charges: 信用卡付款信息亭 Clerk Buy tickets Buy Subscription 信用卡服務(wù)商 Make charges 監(jiān)督員 Survey sales 參與者 用例 Box Office 關(guān)系 SubscriptionSeriesseries : intIndividualReservationTicketno : int3.60.13.60.110.110.1Reservationdate : DateCustomername : stringphone : string1.*11.*1Seatn

29、o : intcolomn : introw : intavailable : bool1111Performanceno : intdate : Datetime : Time0.*10.*1CreditCardServiceCharge(cardnumber, cost)kjoskShowAvailability(seatlist)DemandPayment(cost)PrintTickets(performance, seats)EjectCard()BoxOfficeRequest(count, performance)Select(seats)InsertCard(cardnumbe

30、r, password)Authorized()用例圖類圖使用泛化關(guān)系處理客戶購買個人票和套票兩種不同情況設(shè)計類的屬性和操作類圖示例UML- 27 -UML- 27 -(1)哪兩個類之間存在組合關(guān)系Menu、MenuItem MenuItem、CommandCommand、OpenCommandCommand、PasteCommand(2)OpenCommand和PasteCommand是什么關(guān)系組合泛化聚合沒關(guān)系Command+ Execute()OpenCommand+ Execute()PasteCommand+ Execute()MenuItem- command : Command*

31、+ Click()1.*0.*1.*+executive0.*Menu+ Add(item : MenuItem)(3)編輯菜單(EditMenu)是一種菜單,下面哪個圖較好的描述了二者之間的關(guān)系(4)下面哪份代碼(C+)最接近于圖中對MenuItem的描述EditMenuMenu+ Add(item : MenuItem) Menu+ Add(item : MenuItem)EditMenuEditMenuMenu+ Add(item : MenuItem) Menu+ Add(item : MenuItem)EditMenuclass MenuItemprivate: virtual vo

32、id Click() =0;public: Command* command; class MenuItempublic: virtual void Click() = 0;private: Command* command; class MenuItemprivate: virtual void Click() = 0; void undo();public: Command* command;class menuitempublic: virtual void Click() = 0;private: Command* command; 右圖描述了菜單(Menu)、菜單項(MenuItem

33、)、抽象命令類(Command)和具體命令類(OpenCommand, PasteCommand)之間的關(guān)系,完成1-4題類圖習(xí)題UML- 28 -UML- 28 -右圖描述了圖形接口(Graphics)、線段(Segment)、矩形(Rectangle)、點(Point)和三維點(Point3D)之間的關(guān)系, 完成5-7題(5)下面哪個關(guān)系沒有在圖中出現(xiàn) 關(guān)聯(lián) 泛化 實現(xiàn) 依賴(6)下面對圖中四處的多重性的描述哪個不正確 0.* 1 0.* 1(7)下面哪份代碼(Java)最接近于圖中對Segment的描述public class Segment implements Graphicspri

34、vatc void Draw();public Point ptStart;public Point ptEnd;public class Segment extends Graphicspublic void Draw();private Point ptStart;private Point ptEnd;public class Segment implements Graphicsprivate Point ptStart;private Point ptEnd;public void Draw();public class segment implements graphicspubl

35、ic void Draw();private Point ptStart;private Point ptEnd;Graphics+ Draw ()Segment-ptStartptEnd: Point: Point+ Draw ()Rectangle-ptUpperLeftnWidthnHeight: Point: int: int+ Drarw ()Point-xy: int: int+ Draw ()Point3D-xyz: int: int: int+ Draw ()類圖習(xí)題UML- 29 -UML- 29 -UML- 29 -順序圖用來表示用例中的行為順序。當(dāng)執(zhí)行一個用例行為時,順序

36、圖中的每條消息對應(yīng)了一個類操作或狀態(tài)機中引起轉(zhuǎn)換的事件。順序圖展示對象之間的交互,這些交互是指在場景或用例的事件流中發(fā)生的。 順序圖屬于動態(tài)建模。 順序圖的重點在消息序列上,也就是說,描述消息是如何在對象間發(fā)送和接收的。表示了對象之間傳送消息的時間順序。瀏覽順序圖的方法是:從上到下查看對象間交換的消息。順序圖中的事物及解釋事物名稱解釋圖參與者與系統(tǒng)、子系統(tǒng)或類發(fā)生交互作用的外部用戶(參見用例圖定義)。對象順序圖的橫軸上是與序列有關(guān)的對象。對象的表示方法是:矩形框中寫有對象或類名,且名字下面有下劃線。生命線坐標(biāo)軸縱向的虛線表示對象在序列中的執(zhí)行情況(即發(fā)送和接收的消息,對象的活動)這條虛線稱為對

37、象的“生命線”。消息符號消息用從一個對象的生命線到另一個對象生命線的箭頭表示。箭頭以時間順序在圖中從上到下排列。順序圖事物及解釋UML- 30 -UML- 30 -UML- 30 -順序圖與用例圖和類圖的關(guān)系順序圖事物及解釋UML- 31 -UML- 31 -UML- 31 -從參與者到對象和從對象到參與者之間發(fā)送的消息從對象傳遞給另一個對象的消息在類圖中的類的對象使用系統(tǒng)的參與者,這個系統(tǒng)是為某個用例的某個場景設(shè)計的對象生命線表示從上到下的時間順序,消息1在消息2之前發(fā)生,消息2在消息3之前發(fā)生窄長方框用以強調(diào)這個部分處于活動狀態(tài)消息格式: operation (parameter list

38、) 向哪個對象發(fā)消息實際上就是調(diào)用它的類中的操作,就是調(diào)用箭頭指向的對象所在類的 一個operation。例:訂單類發(fā)消息給客戶類調(diào)用客戶類中的“驗證客戶”操作順序圖簡單示例UML- 32 -UML- 32 -UML- 32 -信息亭售票中心信用卡服務(wù)從這個例子中可以看出:Kjosk類中的操作有 Show Available (seat-list) Demand Payment (cost) printtickets (performance, seats) eject cardBox Office中的操作有 Request (count, performance) Select Seats

39、Insert Card (Card Number) authorizedCredit Card Service類中的操作有 charge(card number, cost) 此圖是描述購票這個用例的順序圖。顧客在信息亭與售票中心通話觸發(fā)了這個用例的執(zhí)行。順序圖中付款這個用例包括售票中心與信息亭和信用卡服務(wù)處使用消息進行通信過程。此圖中存在的事物有: 對象(信息亭 Kjosk ,售票中心 Box Office, 信用卡服務(wù) Credit Card Service ),生命線,消息符號。信息亭發(fā)Request (count, performance)消息給售票中心,表示調(diào)用售票中心類的Reque

40、st (count, performance)操作,來查詢演出的信息。售票中心發(fā)Show Available(seat-list)消息給信息亭,表示調(diào)用信息亭類中的Show Available(seat-list)操作,給出可用的座位表。順序圖復(fù)雜示例UML- 33 -UML- 33 -UML- 33 -1 指出左圖中的參與者?A B C D2 哪些是對象?A B C D3 Server類調(diào)用了CreditService類中的什么操作?A B C D1. A 2. B 3. B 順序圖練習(xí)UML- 34 -UML- 34 - 協(xié)作圖是一種交互圖,強調(diào)的是發(fā)送和接收消息的對象之間的組織結(jié)構(gòu),使用

41、協(xié)作圖來說明系統(tǒng)的動態(tài)情況。 協(xié)作圖主要描述協(xié)作對象間的交互和鏈接,顯示對象、對象間的鏈接以及對象間如何發(fā)送消息。 協(xié)作圖可以表示類操作的實現(xiàn)。UML- 34 -UML- 34 -協(xié)作圖中的事物及解釋事物名稱解釋圖參與者發(fā)出主動操作的對象,負責(zé)發(fā)送初始消息,啟動一個操作。對象對象是類的實例,負責(zé)發(fā)送和接收消息,與順序圖中的符號相同,冒號前為對象名,冒號后為類名。消息流(由箭頭和標(biāo)簽組成)箭頭指示消息的流向,從消息的發(fā)出者指向接收者。標(biāo)簽對消息作說明,其中,順序號指出消息的發(fā)生順序,并且指明了消息的嵌套關(guān)系;冒號后面是消息的名字。Actorfirstbuton:button標(biāo)簽協(xié)作圖中的關(guān)系及解

42、釋關(guān)系名稱解釋關(guān)系實例鏈接用線條來表示鏈接,鏈接表示兩個對象共享一個消息,位于對象之間或參與者與對象之間協(xié)作圖UML- 35 -UML- 35 -消息標(biāo)簽 消息標(biāo)簽的Format: 前綴 守衛(wèi)條件 序列表達式 返回值 := 消息名 前綴的語法規(guī)則: 序列號,序列號,序列號 / (前綴用來同步線程,意思是在發(fā)送當(dāng)前消息之前指定序列號的消息被處理.例:1.1a, 1.1b/) 守衛(wèi)條件的語法規(guī)則: 條件短句 說明:條件短句通常用偽代碼或真正的程序語言來表示。 例:x=0 返回值和消息名:返回值表示一個消息的返回結(jié)果,消息名指出了消息的名字和所需參數(shù)。 例:x:=calc ( n ) 下面是一個完整

43、的消息標(biāo)簽: 1.1a, 1.1b, 1.1c / x=0 1.2 *i:=1.n : x := calc( n ) 前綴 守衛(wèi)條件 序列表達式 返回值 := 消息名協(xié)作圖與順序圖的區(qū)別和聯(lián)系 協(xié)作圖和順序圖都表示出了對象間的交互作用,但是它們側(cè)重點不同。 順序圖清楚地表示了交互作用中的時間順序(強調(diào)時間),但沒有明確表示對象間的關(guān)系。 協(xié)作圖清楚地表示了對象間的關(guān)系(強調(diào)空間),但時間順序必須從順序號獲得。 協(xié)作圖和順序圖可以相互轉(zhuǎn)化。 (進行協(xié)作圖和順序圖的比較,請參考練習(xí)題2)協(xié)作圖UML- 36 -1. 打印操作的協(xié)作圖actor發(fā)送Print消息給Computer,Computer發(fā)

44、送Print消息給PrintServer,如果打印機空閑,PrintServer發(fā)送Print消息給printer2.乘坐電梯的協(xié)作圖:button:Elevator Control:Queue:Elevator:Ordernew : Actor1 : GetElevator(floorid)1.1 *all queues : len:=Length()1.3: Invoke(job)1.2: Create( )2: nextjob:=Get.job( )Push( )圖中存在的事物有: 參與者 按鈕對象 電梯控制對象 命令對象 工作隊列 電梯對象圖中存在的關(guān)系有: 鏈接 參與者需要乘坐電梯,

45、他從系統(tǒng)外部按下按鈕,讓電梯到達他想去的樓層。此時,電梯系統(tǒng)的操作被啟動,電梯控制對象以循環(huán)的方式檢查所有的電梯,從中選擇一個工作隊列長度最短的。然后,它創(chuàng)建一個作業(yè)命令,并將該命令放入對應(yīng)電梯的工作隊列,接著激活隊列。電梯對象并發(fā)運行,從它的隊列中選擇一個作業(yè)并執(zhí)行。電梯是一個活動對象,它與它的控制線程并發(fā)執(zhí)行。協(xié)作圖示例UML- 37 -1.請指出下面的消息標(biāo)簽各部分的內(nèi)容。1:display( ) A. 序列表達式:消息名 B.返回值:消息名 C.序列表達式:消息名mode=display 1.2.3.7: redraw( ) A.序列表達式 返回值 消息名 B.守衛(wèi)條件 序列表達式 消

46、息名2 *n:=a . . z : prim:=nextPrim(prim) A. 守衛(wèi)條件 序列表達式 消息名 B.序列表達式 返回值 消息名3.1 x0 : foo( ) A.序列表達式 守衛(wèi)條件 B.守衛(wèi)條件 消息名 C.序列表達式 消息名 1.1a, 1.1b/1.2 : continue( ) A. 前綴 序列表達式 消息名 B. 后綴 守衛(wèi)條件 消息名協(xié)作圖習(xí)題UML- 38 -:button:Elevator Control:Queue:Elevator:Ordernew : Actor1 : GetElevator(floorid)1.1 *all queues : len:=

47、Length()2: nextjob:=Get.job( )1.2: Create( )Push( )1.3: Invoke(job)3. 練習(xí)題答案1. A BBCA2. AA請對比本章中的協(xié)作圖與其相應(yīng)的順序圖,做練習(xí)題。請在下圖中指出,循環(huán)計算各個電梯的工作隊列長度的消息的順序號。A 1.1 B1.2 C1.3 D2請說明消息1.3所進行的操作Invoke(job),應(yīng)屬于哪個類所具有的方法。A Queue類 B ElevatorControl類 C Elevator類 D Button類 協(xié)作圖習(xí)題UML- 39 -狀態(tài)圖概要狀態(tài)圖說明對象在它的生命期中響應(yīng)事件所經(jīng)歷的狀態(tài)序列,以及它

48、們對那些事件的響應(yīng)。狀態(tài)圖用于揭示Actor、類、子系統(tǒng)和組件的復(fù)雜特性。 為實時系統(tǒng)建模。 狀態(tài)圖的組成狀態(tài)對象的狀態(tài)是指在這個對象的生命期中的一個條件或狀況,在此期間對象將滿足某些條件、執(zhí)行某些活動,或等待某些事件。轉(zhuǎn)移轉(zhuǎn)移是由一種狀態(tài)到另一種狀態(tài)的遷移。這種轉(zhuǎn)移由被建模實體內(nèi)部或外部事件觸發(fā)。對一個類來說,轉(zhuǎn)移通常是調(diào)用了一個可以引起狀態(tài)發(fā)生重要變化的操作的結(jié)果。狀態(tài)圖UML- 40 -狀態(tài)上格放置名稱,下格說明處于該狀態(tài)時,系統(tǒng)或?qū)ο笠龅墓ぷ?見可選活動表) 轉(zhuǎn)移轉(zhuǎn)移上標(biāo)出觸發(fā)轉(zhuǎn)移的事件表達式。如果轉(zhuǎn)移上未標(biāo)明事件,則表示在源狀態(tài)的內(nèi)部活動執(zhí)行完畢后自動觸發(fā)轉(zhuǎn)移 開始初始狀態(tài)(一個)

49、結(jié)束終態(tài)(可以多個)消息(屬性)條件/動作狀態(tài)圖中的事物及解釋轉(zhuǎn)換種類描述語法入口動作進入某一狀態(tài)時執(zhí)行的動作entry/action出口動作離開某一狀態(tài)時執(zhí)行的動作exit/action外部轉(zhuǎn)換引起狀態(tài)轉(zhuǎn)換或自身轉(zhuǎn)換,同時執(zhí)行一個具體的動作,包括引起入口動作和出口動作被執(zhí)行的轉(zhuǎn)換e(a:T)exp/action內(nèi)部轉(zhuǎn)換引起一個動作的執(zhí)行但不引起狀態(tài)的改變或不引起入口動作或出口動作的執(zhí)行e(a:T)exp/action狀態(tài)的可選活動表狀態(tài)圖UML- 41 -圖中包含以下狀態(tài)初始狀態(tài)Available狀態(tài)Locked狀態(tài)Sold狀態(tài) 狀態(tài)間的轉(zhuǎn)移初始狀態(tài)Available狀態(tài)票被預(yù)訂(lock)

50、:AvailableLocked預(yù)定后付款(buy):LockedSold預(yù)定解除(unlock):LockedAvailable預(yù)定過期(time out):LockedAvailable直接購買(assigned to):AvailableSold換其它票(exchang) ,該票重有效:SoldAvailable Available Locked Sold 初 始 狀 態(tài) assigned to subscription lock time out unlock buy 狀 態(tài) exchange 轉(zhuǎn) 換 觸 發(fā) 器 事 件 狀態(tài)圖示例UML- 42 -網(wǎng)上銀行登陸系統(tǒng)登陸要求提交個人社會

51、保險號(SSN)和密碼(PIN)經(jīng)驗證有效后登陸成功。登陸過程包括以下狀態(tài):初態(tài)(Initial state) 獲取社會保險號狀態(tài)(Getting SSN)獲取密碼狀態(tài)(Getting PIN)驗證狀態(tài)(Validating)拒絕狀態(tài)(Rejecting)終態(tài) (Final state)出發(fā)狀態(tài)動作到達狀態(tài)Initial state移動鼠標(biāo)到 SSNGetting SSNGetting SSN鍵入非tab鍵,顯示鍵入內(nèi)容Getting SSN鍵入tab鍵,或移動鼠標(biāo)到BINGetting PIN提交ValidatingGetting PIN鍵入非shift-tab鍵,顯示 “ * ”Getti

52、ng PIN鍵入shift-tab鍵,或移動鼠標(biāo)到SSNGetting SSN提交Validating Validating驗證提交信息有效,狀態(tài)轉(zhuǎn)移Final state驗證提交信息無效,顯示錯誤信息Rejecting Rejecting退出Final state重試,清除無效的SSN,PINGetting SSN狀態(tài)轉(zhuǎn)移的過程終態(tài)狀態(tài)圖示例UML- 43 -分析下面的狀態(tài)圖,回答問題下降狀態(tài)在第一層上升狀態(tài)向第一層下降空閑狀態(tài)上升到達到達上升超時下降到達第一層(1) 以下那些圖形元素是對狀態(tài)的描述?(a) 超時 (b) 到達 (c) 在第一層(2) 空閑狀態(tài) 超時后轉(zhuǎn)移到_狀態(tài)(a) 向第

53、一層下降(b) 上升狀態(tài) (c) 終態(tài)習(xí)題答案(1)(c)(2)(a)狀態(tài)圖習(xí)題UML- 44 - 描述系統(tǒng)的動態(tài)行為。 包含活動狀態(tài)(ActionState),活動狀態(tài)是指業(yè)務(wù)用例的一個執(zhí)行步驟或一個操作,不是普通對象的狀態(tài)。 活動圖適合描述在沒有外部事件觸發(fā)的情況下的系統(tǒng)內(nèi)部的邏輯執(zhí)行過程;否則,狀態(tài)圖更容易描述。 類似于傳統(tǒng)意義上的流程圖。 活動圖主要用于:業(yè)務(wù)建模時,用于詳述業(yè)務(wù)用例,描述一項業(yè)務(wù)的執(zhí)行過程;設(shè)計時,描述操作的流程。活動圖事物活動 (ActionState)動作的執(zhí)行起點 (InitialState)活動圖的開始終點(FinalState) 活動圖的終點對象流(Obje

54、ctFlowState)活動之間的交換的信息發(fā)送信號(signalSending)活動過程中發(fā)送事件,觸發(fā)另一活動流程接收信號(SignalReceipt)活動過程中接收事件,接收到信號的活動流程開始執(zhí)行泳道(SwimLane)活動的負責(zé)者活動圖UML- 45 -活動圖關(guān)系遷移(transition)活動的完成與新活動的開始分支(junction point)根據(jù)條件,控制執(zhí)行方向分叉(fork)以下的活動可并發(fā)執(zhí)行結(jié)合(join)以上的并發(fā)活動再此結(jié)合實例 一般的活動圖 本活動圖描述一個處理訂單的用例執(zhí)行過(1)執(zhí)行setup order(2)根據(jù)order的類型是執(zhí)行不同的分支: sing

55、le order:執(zhí)行assign seat、charge credit card subscription:同時執(zhí)行assignseats、debit account或 award bonus single order與subscription兩步可同時進行(3) 最后mail packet。狀態(tài)圖示例UML- 46 - 帶泳道的活動圖 本例為一個按活動職責(zé)(帶泳道)組織的處理訂單用例的活動圖(模型中的活動按職責(zé)組織)。活動被按職責(zé)分配到用線分開的不同區(qū)域(泳道): Customer Sales Stockroom (1)顧客要求服務(wù),Sales負責(zé)接收定 單,并提交到Stockroom (

56、2) Stockroom處理定單,與此同時, Customer付款,并由Sales處 Deliverorder至Customer。狀態(tài)圖示例UML- 47 -1. 請選擇下面所列的活動圖的事物中,表示信號的是( ),表示對象流的是( )。 A BCD 2. 關(guān)于右面的活動圖,下面的說法中不正確的是( )。 A aPrinter:Printer是信號。 B 操作開始從“刪除報文框”活動開始。 C 在“創(chuàng)建PS文件”和”刪除報文框”活動中 發(fā)送“print(file)”信號。 D 信號發(fā)送的方向是從左到右。 狀態(tài)圖習(xí)題UML- 48 -構(gòu)件圖用于靜態(tài)建模,是表示構(gòu)件類型的組織以及各種構(gòu)件之間依賴關(guān)

57、系的圖。構(gòu)件圖通過對構(gòu)件間依賴關(guān)系的描述來估計對系統(tǒng)構(gòu)件的修改給系統(tǒng)可能帶來的影響。構(gòu)件圖中的事物及解釋事物名稱含義圖例指系統(tǒng)中可替換的物理部分,構(gòu)件名字(如圖中的Dictionary)標(biāo)在矩形中,提供了一組接口的實現(xiàn)。外部可訪問到的服務(wù) (如圖中的Spell-check)。節(jié)點實例上的構(gòu)件的一個實例,冒號后是該構(gòu)件實例的名字(如圖中的RoutingList)。可替換的物理部分包括軟件代碼、腳本或命令行文件,也可以表示運行時的對象,文檔,數(shù)據(jù)庫等。節(jié)點(node)是運行時的物理對象,代表一個計算機資源。具體請參見教程“部署圖(deployment diagram)”部分。構(gòu)件圖中的關(guān)系及解釋關(guān)

58、系名稱含義圖例構(gòu)件向外提供的服務(wù)。構(gòu)件依賴外部提供的服務(wù)(由構(gòu)件到接口)。構(gòu)件圖UML- 49 -實例1.圖中的構(gòu)件名稱是Dictionary字典。該構(gòu)件向外提供兩個接口,即兩個服務(wù)Spell-check拼寫檢查、Synonyms同義詞。圖中“Planner計劃者”構(gòu)件向外提供一個“update更新”接口服務(wù)。同時,該構(gòu)件要求外部接口提供一個“Reservations預(yù)定”服務(wù)。實例2.構(gòu)件圖示例UML- 50 -圖中包括:顧客需要信息亭接口提供服務(wù)售票員需要職員接口提供服務(wù)信用卡付款需要信用卡代理提供服務(wù)職員接口需要預(yù)訂銷售、個人銷售和團體銷售提供服務(wù)管理接口需要數(shù)據(jù)庫狀態(tài)提供服務(wù)售票處需要

59、付款和購買提供服務(wù)等等圖中包括:信用卡付款提供付款服務(wù)票數(shù)據(jù)庫提供購買和狀態(tài)查詢服務(wù)售票處提供預(yù)訂購買、個人購買和團體購買服務(wù)購買個人票可以通過公用信息亭訂購也可直接向售票員購買,但購買團體票只能通過售票員。買票的人可以根據(jù)任意選擇預(yù)訂銷售或個人銷售或團體銷售中的一種方式,售票處為了方便銷售,需要信用卡付款服務(wù)的支持,同時也必然需要票數(shù)據(jù)庫處在有票可賣的狀況中。情景描述構(gòu)件圖示例UML- 51 -1. 構(gòu)件圖用于那種建模階段? A.動態(tài)建模B.靜態(tài)建模2. 一個構(gòu)件只能對特定的另一個構(gòu)件提供特定的一種服務(wù)。這種說法正確嗎?A.正確B.錯誤3. 構(gòu)件圖用于描述系統(tǒng)中各物理部件之間的服務(wù)的依賴提供關(guān)系。這種說法正確嗎? A.正確B.錯誤4. 構(gòu)件圖中實線箭頭表示服務(wù)的依賴,虛線箭頭表示服務(wù)的提供。這種說法正確嗎? A.正確B.錯誤 構(gòu)件圖習(xí)題UML- 52 -部署圖中的事物及解釋事物名稱解釋圖例節(jié)點用一長方體表示,長方體中左上角的文字是節(jié)點的名字 (如圖中的JoesMachine:PC) 。節(jié)點代表一個至少有存儲空間和執(zhí)行能力的計算資源。節(jié)點包括計算設(shè)備和(至少商業(yè)模型中的)人力資源或者機械處理資源,可以用描述符或?qū)嵗?。?jié)點定義了運行時對象和構(gòu)件實例(如圖中的Planner構(gòu)件實例)駐留的位置。系統(tǒng)中可替換的物理部分。外部可訪問的服務(wù)。構(gòu)件的一個實例。部署圖用于

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論