版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第3章 面向?qū)ο蠓椒ㄅcUML13.1 面向?qū)ο笙到y(tǒng)的概念3.2 統(tǒng)一建模語言UML概述3.3 UML的模型元素3.4 UML中的圖3.5 UML的元模型結(jié)構(gòu)1第3章 面向?qū)ο蠓椒ㄅcUML3.1 面向?qū)ο笙到y(tǒng)的概念22第3章 面向?qū)ο蠓椒ㄅcUML什么是對象客觀世界中的應(yīng)用問題面對的主體都是物理的或概念的實體。從這些實體出發(fā),分析實體的作用、責任以及它們之間協(xié)作,從而找出問題的解,是很自然的。面向?qū)ο蠹夹g(shù)就是適合用這種方式分析和解決問題的方法。它的基石就是問題領(lǐng)域中識別出來的各種對象。依賴這些對象提供的服務(wù)和對象之間相互的協(xié)同(關(guān)系),實現(xiàn)期望的功能。面向?qū)ο蠹夹g(shù)能夠在解決方案中直接模擬問題領(lǐng)域,
2、并與人類的思維習慣相一致。33第3章 面向?qū)ο蠓椒ㄅcUML什么是面向?qū)ο笕绻粋€系統(tǒng)是使用對象、類、繼承和消息通信這樣4個概念設(shè)計和實現(xiàn)的,則可認為這個系統(tǒng)是面向?qū)ο蟮?。面向?qū)ο笙到y(tǒng)的每個成分都應(yīng)是對象,計算是通過新對象的建立和對象之間的通信來執(zhí)行的。面向?qū)ο?對象+類+繼承+消息通信一個面向?qū)ο蟮某绦虻拿恳怀煞輵?yīng)是對象,計算是通過新的對象的建立和對象之間的通信來執(zhí)行的。44第3章 面向?qū)ο蠓椒ㄅcUML面向?qū)ο蠓缎偷奶攸c面向?qū)ο笙到y(tǒng)中的對象是數(shù)據(jù)抽象與過程抽象的綜合體。所謂過程抽象是指當使用某個過程時,無需關(guān)心過程內(nèi)部的實現(xiàn)細節(jié),只要知道如何調(diào)用該過程以及該過程完成什么功能即可。所謂數(shù)據(jù)抽象是
3、指使用結(jié)構(gòu)或記錄等方式把某個實體的數(shù)據(jù)集中起來,使得使用者能夠以單元為單位使用數(shù)據(jù)。面向?qū)ο蠓缎驮跀?shù)據(jù)抽象中組織過程抽象。55第3章 面向?qū)ο蠓椒ㄅcUML面向?qū)ο蠓缎偷奶攸c面向?qū)ο笙到y(tǒng)的狀態(tài)分別保存在各個對象的數(shù)據(jù)存儲中,而不是保存在一些全局變量中。系統(tǒng)解決問題的控制流包含在各個對象中的操作內(nèi)。并通過消息傳遞,控制流從一個對象轉(zhuǎn)移到另一個對象。算法被分布到各種實體中。通過執(zhí)行消息傳遞和對象中的操作實現(xiàn)算法的功能。66第3章 面向?qū)ο蠓椒ㄅcUML面向?qū)ο蟮奶攸c抽象性:對象包含數(shù)據(jù)抽象和行為抽象;封裝性:信息隱蔽(使用與實現(xiàn)分開);共享性:同一個類中所有對象共享相同的數(shù)據(jù)結(jié)構(gòu)和行為;同一應(yīng)用中的對
4、象通過繼承關(guān)系,共享共同的數(shù)據(jù)結(jié)構(gòu)和行為;不同應(yīng)用中的對象通過復(fù)用,共享數(shù)據(jù)結(jié)構(gòu)和行為。77第3章 面向?qū)ο蠓椒ㄅcUML面向?qū)ο笙到y(tǒng)具有的特色系統(tǒng)的定義從問題領(lǐng)域的實體出發(fā),與人類習慣的思維方式一致。搭建的系統(tǒng)結(jié)構(gòu)穩(wěn)定性好,修改可以局部化。系統(tǒng)及體系結(jié)構(gòu)可以使用構(gòu)件組裝,可復(fù)用性好。軟件系統(tǒng)容易理解,容易修改,容易測試,適合開發(fā)大型的軟件產(chǎn)品。軟件體系結(jié)構(gòu)嚴格按照信息(細節(jié))隱蔽的原則設(shè)計,產(chǎn)品可維護性好。88第3章 面向?qū)ο蠓椒ㄅcUML對象的定義對象是系統(tǒng)中描述客觀事物的實體,是構(gòu)成系統(tǒng)的一個基本單元,由一組屬性值和一組對屬性進行操作的服務(wù)組成。對象 = 對象名+數(shù)據(jù)(屬性)+操作(行為)屬
5、性表征了對象的靜態(tài)特征,一般通過封裝在對象內(nèi)部的數(shù)據(jù)存儲來定義。一旦對象的數(shù)據(jù)存儲都賦了值,這個對象的狀態(tài)就確定了。屬性值一般只能通過執(zhí)行對象的操作來改變。操作又稱為方法或服務(wù),它描述了對象執(zhí)行的功能。若通過消息傳遞,還可以為其他對象使用。99第3章 面向?qū)ο蠓椒ㄅcUML計算機屏幕上三個多邊形(20, 20)(56, 10)(23, 30)(46, 37)(50, 45)(10, 50)(35, 60)(35, 85)(50, 60)(50, 85)(60, 35)計算機窗口中的三個多邊形對象1010第3章 面向?qū)ο蠓椒ㄅcUML表示多邊形的3個對象triangle(10, 50)(20, 20
6、)(23, 30)drawmove(x, y)contains?(aPoint)quadrilateral1(46, 37)(50, 45)(60, 35)(56, 10)drawmove(x, y)contains?(aPoint)quadrilateral2(35, 60)(35, 85)(50, 85)(50, 60)drawmove(x, y)contains?(aPoint)表示多邊形的三個對象1111第3章 面向?qū)ο蠓椒ㄅcUML對象的分類對象可以分為5種: 物理對象(Physical Objects)-物理對象是最易識別的對象,通常可以在問題領(lǐng)域的描述中找到,它們的屬性可以標識和測
7、量。 角色對象(Roles)-一個實體的角色也可以抽象成一個單獨的對象。角色對象的操作是由角色提供的技能。 事件對象(Incidents)-一個事件是某種活動的一次“出現(xiàn)”。一個事件對象通常是一個數(shù)據(jù)實體,它管理“出現(xiàn)”的重要信息。事件對象的操作主要用于對數(shù)據(jù)的存取。1212第3章 面向?qū)ο蠓椒ㄅcUML對象的分類 交互對象(Interactions)-交互表示兩個對象之間的關(guān)系,這種類型的對象類似于在數(shù)據(jù)庫設(shè)計時所涉及的“關(guān)系”實體。當實體之間是多對多的關(guān)系時,利用交互對象可將其簡化為兩個一對多的關(guān)系。 規(guī)格說明對象(Specifications)-規(guī)格說明對象表明組合某些實體時的要求。規(guī)格說
8、明對象中的操作支持把一些簡單的對象組合成較復(fù)雜的對象。1313第3章 面向?qū)ο蠓椒ㄅcUML對象的特點 對象是消息處理的主體。對象之間是通過消息互相通信的。 對象是以數(shù)據(jù)為中心的。所有操作都與對象的屬性相關(guān),而且操作的結(jié)果往往與當時所處的狀態(tài)(屬性的值)有關(guān)。 實現(xiàn)了數(shù)據(jù)封裝。對象是一個黑盒,其屬性值對外不可見,被完全封裝在盒子內(nèi)部,對屬性值的訪問只能通過接口中定義的(公有)接口操作進行。為了使用對象內(nèi)的屬性值,只需知道屬性值的取值范圍和可以訪問該屬性的接口操作,無需知道表征屬性的具體數(shù)據(jù)結(jié)構(gòu)和操作的實現(xiàn)算法。1414第3章 面向?qū)ο蠓椒ㄅcUML對象的特點 模塊獨立性好。由于前3個特點,故對象內(nèi)
9、部各種成分彼此相關(guān),聯(lián)系緊密,內(nèi)聚性強。又由于完成對象功能所需的操作和相關(guān)數(shù)據(jù)結(jié)構(gòu)基本上都被封裝在對象內(nèi)部,形成了面向?qū)ο笙到y(tǒng)的基本模塊,因而它與外界的聯(lián)系較少,對象之間的耦合比較松散。 具有并行的特點。不同的對象各自獨立地處理自身的數(shù)據(jù),彼此通過發(fā)送消息、傳遞信息來完成通信。所以它們具有并行工作的特點。1515第3章 面向?qū)ο蠓椒ㄅcUML對象的兩個視圖設(shè)計視圖:把對象看做實體,產(chǎn)生有關(guān)實體的聲明,包括實體的屬性和可以執(zhí)行的操作,但不涉及實現(xiàn)功能的一系列動作。實現(xiàn)視圖:用對象表示在應(yīng)用程序代碼中的實體,是數(shù)據(jù)存儲與相關(guān)操作的統(tǒng)一的封裝體,是數(shù)據(jù)抽象和過程抽象的實例化。1616第3章 面向?qū)ο蠓?/p>
10、法與UML類與封裝類(Class)是一組具有相同結(jié)構(gòu)、相同服務(wù)、共同關(guān)系和共同語義的對象集合。類的定義包括類名、一組數(shù)據(jù)屬性和在數(shù)據(jù)上的一組合法操作。類名quadrilateral1(46, 37)(50, 45)(60, 35)(56, 10)drawmove(x, y)contains?(aPoint)quadrilateral2(35, 60)(35, 85)(50, 85)(50, 60)drawmove(x, y)contains?(aPoint)quadrilateralpoint1point2point3point4屬性draw服務(wù)move(x, y)contains?(aPoi
11、nt)17由兩個四邊形對象導(dǎo)出一個類17第3章 面向?qū)ο蠓椒ㄅcUML繼承(inheritance)如果某幾個類之間具有共性的東西 (屬性和行為),抽取出來放在一個泛化類中,將各個類的特有的東西放在特化類中分別描述,則可建立起特化類對泛化類的繼承。繼承是使用已有的類定義做為基礎(chǔ)建立新類的定義技術(shù)。已有的類可當做泛化類(父類)來引用,則新類相應(yīng)地可當做特化類(子類)來引用。1818第3章 面向?qū)ο蠓椒ㄅcUML繼承(inheritance)建立繼承結(jié)構(gòu)的好處:易編程、易理解, 代碼短, 結(jié)構(gòu)清晰易修改, 共同部分只要在一處修改即可易增加新類, 只須描述不同部分怎樣建立一個好的繼承層次類可以從父類繼承
12、,父類又可以從它的父類繼承,形成多層次的繼承結(jié)構(gòu)。當增加一個新類時,不一定在最低層,可能需要插在中間層,這樣可能需要調(diào)整原來的層次結(jié)構(gòu)。1919第3章 面向?qū)ο蠓椒ㄅcUML繼承(inheritance)汽車大轎車載重車救火車起重車a) 建立一個新類起重車。它的底盤、發(fā)動機、輪胎、驅(qū)動裝置等都在已有類汽車中。關(guān)系如右圖所示。新類是已有類的特殊情形。這時直接讓起重車類作為汽車類的子類即可。起重車類汽車類2020第3章 面向?qū)ο蠓椒ㄅcUML繼承(inheritance)b) 增加一個新類拖拉機。它的底盤、發(fā)動機等與汽車不同,但驅(qū)動裝置、輪胎等與汽車相同。調(diào)整繼承結(jié)構(gòu)。建立一個新的一般的車輛類,把拖拉
13、機與汽車類的共性放到車輛類中,拖拉機與汽車類都成為車輛類的子類。車輛是抽象類,相關(guān)操作到子類汽車找。汽車車輛拖拉機汽車拖拉機2121第3章 面向?qū)ο蠓椒ㄅcUML繼承(inheritance)c) 另一種情形是在已有類的基礎(chǔ)上加入新類,使得新類成為已有類的泛化類。例如,已經(jīng)存在三角形類,四邊形類,想加入一個多邊形類,并使之成為三角形和四邊形類的泛化類。多邊形三角形類多邊形類四邊形類三角形四邊形六邊形2222第3章 面向?qū)ο蠓椒ㄅcUML繼承(inheritance)d) 前三個情況主要是通過查找(應(yīng)用領(lǐng)域)類庫,找到可以原封不動地繼承的類或可以通過調(diào)整繼承層次結(jié)構(gòu)繼承的類。但如果在已有的繼承層次中
14、找不到可以繼承的已有類,就從新開始完全獨立地建立一個類。2323第3章 面向?qū)ο蠓椒ㄅcUML多繼承如果一個類需要用到多個現(xiàn)有類的特征,可以從多個類中繼承,稱為多繼承。例如退休教師是繼承退休者和教師這兩個類的某些特征或行為而得到的一個新類。退休者教師退休教師2424第3章 面向?qū)ο蠓椒ㄅcUML繼承的種類 取代繼承。如“窗口”和“Windows窗口”的關(guān)系,任何需要“窗口”的地方都可以用“Windows窗口”來代替。 內(nèi)容繼承。例如“四邊形”與“矩形”的關(guān)系,“四邊形”包括了“矩形”。 受限繼承。如“鴕鳥”是一種特殊的“鳥”,它不能繼承“鳥”的“會飛”的特性。 特化繼承。如“汽車”與“起重車”的關(guān)
15、系。2525第3章 面向?qū)ο蠓椒ㄅcUML多態(tài)性和動態(tài)綁定對象互相通信,即一個對象發(fā)消息給另一個對象,執(zhí)行某些行為或又發(fā)消息給另外的對象,從而執(zhí)行系統(tǒng)的功能。多態(tài)性指同名的函數(shù)或操作可在不同類型的對象中有各自相應(yīng)的實現(xiàn)。例如a)整數(shù)“+”:整數(shù)加法b)浮點數(shù)“+”:浮點數(shù)加法c)字符串“+”:字符串連接d)點“+”:兩個點的坐標位置分別疊加具有多態(tài)的函數(shù)或操作在運行時才根據(jù)實際的對象類型,執(zhí)行相應(yīng)實現(xiàn)程序的連接,此即動態(tài)綁定。2626第3章 面向?qū)ο蠓椒ㄅcUML多態(tài)性實現(xiàn)的種類 利用繼承關(guān)系把所有數(shù)據(jù)類型當做一個抽象數(shù)據(jù)類型的子類型。動態(tài)綁定保證在程序執(zhí)行時實施與實例連接的操作。 利用模板機制把
16、所有可能的數(shù)據(jù)類型用一個參數(shù)化的數(shù)據(jù)類型來代替。2727第3章 面向?qū)ο蠓椒ㄅcUML消息通信消息是一個對象向另一個對象傳遞的信息。有4類消息:發(fā)送對象請求接收對象提供服務(wù)。發(fā)送對象激活接收對象。發(fā)送對象詢問接收對象。發(fā)送對象僅傳送信息給接收對象。2828第3章 面向?qū)ο蠓椒ㄅcUML消息通信消息的使用類似于函數(shù)調(diào)用,消息中指定了某一個實例、一個操作名和一個參數(shù)表(可能是空的),接收消息的實例執(zhí)行消息中指定的操作,并將形式參數(shù)與參數(shù)表中相應(yīng)的值結(jié)合起來。系統(tǒng)功能的實現(xiàn)就是一組對象通過執(zhí)行對象自身的操作和消息通信來完成的。2929第3章 面向?qū)ο蠓椒ㄅcUML對象生存周期對象的生存周期屬于對象的實現(xiàn)視
17、圖。在程序執(zhí)行過程中,它們根據(jù)需要被創(chuàng)建;一旦它們的使命完成不再需要它們時,對象將被銷毀。從這個意義上講,對象具有動態(tài)性。對象的創(chuàng)建稱為實例化。對象具有狀態(tài)和行為。對象的狀態(tài)保存在對象內(nèi)部的屬性中,對象的行為通過相關(guān)的操作來表現(xiàn)。對象之間可以并行工作,各自獨立處理自己的數(shù)據(jù),同時改變自己的狀態(tài)。對象之間還具有通信能力,它們通過互相發(fā)送消息進行通信,協(xié)同完成工作流程。3030第3章 面向?qū)ο蠓椒ㄅcUML3.2 統(tǒng)一建模語言UML概述3131第3章 面向?qū)ο蠓椒ㄅcUML什么是建模所謂建模就是對現(xiàn)實的簡化或抽象,它濾掉了非本質(zhì)的細節(jié),集中描繪復(fù)雜問題或結(jié)構(gòu)的本質(zhì),使得問題更容易理解。模型可以幫助人們
18、按照實際情況或按照人們所需要的樣式對系統(tǒng)進行直觀的描繪;模型允許人們細致地說明系統(tǒng)的結(jié)構(gòu)和行為;模型給出一個指導(dǎo)人們構(gòu)造系統(tǒng)的模板;模型可以通過文檔的方式把人們的決策正式記載下來。建模是系統(tǒng)成功的一個基本因素。3232第3章 面向?qū)ο蠓椒ㄅcUML建模過程原則 選擇創(chuàng)建的模型應(yīng)能反映所要處理和解決的問題。 根據(jù)觀察者的角色和觀察的原因,可選擇用不同詳細程度表示的模型。 模型建造要基于現(xiàn)實、反映現(xiàn)實。 為了完整地理解和表達系統(tǒng),需要用一組從不同視角描述系統(tǒng)的模型。 構(gòu)造模型的基本技術(shù)是抽象,應(yīng)抓住與問題有關(guān)的主要特征,從抽象到具體,逐步引進問題詳細可行的解決方案。3333第3章 面向?qū)ο蠓椒ㄅcUM
19、L建模過程原則 不要追求絕對的真實和完美,只須從預(yù)期目標的角度看其是否充分。 應(yīng)當分階段刻畫問題的關(guān)鍵方面,略去相對次要的因素。 建模語言應(yīng)支持人的由模糊到清晰、由粗到細、逐漸完善的認識過程。 應(yīng)采用可視化圖形建模語言,例如UML。3434第3章 面向?qū)ο蠓椒ㄅcUMLUML發(fā)展歷史UML(Unified Modeling Language)是一種定義良好、易于表達、功能強大且普遍適用的建模語言。它融入了軟件工程領(lǐng)域的新思想、新方法和新技術(shù)。它的作用域不僅支持面向?qū)ο笙到y(tǒng)的分析與設(shè)計,還支持從需求分析開始的系統(tǒng)開發(fā)的全過程。20世紀90年代,有3種著名方法是OMT(Rumbaugh)、Booch
20、和OOSE(Jacobson)。每種方法都有自己的開發(fā)過程、表示符號和側(cè)重點。OMT的強項在分析,而弱項在設(shè)計;Booch 91的強項在設(shè)計,而弱項在分析;OOSE的強項在行為分析,而弱項在其他領(lǐng)域。3535第3章 面向?qū)ο蠓椒ㄅcUML36第3章 面向?qū)ο蠓椒ㄅcUMLUML的特點 統(tǒng)一標準。融合了當前一些流行的面向?qū)ο箝_發(fā)方法的主要概念和技術(shù),成為一種面向?qū)ο蟮臉藴驶慕y(tǒng)一建模語言。提供了標準的面向?qū)ο蟮哪P驮氐亩x和表示法,有標準的語言工具可用。已成為工業(yè)標準化組織OMG的正式標準。 面向?qū)ο蟆ML支持面向?qū)ο蠹夹g(shù)的主要概念,它提供了一批基本的表示模型元素的圖形和方法,能簡潔明了地表達面
21、向?qū)ο蟮母鞣N概念和模型元素。3637第3章 面向?qū)ο蠓椒ㄅcUMLUML的特點 可視化,表達能力強大。一種圖形化語言,系統(tǒng)的邏輯模型和實現(xiàn)模型都能用UML的模型圖形清晰地表示??梢蕴幚砼c軟件的說明和文檔有關(guān)的問題。提供了語言的擴展機制,用戶可以根據(jù)需要增加定義自己的衍型(StereoType)、標記值和約束等。可用于各種復(fù)雜類型的軟件系統(tǒng)的建模。3738第3章 面向?qū)ο蠓椒ㄅcUMLUML的特點 獨立于過程。UML是系統(tǒng)建模語言,不依賴特定的開發(fā)過程。 容易掌握使用。UML概念明確,建模表示法簡潔明了,圖形結(jié)構(gòu)清晰,容易掌握使用。只要著重學習3個方面的主要內(nèi)容(UML的基本模型元素、組織模型元素的
22、規(guī)則、UML語言的公共機制),基本就了解了UML,剩下的就是實踐的問題了。 與編程語言的關(guān)系。 可自動生成Java,C+的代碼框架3839第3章 面向?qū)ο蠓椒ㄅcUMLUML的視圖一個軟件系統(tǒng)往往可以從不同的角度對其進行觀察,從某個角度觀察到的系統(tǒng)就構(gòu)成了系統(tǒng)的一個視圖。每個視圖都是整個系統(tǒng)描述的一個投影,若干個不同的視圖可以完整地描述出所建造的系統(tǒng)。每種視圖用若干幅圖來描述,一幅圖包含了系統(tǒng)的某一特殊方面的信息。3940第3章 面向?qū)ο蠓椒ㄅcUMLUML的構(gòu)成UML的三個主要組成元素1)基本構(gòu)造塊(basic building blocks )2)組織構(gòu)造塊的規(guī)則(rules)3)運用于整個U
23、ML的公共機制(common mechanisms)UML包括三種基本構(gòu)造塊:1)事物(things)2)關(guān)系(relationships)3)圖(diagrams)4041第3章 面向?qū)ο蠓椒ㄅcUMLUML視圖的4個主題域結(jié)構(gòu)主題域描述了系統(tǒng)中的結(jié)構(gòu)成員及其相互關(guān)系,包括靜態(tài)視圖、設(shè)計視圖和用例視圖;動態(tài)主題域描述了系統(tǒng)的行為或其他隨時間變化的行為,包括狀態(tài)機視圖、活動視圖和交互視圖;物理主題域描述了系統(tǒng)中的計算資源及其總體結(jié)構(gòu)上的部署,包括部署視圖;模型管理主題域描述層次結(jié)構(gòu)中模型自身的組織(利用包來組織模型),包括模型管理視圖和剖面。4142第3章 面向?qū)ο蠓椒ㄅcUMLUML的視圖 用例
24、視圖(Use Case View) 用例視圖由一組用例圖構(gòu)成,其基本組成部件是用例、參與者和系統(tǒng),用于從系統(tǒng)的外部視角描述參與者與系統(tǒng)的交互,進行系統(tǒng)的功能建模。 靜態(tài)視圖(Static View) 靜態(tài)視圖用類圖表示,主要描述系統(tǒng)中的類以及類之間的相互關(guān)系。它用于建立系統(tǒng)的邏輯結(jié)構(gòu)模型(應(yīng)用領(lǐng)域的視角)與物理結(jié)構(gòu)模型(系統(tǒng)實現(xiàn)的視角)。 設(shè)計視圖(Design View) 設(shè)計視圖由一組內(nèi)部結(jié)構(gòu)圖、通信圖和構(gòu)件圖實現(xiàn)。它用于對應(yīng)用系統(tǒng)自身的設(shè)計層面的結(jié)構(gòu)建模。4243第3章 面向?qū)ο蠓椒ㄅcUMLUML的視圖 狀態(tài)機視圖(State Machine View) 狀態(tài)機視圖用狀態(tài)機圖表示。每個狀
25、態(tài)機圖用于對一個類實例的整個生存周期的個體行為建模,它描述了該實例的一組狀態(tài)和這些狀態(tài)之間的遷移。 活動視圖(Activity View) 活動視圖用活動圖表示?;顒訄D相當于傳統(tǒng)的程序流程圖的作用,用于描述一個系統(tǒng)或子系統(tǒng)的工作流,或者描述某一算法中計算活動的控制流。 交互視圖(Interaction View) 交互視圖可用順序圖和通信圖表示,描述系統(tǒng)中一組對象如何通過消息傳遞,共同協(xié)作來實現(xiàn)某一個用例或構(gòu)件的功能。4344第3章 面向?qū)ο蠓椒ㄅcUMLUML的視圖 部署視圖(Deployment View) 部署視圖用部署圖表示,部署圖描述了運行時結(jié)點(如計算機等物理設(shè)備資源)的配置及其連接
26、,以及各種制品在結(jié)點網(wǎng)絡(luò)上的分布。制品是一個物理實現(xiàn)單元,如一個文件,它也可以表示一個或多個構(gòu)件的實現(xiàn)。 模型管理視圖(Model Managernent View) 模型管理視圖對模型自身的組織建模。一個模型由一組保存模型元素(如類、狀態(tài)機、用例)的包組成。包還可以包含其他的包,因此,一個模型從一個間接包含所有模型內(nèi)容的根包(Root Package)開始。包是操縱模型內(nèi)容的單元,還是訪問控制和配置控制的單元。每個模型元素可以被一個包或另一個元素擁有。模型管理信息通常展示在包圖中,它是類圖的變種。 剖面(Profile) UML是用一個元模型(Meta-model)定義的。元模型是指描述建模
27、語言自身的模型。剖面機制允許在不修改基本元模型的前提下對UML作有限的變化。4445第3章 面向?qū)ο蠓椒ㄅcUMLUML的視圖UML包含3個主要的可擴展結(jié)構(gòu):約束是以自然語言或特定形式語言書寫的對語義的限制或條件,一般把約束寫在花括號中,如 value 0 、 or 等。構(gòu)造型也叫做衍型,可追加在其他模型元素之上,使原來的模型元素變成具有特定語義的新變種。它本質(zhì)上是一種新元類(Metaclass)。一般用 標記構(gòu)造型,如signal。標簽值是貼在任何模型元素上被命名的信息片。4546第3章 面向?qū)ο蠓椒ㄅcUML47第3章 面向?qū)ο蠓椒ㄅcUML3.3 UML的模型元素4648第3章 面向?qū)ο蠓椒ㄅc
28、UMLUML的事物事物是對模型中最具代表性成分的抽象。在UML中,可以將事物分為結(jié)構(gòu)事物、行為事物、分組事物和注釋事物4類。4749第3章 面向?qū)ο蠓椒ㄅcUMLUML的事物origin(24,20)(f)用例size(12,8)suspend()flush()(c)對象open()close()windowsEventManagerdata:windowsPalce Ordermove()display()(a)類(b)主動類ISpelling(d)接口(e)狀態(tài)機Initializing(g)參與者OrderManegement(h)協(xié)作Orderform.Java(i)構(gòu)件Applicat
29、ionServer(j)結(jié)點UserInterfacePackage(k)包See policy.doc(l)注釋UML的基本事物50第3章 面向?qū)ο蠓椒ㄅcUMLUML的事物1結(jié)構(gòu)事物結(jié)構(gòu)事物是UML模型的靜態(tài)部分,主要用來描述概念的或物理的元素,包括類、主動類、接口、用例、協(xié)作、構(gòu)件和結(jié)點等。 類(Class)- 類用帶有類名、屬性和操作的矩形框來表示。類名Windoworiginsizeopen( )close( )move( )display( )屬性操作4851第3章 面向?qū)ο蠓椒ㄅcUMLUML的事物 對象(Object)- 對象是類的實例,在使用時需在其名字下邊加下劃線,對象的屬性值
30、需明確給出。 接口(Interface)- 描述了一個類或構(gòu)件的一組外部可用的服務(wù)(操作)集。接口定義的是一組操作的描述,而不是操作的實現(xiàn)。供口需口4952第3章 面向?qū)ο蠓椒ㄅcUMLUML的事物 主動類(Active Class)- 主動類的實例應(yīng)具有一個或多個進程或線程,能夠啟動控制活動。在圖形上,為了與普通類區(qū)分,主動類用兩側(cè)加邊框的矩形表示。EventManagersuspend()flush()5053第3章 面向?qū)ο蠓椒ㄅcUMLUML的事物 用例(Use Case)- 亦稱用況,用于表示系統(tǒng)想要實現(xiàn)的行為,即描述一組動作序列(即場景)。而系統(tǒng)執(zhí)行這組動作后將產(chǎn)生一個對特定參與者有價
31、值的結(jié)果。在圖形上,用例用一個僅包含其名字的實線橢圓表示。Place Order實現(xiàn)用例OrderManagement協(xié)作5154第3章 面向?qū)ο蠓椒ㄅcUMLUML的事物 參與者(Aotor)- 亦稱行動者或角色。參與者定義了一組與系統(tǒng)有信息交互關(guān)系的人、事、物,在圖形上用一個簡化的小人表示。 協(xié)作(Collaboration)- 用例僅描述要實現(xiàn)的行為,不描述這些行為的實現(xiàn)。這種實現(xiàn)用協(xié)作描述。協(xié)作定義了一個交互,描述一組角色實體和其他實體如何通過協(xié)同工作來完成一個功能或行為。在圖形上,協(xié)作用一個僅包含名字的虛線橢圓表示 。Actor5255第3章 面向?qū)ο蠓椒ㄅcUMLUML的事物 構(gòu)件(C
32、omponent)- 亦稱組件,是系統(tǒng)中物理的、可替代的部件。它通常是一個描述了一些邏輯元素的物理包。在圖形上,構(gòu)件用一個帶有小方框的矩形來表示。Orderform.java5356第3章 面向?qū)ο蠓椒ㄅcUMLUML的事物 結(jié)點(Node)- 是在運行時存在的物理元素。它代表一種可計算的資源,通常具有一定的記憶能力和處理能力。在圖形上,結(jié)點用立方體來表示。應(yīng)用服務(wù)器數(shù)據(jù)庫服務(wù)器課程管理成績管理5457第3章 面向?qū)ο蠓椒ㄅcUMLUML的事物2行為事物行為事物是UML模型的動態(tài)部分,包括交互和狀態(tài)機兩類。 交互(Interaction)交互由在特定的上下文環(huán)境中共同完成一定任務(wù)的一組對象之間傳遞
33、的消息組成。交互涉及的元素包括消息、動作序列和鏈。有名對象Assign(development)p:Person:Company消息匿名對象5558第3章 面向?qū)ο蠓椒ㄅcUMLUML的事物 狀態(tài)機(State Machine)狀態(tài)機描述了一個對象或一個交互在生存周期內(nèi)響應(yīng)事件所經(jīng)歷的狀態(tài)序列。狀態(tài)機涉及的元素包括狀態(tài)、轉(zhuǎn)換、事件活動等。狀態(tài)用圓角矩形來表示。KeypressinitializingcommandExitidleFinished5659第3章 面向?qū)ο蠓椒ㄅcUMLUML的事物3分組事物分組事物是UML模型的組織部分。它的作用是降低模型的復(fù)雜性。包(Package)- 是把模型元素
34、組織成組的機制,結(jié)構(gòu)事物、行為事物甚至其他分組事物都可以放進包內(nèi)。包不像構(gòu)件(僅在運行時存在),它純粹是概念上的(即它僅在開發(fā)時存在)。用戶接口包應(yīng)用包業(yè)務(wù)對象包5760第3章 面向?qū)ο蠓椒ㄅcUMLUML的事物4注釋事物注釋事物是UML模型的解釋部分,它們用來描述和標注模型的任何元素。通??梢杂米⑨屝揎棊в屑s束或者解釋的圖。See policy8-5-96.docfor details aboutthese algorithms.CashAccountpresentValue()5861第3章 面向?qū)ο蠓椒ㄅcUMLUML中的關(guān)系模型元素之間的關(guān)系也是模型元素,常見的關(guān)系有依賴、關(guān)聯(lián)、泛化和實現(xiàn)
35、4種。關(guān)系特征:這四種關(guān)系是UML模型中可以包含的基本關(guān)系。它們也有變體。例如,依賴的變體有細化、跟蹤、包含和延伸。5962第3章 面向?qū)ο蠓椒ㄅcUMLUML中的關(guān)系依賴關(guān)聯(lián)泛化實現(xiàn)聚合復(fù)合(狀態(tài))遷移同步消息簡單消息異步消息UML中的關(guān)系5963第3章 面向?qū)ο蠓椒ㄅcUMLUML中的關(guān)系1依賴(Dependency)關(guān)系兩個事物之間的語義關(guān)系,其中目標事物發(fā)生變化會影響源事物的語義。圖中虛線箭頭從源事物指向目標事物,表示源事物依賴于目標事物。CourseScheduleadd(c:Course)remove(c:Course)IteratorCourse6064第3章 面向?qū)ο蠓椒ㄅcUMLU
36、ML中的關(guān)系兩個類之間的依賴關(guān)系可以是:源類訪問定義在目標類內(nèi)部的數(shù)據(jù)值;源類的操作調(diào)用了定義在目標類的操作;源類的返回類或參數(shù)是目標類的實例;如果在順序圖中的兩個對象存在消息的傳送,而且它們之間沒有結(jié)構(gòu)方面的連接,可以在類圖上用依賴關(guān)系建模。依賴的變體包含特定的語義,表明類之間的關(guān)系、包之間的關(guān)系、用例之間的關(guān)系、對象之間的關(guān)系、建模元素與模型之間的關(guān)系等。6165第3章 面向?qū)ο蠓椒ㄅcUML類之間的依賴關(guān)系a. 友元依賴 目標類(如二叉樹)視源類(如迭代器)為友元,允許源類訪問目標類的所有私有屬性和操作。IteratorBinaryTreeb. 導(dǎo)出依賴 兩個類或?qū)ο笕绻嬖趯?dǎo)出依賴,則表
37、明源類(如年齡)可以從目標類(如出生年月)通過計算導(dǎo)出。AgeBirthDay6266第3章 面向?qū)ο蠓椒ㄅcUML類之間的依賴關(guān)系c. 細化依賴 在類圖中表示同一模型的不同詳細程度的規(guī)格說明,源類比目標類更為詳細。Chessboardfrom optimizedchessboardfrom simpled. 實例化依賴 若要強調(diào)一個類的對象是由另一個類的對象創(chuàng)建的,可用實例化依賴。它表明源類創(chuàng)建了目標類的一個實例。ArrayStack6367第3章 面向?qū)ο蠓椒ㄅcUML類之間的依賴關(guān)系e. 使用依賴 不加任何修飾的依賴即為使用依賴。也可用修飾強調(diào)源類的語義依賴于目標類的具有共有可見性的構(gòu)成的語
38、義。Binary SearchTreeBinary Treef. 綁定(Binding)依賴這種依賴關(guān)系中的目標類是模板類,源類是從模板實例化的類。 Stack Stack6468第3章 面向?qū)ο蠓椒ㄅcUML包之間的依賴關(guān)系a. 訪問依賴 它表明源包被賦予了可訪問目標包的權(quán)限。sourcetargetb. 導(dǎo)入依賴 它表明了源包可以訪問目標包里的元素,但各個包有自己獨立的命名空間,這意味著屬于不同包的兩個元素可以重名。導(dǎo)入依賴可以使目標包內(nèi)的公共可見元素進入源包的命名空間。sourcetarget6569第3章 面向?qū)ο蠓椒ㄅcUML用例之間的依賴關(guān)系a. 包含依賴 它表明源用例顯式地包含目標用
39、例作為其行為的一部分。此時將源用例稱為基用例,目標用例稱為內(nèi)含用例。如果兩個用例之間具有包含依賴關(guān)系,則表明基用例的動作序列中有特定的步驟把內(nèi)含用例的動作序列包含進來。baseuse caseinclusionuse case6670第3章 面向?qū)ο蠓椒ㄅcUML用例之間的依賴關(guān)系b. 擴展依賴 它表明源用例擴展了目標用例的行為。此時,源用例稱為基用例,目標用例稱為擴展用例。擴展用例在特定條件下為基用例提供附加的動態(tài)行為。例如,在人機交互過程中出現(xiàn)差錯時進行的異常處理即為擴展動作。baseuse caseextensionuse case擴展依賴與包含依賴的區(qū)別在于,如果僅將擴展從基用例地動作序
40、列中去除,基用例仍然是語義完備的,即它的執(zhí)行仍將產(chǎn)生有意義的結(jié)果。而包含依賴則不然。6771第3章 面向?qū)ο蠓椒ㄅcUML對象之間的依賴關(guān)系a. 轉(zhuǎn)換依賴 當需要在交互圖上表示對象狀態(tài)的轉(zhuǎn)換時可以用轉(zhuǎn)換依賴。主要強調(diào)由于消息而導(dǎo)致對象狀態(tài)的改變。轉(zhuǎn)換依賴連接的目標對象和源對象是同一個對象。b. 調(diào)用依賴 當需要在交互圖或?qū)ο髨D上顯式強調(diào)對象之間或操作之間的調(diào)用關(guān)系時要用調(diào)用依賴。它表明源對象引用了目標對象的操作,或源操作引用了目標操作。6872第3章 面向?qū)ο蠓椒ㄅcUML對象之間的依賴關(guān)系c. 復(fù)制依賴 為了在交互圖或活動圖上描述對象復(fù)制的動作可以采用復(fù)制依賴。它連接兩個對象,目標對象是源對象的
41、完全相同而又獨立的副本。d. 發(fā)送依賴 它連接一個對象(在源端)和一個消息(在目標端),表明源對象在交互過程中發(fā)送了一個消息,可以用在狀態(tài)機的描述中。它針對內(nèi)嵌有狀態(tài)機的對象,可用來描述如何通過發(fā)送信號以產(chǎn)生某種事件的動作。6973第3章 面向?qū)ο蠓椒ㄅcUML建模元素與模型之間的依賴關(guān)系a. 回溯依賴 它連接兩個模型元素,表明目標是源的歷史上的前驅(qū)。如交互和協(xié)作就是從用例導(dǎo)出的。7074第3章 面向?qū)ο蠓椒ㄅcUMLUML中的關(guān)系2關(guān)聯(lián)(Association)關(guān)系關(guān)聯(lián)是一種結(jié)構(gòu)關(guān)系,它描述了兩個或多個類的實例之間的連接關(guān)系,是一種特殊的依賴。關(guān)聯(lián)分為普通關(guān)聯(lián)、限定關(guān)聯(lián)、關(guān)聯(lián)類以及聚合與其特殊情
42、形 - 復(fù)合。7175第3章 面向?qū)ο蠓椒ㄅcUMLUML中的關(guān)系1)普通關(guān)聯(lián)普通關(guān)聯(lián)是最常見的關(guān)聯(lián)關(guān)系,只要類與類之間存在連接關(guān)系就可以用普通關(guān)聯(lián)表示。普通關(guān)聯(lián)又分為二元關(guān)聯(lián)和多元關(guān)聯(lián)。二元關(guān)聯(lián)描述兩個類之間的關(guān)聯(lián),用兩個類之間的一條直線來表示,直線上可寫上關(guān)聯(lián)名。關(guān)聯(lián)通常是雙向的,每一個方向可有一個關(guān)聯(lián)名,并用一個實心三角來指示關(guān)聯(lián)名指的是哪一個方向。如果關(guān)聯(lián)含義清晰的話,也可不起名字。關(guān)聯(lián)與兩端的類連接的地方叫做關(guān)聯(lián)端點,在關(guān)聯(lián)兩端連接的類各自充當了某種角色,有關(guān)的信息(如角色名、可見性、多重性等)可附加到各個端點上。7276第3章 面向?qū)ο蠓椒ㄅcUMLUML中的關(guān)系77普通關(guān)聯(lián)多重性:表
43、明一個關(guān)聯(lián)的兩端連接的類實例個數(shù)的對應(yīng)關(guān)系。11個實例 0.* 或* 0到多個實例0.10到1個實例 1+或1.* 1到多個實例角色名:表示類實例在這個關(guān)聯(lián)中扮演的角色。一個類可與它自身關(guān)聯(lián)。多元關(guān)聯(lián):3個或3個以上類之間的關(guān)聯(lián)。多元關(guān)聯(lián)由一個菱形,以及由菱形引出的通向各個相關(guān)類的直線組成。78第3章 面向?qū)ο蠓椒ㄅcUMLUML中的關(guān)系2)限定關(guān)聯(lián)限定關(guān)聯(lián)通常用在一對多或多對多的關(guān)聯(lián)關(guān)系中,可以把模型中的多重性從一對多變成一對一,或?qū)⒍鄬Χ嗪喕啥鄬σ弧R环N方式是在類圖中關(guān)聯(lián)關(guān)系的下方加約束;另一種方式是在類圖中把限定詞(Qualifier)放在關(guān)聯(lián)關(guān)系末端的一個小方框內(nèi)。目錄1ordered
44、(a)(b)0.*文件目錄文件名文件限定關(guān)聯(lián)7379第3章 面向?qū)ο蠓椒ㄅcUMLUML中的關(guān)系3)關(guān)聯(lián)類在關(guān)聯(lián)關(guān)系比較簡單的情況下,關(guān)聯(lián)關(guān)系的語義用關(guān)聯(lián)關(guān)系的名字來概括。但在某些情況下,需要對關(guān)聯(lián)關(guān)系的語義做詳細的定義、存儲和訪問,為此可以建立關(guān)聯(lián)類(Association Class),用來描述關(guān)聯(lián)的屬性。關(guān)聯(lián)中的每個鏈與關(guān)聯(lián)類的一個實例相聯(lián)系,關(guān)聯(lián)類通過一條虛線與關(guān)聯(lián)連接。7480第3章 面向?qū)ο蠓椒ㄅcUML81第3章 面向?qū)ο蠓椒ㄅcUMLUML中的關(guān)系4)聚合聚合(Aggregation)也稱為聚集,是一種特殊的關(guān)聯(lián)。它描述了整體和部分之間的結(jié)構(gòu)關(guān)系。在需求陳述中,若出現(xiàn)“包含”、“組成
45、”、“分為 部分”等字句,往往意味著存在聚合關(guān)系。除了一般聚合之外,還有兩種特殊的聚合關(guān)系:共享聚合(Shared Aggregation)和復(fù)合聚合(Composition Aggregation)。如果在聚合關(guān)系中處于部分方的實例可同時參與多個處于整體方實例的構(gòu)成,則該聚合稱為共享聚合。聚合和共享聚合的圖示符號是在表示關(guān)聯(lián)關(guān)系的直線末端緊挨著整體類的地方畫一個空心菱形。7582第3章 面向?qū)ο蠓椒ㄅcUMLUML中的關(guān)系4)聚合如果部分類完全隸屬于整體類,部分類需要與整體類共存,一旦整體類不存在了,則部分類也會隨之消失,或失去存在價值,則這種聚合稱為復(fù)合聚合,在復(fù)合聚合關(guān)系中整體方的菱形為實
46、心菱形。7683第3章 面向?qū)ο蠓椒ㄅcUMLUML中的關(guān)系4)聚合導(dǎo)航(Navigabihty)是關(guān)聯(lián)關(guān)系的一種特性,它通過在關(guān)聯(lián)的一個端點上加箭頭來表示導(dǎo)航的方向。7784第3章 面向?qū)ο蠓椒ㄅcUMLUML中的關(guān)系3泛化(Generalization)關(guān)系泛化關(guān)系就是一般(Generalization)類和特殊(Specialization)類之間的繼承關(guān)系。特殊類完全擁有一般類的信息,并且還可以附加一些其他信息。在UML中,一般類亦稱泛化類,特殊類亦稱特化類。在圖形表示上,用一端為空心三角形的連線表示泛化關(guān)系,三角形的頂角緊挨著一般類。7885第3章 面向?qū)ο蠓椒ㄅcUMLUML中的關(guān)系1)
47、普通泛化普通泛化與前面講過的繼承基本相同。但要了解的是,在泛化關(guān)系中常遇到一個特殊的類-抽象類。一般稱沒有具體對象的類為抽象類。抽象類通常作為父類,用于描述其他類(子類)的公共屬性和行為。在圖形上,抽象類的類名下附加一個標簽值abstract 。79普通泛化可以分為多重繼承和單繼承。86第3章 面向?qū)ο蠓椒ㄅcUMLUML中的關(guān)系7987第3章 面向?qū)ο蠓椒ㄅcUMLUML中的關(guān)系2)受限泛化受限泛化關(guān)系是指泛化具有約束條件。預(yù)定義的約束有4種:交疊(Overlapping)、不相交(Disjoint)、完全(Complete)和不完全(Incomplate)。這些約束都是語義約束。8088受限泛
48、化一個一般類可以從不同的方面將其特化成不同的特殊類集合。例如人可以分成男人和女人,這覆蓋了人的所有性別,約束是“完全的”,并且是互斥的,約束是“不相交的”。從職業(yè)角度,人又可以分為教師,醫(yī)生,并未覆蓋所有職業(yè),約束是“不完全的”,而且允許一個人有多個職業(yè),如醫(yī)科大學的教師也可以是醫(yī)生,約束是“交疊”的。89第3章 面向?qū)ο蠓椒ㄅcUMLUML中的關(guān)系4實現(xiàn)(Implement)關(guān)系實現(xiàn)是泛化關(guān)系和依賴關(guān)系的結(jié)合,也是類之間的語義關(guān)系,通常在以下兩種情況出現(xiàn)實現(xiàn)關(guān)系: 接口和實現(xiàn)它們的類或構(gòu)件之間。 用例和實現(xiàn)它們的協(xié)作之間。在UML中,實現(xiàn)關(guān)系用帶有空心箭頭的虛線表示。8190第3章 面向?qū)ο蠓?/p>
49、法與UMLUML中的關(guān)系8191第3章 面向?qū)ο蠓椒ㄅcUML3.4 UML中的圖8292第3章 面向?qū)ο蠓椒ㄅcUML外部視圖外部視圖主要用用例圖、活動圖和順序圖來描述。例子:系統(tǒng)的問題陳述如下:“在每個學期開始時,注冊管理員(Registrar)設(shè)置一個學期開設(shè)的所有課程信息,并根據(jù)學生的專業(yè),為學生提供一個可選課程的目錄,列出他可選擇的課程。學生(Student)可以申請這個課程目錄,選擇4門課程。另外,每個學生還要指定2門候補課程,以便所選課程滿員或被取消的情況下進行調(diào)整。每門課程的選課學生人數(shù)限制在310名。一個學生的注冊過程完成后,注冊系統(tǒng)就會將信息發(fā)送給計費系統(tǒng)(Billing Sy
50、stem),這樣這名學生就可以為這個學期付費了。教授(Professor)可以使用這個系統(tǒng)提交他計劃開設(shè)的課程,查看哪些學生注冊了他的課程?!?393第3章 面向?qū)ο蠓椒ㄅcUML外部視圖1用例圖(Use Case Diagram)用例圖展現(xiàn)了一組用例、參與者和擴展關(guān)系、包含關(guān)系等。該圖的作用是描述系統(tǒng)的行為,即該系統(tǒng)在它的上下文環(huán)境中所提供的外部可見服務(wù)。因此,用例圖有兩種使用方式:一是上下文環(huán)境建模,說明位于系統(tǒng)之外并與系統(tǒng)進行交互的參與者以及它們所扮演的角色的含義;二是功能需求建模,說明系統(tǒng)想要的行為。8494第3章 面向?qū)ο蠓椒ㄅcUML外部視圖95第3章 面向?qū)ο蠓椒ㄅcUML外部視圖如果
51、多個用例共享一個功能,可以單獨建立一個用例以描述這個功能,并建立用例之間的聯(lián)系,包括“包含”和“擴展”關(guān)系。8596第3章 面向?qū)ο蠓椒ㄅcUML外部視圖2活動圖(Activity Diagram)用例圖描述了系統(tǒng)應(yīng)提供的功能,但不包括實現(xiàn)功能的細節(jié)。如果需要描述功能的實現(xiàn)細節(jié),可以使用活動圖和順序圖?;顒訄D顯示了用例中的操作和操作之間的控制流和數(shù)據(jù)流。使用活動圖可以表達出計算過程或工作流順序的和并發(fā)的執(zhí)行步驟。8697第3章 面向?qū)ο蠓椒ㄅcUML外部視圖分支或決策點控制流活動或動作(并行流)分叉(并行流)合并接收一個事件發(fā)送一個事件按時間點啟動操作活動起始點活動終點控制流終點活動圖中主要符號8
52、698第3章 面向?qū)ο蠓椒ㄅcUML外部視圖使用活動圖可以描述用例的業(yè)務(wù)工作流,進行工作流建模,展示與系統(tǒng)交互的參與者所能觀察到的活動。在后續(xù)的設(shè)計階段,還可以利用活動圖對操作的控制流建模。此時可以把活動當做程序流程圖使用,對一個計算的細節(jié)部分進行描述。我們希望在活動圖中既能描述執(zhí)行了什么活動,又能夠說明該活動由誰來完成,可以使用泳道來描述這種關(guān)系。8799第3章 面向?qū)ο蠓椒ㄅcUML外部視圖Navigate to HomeBuild HomeSearch for CourseBrowse byOfferingSubject AreaEnter Course Offering NumberSel
53、ect CourseDisplay Course OfferingReturn to HomeQuitDisplay Course OfferingSelect Course OfferingInformationReturn to HomeStudentSystemQuit“瀏覽課程目錄”的活動圖87100第3章 面向?qū)ο蠓椒ㄅcUML外部視圖3順序圖(Sequence Diagram)順序圖也稱為序列圖,它按時間順序顯示對象之間的交互,描述了如何通過對象之間的交互實現(xiàn)用例。它由在一個上下文環(huán)境中的一組對象及它們之間交互的信息組成。對象表述為虛垂線頂端的矩形框。這些對象都排列在圖的頂部。其中,
54、發(fā)起用例活動的對象(如參與者)放在最左邊,其他對象按邊界對象、控制對象、實體對象依次排列。每個對象下面有一條虛垂線,稱為該對象的生命線,表明對象在一段時間內(nèi)存在,以此說明對象可以在交互過程中創(chuàng)建,在交互過程中撤銷。88101第3章 面向?qū)ο蠓椒ㄅcUML外部視圖在生命線上覆蓋的瘦高的矩形稱為控制焦點,表示一個對象執(zhí)行一個動作所經(jīng)歷的時間段。矩形的頂部表示動作的開始,底部表示動作的結(jié)束(可以用一個由虛線剪頭表示的返回消息來標記)。生命線之間的箭頭表示消息。它從一個對象指向另一個對象。消息箭頭可以回到同一條生命線,指明自調(diào)用,即對象發(fā)給自己的消息。消息出現(xiàn)的次序自上而下。順序圖展現(xiàn)了一組對象和由這組
55、對象收發(fā)的消息,用于按時間順序?qū)刂屏鹘!?9102第3章 面向?qū)ο蠓椒ㄅcUML外部視圖89103第3章 面向?qū)ο蠓椒ㄅcUML內(nèi)部視圖UML的內(nèi)部視圖描述系統(tǒng)內(nèi)部的過程、活動、關(guān)系和結(jié)構(gòu)。下面介紹幾個主要的內(nèi)部視圖。1類圖(Class Diagram)類圖是系統(tǒng)的靜態(tài)結(jié)構(gòu)視圖,在類圖中UML建模元素包括類及其結(jié)構(gòu)和行為,接口,協(xié)作,關(guān)聯(lián)、依賴、泛化關(guān)系,多重性和導(dǎo)航指示符,角色名字等。特別地,主動類的類圖給出了系統(tǒng)的靜態(tài)進程視圖。90104第3章 面向?qū)ο蠓椒ㄅcUML內(nèi)部視圖105第3章 面向?qū)ο蠓椒ㄅcUML內(nèi)部視圖在類的描述中,屬性和操作可具有不同的可見性。常用的可見性包括 public(
56、公用)private(私用)和 protected(保護,在繼承關(guān)系中使用),在UML中分別用“+”、“-”和“#”表示。UML還允許在屬性和操作后附加約束特性的說明。如在某屬性后加“只讀”說明該屬性是只讀屬性;又如在某操作后加“const”說明該操作是常值操作,操作的結(jié)果不會改變類對象的值。91106第3章 面向?qū)ο蠓椒ㄅcUML內(nèi)部視圖2對象圖(object Diagram)對象是類的實例,對象圖可以看做是類圖的一個實例,對象之間的鏈(Link)可以是類之間關(guān)聯(lián)的實例。因此,對象圖展現(xiàn)了一組對象以及它們之間的關(guān)系,用以詳述、構(gòu)造和文檔化系統(tǒng)中存在的對象以及它們之間的相互關(guān)系。92107第3章
57、 面向?qū)ο蠓椒ㄅcUML內(nèi)部視圖108第3章 面向?qū)ο蠓椒ㄅcUML內(nèi)部視圖3通信圖(Communication Diagram)通信圖在UML 2.0以前的版本稱為協(xié)作圖或合作圖,它是動態(tài)設(shè)計視圖,強調(diào)參加交互的各個對象的組織。通信圖只對相互間有交互的對象和這些對象之間的關(guān)系建模,而忽略了其他對象和關(guān)聯(lián)。通信圖可以被視為對象圖的擴展,但它除了展現(xiàn)出對象之間的鏈接外,還顯示出對象之間的消息傳遞。在表示鏈接的直線上可以附加名字,對象之間的消息傳遞用箭頭標示在鏈的旁邊,箭頭的方向從發(fā)送消息的對象指向接收消息的對象。消息上所附序列號指明消息執(zhí)行的時間順序。93109第3章 面向?qū)ο蠓椒ㄅcUML內(nèi)部視圖1
58、10通信圖通信圖與順序圖都可以表示對象之間的交互,都屬于交互圖,在語義上是等價的,但它們之間也有不同。順序圖主要強調(diào)各個消息收發(fā)的時間先后次序,但沒有明確表達對象之間的關(guān)系。通信圖主要強調(diào)各個對象的組織關(guān)系,但時間順序必須從消息的序列號得到,一般多用于內(nèi)部視圖。111第3章 面向?qū)ο蠓椒ㄅcUML內(nèi)部視圖94112第3章 面向?qū)ο蠓椒ㄅcUML內(nèi)部視圖4狀態(tài)機圖(State Machine Diagram)在UML中,一個類的對象有其生存周期過程。在此過程中對象具有若干典型的狀態(tài),當探測到某一事件發(fā)生,對象做出響應(yīng)就將導(dǎo)致狀態(tài)的轉(zhuǎn)變。對象的每個狀態(tài)執(zhí)行若干活動或動作,從而表現(xiàn)出某種行為并完成某種工
59、作。狀態(tài)機圖通過對類的對象的生存周期建模來描述對象隨時間變化的動態(tài)行為,它由狀態(tài)、遷移、事件和活動組成 。95113第3章 面向?qū)ο蠓椒ㄅcUML內(nèi)部視圖95114第3章 面向?qū)ο蠓椒ㄅcUML內(nèi)部視圖狀態(tài)分為起始狀態(tài)、終止狀態(tài)和中間狀態(tài)。起始狀態(tài)表示激活一個對象,開始該對象的生存周期的歷程;終止狀態(tài)表示對象完成生存周期的狀態(tài)遷移的所有活動,結(jié)束對象的生存周期歷程;中間狀態(tài)表示對象處于生存周期的某一位置并執(zhí)行相關(guān)的活動或動作。一個狀態(tài)機圖可以有一個起始狀態(tài)和零個或多個終止狀態(tài)。狀態(tài)遷移表示圖中一個狀態(tài)到另一個狀態(tài)的轉(zhuǎn)換,在狀態(tài)機圖中用連接兩個狀態(tài)的箭頭表示。狀態(tài)遷移分成外部遷移和內(nèi)部遷移。外部遷移是系統(tǒng)響應(yīng)某個事件并導(dǎo)致對象狀態(tài)轉(zhuǎn)換的遷移,通常把事件名寫在表示遷移的箭頭旁,需要時可加上引發(fā)遷移的條件表達式。內(nèi)部遷移也是系統(tǒng)響應(yīng)某個事件的發(fā)生而被觸發(fā)的,但它不會導(dǎo)致對象狀態(tài)的轉(zhuǎn)換,因此這種遷移只有源狀態(tài)而沒有目標狀態(tài)也可以說,內(nèi)部遷移是對象處于該狀態(tài)時,為響應(yīng)事件而在狀態(tài)內(nèi)部執(zhí)行的活動或動作,它不改變狀態(tài)。96115第3章 面向?qū)ο蠓椒ㄅcUML內(nèi)部視圖96116第3章 面向?qū)ο蠓椒ㄅcUML內(nèi)部視圖事件是指在某一時刻發(fā)生并造成影響的事。在狀態(tài)機中,一個事件的發(fā)生可以觸發(fā)狀態(tài)的遷移。
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微電影制作拍攝剪輯協(xié)議
- 廣播電視清運施工合同
- 珠寶首飾投標代理合同
- 展覽館水暖系統(tǒng)維修協(xié)議
- 高效能創(chuàng)作設(shè)計培訓
- 觀看交通安全心得體會6篇
- 炊事員的崗位職責(22篇)
- 飯店共同經(jīng)營合作合同書(3篇)
- 一年級數(shù)學計算題專項練習匯編
- 四年級數(shù)學(小數(shù)加減運算)計算題專項練習與答案匯編
- 鏡頭的角度和方位課件
- 污水處理常用藥劑簡介知識講解課件
- 五年級上冊英語課件-Unit 1《My future》第1課時牛津上海版(三起) (共28張PPT)
- 光交接箱施工規(guī)范方案
- 氣溫和降水學案
- 普及人民代表大會制度知識競賽試題庫(1000題和答案)
- 國家電網(wǎng)公司施工項目部標準化管理手冊(2021年版)線路工程分冊
- 《汽車低壓線束設(shè)計規(guī)范》
- 工程項目增加簽證單
- 被一部電影感動記韓國電影《鳴梁海戰(zhàn)》觀后感
- 六年級數(shù)學上冊教案-《百分數(shù)》青島版
評論
0/150
提交評論