面向?qū)ο蠓椒ㄅcUML的知識(shí)課件_第1頁(yè)
面向?qū)ο蠓椒ㄅcUML的知識(shí)課件_第2頁(yè)
面向?qū)ο蠓椒ㄅcUML的知識(shí)課件_第3頁(yè)
面向?qū)ο蠓椒ㄅcUML的知識(shí)課件_第4頁(yè)
面向?qū)ο蠓椒ㄅcUML的知識(shí)課件_第5頁(yè)
已閱讀5頁(yè),還剩124頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第3章 面向?qū)ο蠓椒ㄅcUML13.1 面向?qū)ο笙到y(tǒng)的概念3.2 統(tǒng)一建模語(yǔ)言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什么是對(duì)象客觀世界中的應(yīng)用問(wèn)題面對(duì)的主體都是物理的或概念的實(shí)體。從這些實(shí)體出發(fā),分析實(shí)體的作用、責(zé)任以及它們之間協(xié)作,從而找出問(wèn)題的解,是很自然的。面向?qū)ο蠹夹g(shù)就是適合用這種方式分析和解決問(wèn)題的方法。它的基石就是問(wèn)題領(lǐng)域中識(shí)別出來(lái)的各種對(duì)象。依賴這些對(duì)象提供的服務(wù)和對(duì)象之間相互的協(xié)同(關(guān)系),實(shí)現(xiàn)期望的功能。面向?qū)ο蠹夹g(shù)能夠在解決方案中直接模擬問(wèn)題領(lǐng)域,

2、并與人類的思維習(xí)慣相一致。33第3章 面向?qū)ο蠓椒ㄅcUML什么是面向?qū)ο笕绻粋€(gè)系統(tǒng)是使用對(duì)象、類、繼承和消息通信這樣4個(gè)概念設(shè)計(jì)和實(shí)現(xiàn)的,則可認(rèn)為這個(gè)系統(tǒng)是面向?qū)ο蟮摹C嫦驅(qū)ο笙到y(tǒng)的每個(gè)成分都應(yīng)是對(duì)象,計(jì)算是通過(guò)新對(duì)象的建立和對(duì)象之間的通信來(lái)執(zhí)行的。面向?qū)ο?對(duì)象+類+繼承+消息通信一個(gè)面向?qū)ο蟮某绦虻拿恳怀煞輵?yīng)是對(duì)象,計(jì)算是通過(guò)新的對(duì)象的建立和對(duì)象之間的通信來(lái)執(zhí)行的。44第3章 面向?qū)ο蠓椒ㄅcUML面向?qū)ο蠓缎偷奶攸c(diǎn)面向?qū)ο笙到y(tǒng)中的對(duì)象是數(shù)據(jù)抽象與過(guò)程抽象的綜合體。所謂過(guò)程抽象是指當(dāng)使用某個(gè)過(guò)程時(shí),無(wú)需關(guān)心過(guò)程內(nèi)部的實(shí)現(xiàn)細(xì)節(jié),只要知道如何調(diào)用該過(guò)程以及該過(guò)程完成什么功能即可。所謂數(shù)據(jù)抽象是

3、指使用結(jié)構(gòu)或記錄等方式把某個(gè)實(shí)體的數(shù)據(jù)集中起來(lái),使得使用者能夠以單元為單位使用數(shù)據(jù)。面向?qū)ο蠓缎驮跀?shù)據(jù)抽象中組織過(guò)程抽象。55第3章 面向?qū)ο蠓椒ㄅcUML面向?qū)ο蠓缎偷奶攸c(diǎn)面向?qū)ο笙到y(tǒng)的狀態(tài)分別保存在各個(gè)對(duì)象的數(shù)據(jù)存儲(chǔ)中,而不是保存在一些全局變量中。系統(tǒng)解決問(wèn)題的控制流包含在各個(gè)對(duì)象中的操作內(nèi)。并通過(guò)消息傳遞,控制流從一個(gè)對(duì)象轉(zhuǎn)移到另一個(gè)對(duì)象。算法被分布到各種實(shí)體中。通過(guò)執(zhí)行消息傳遞和對(duì)象中的操作實(shí)現(xiàn)算法的功能。66第3章 面向?qū)ο蠓椒ㄅcUML面向?qū)ο蟮奶攸c(diǎn)抽象性:對(duì)象包含數(shù)據(jù)抽象和行為抽象;封裝性:信息隱蔽(使用與實(shí)現(xiàn)分開(kāi));共享性:同一個(gè)類中所有對(duì)象共享相同的數(shù)據(jù)結(jié)構(gòu)和行為;同一應(yīng)用中的對(duì)

4、象通過(guò)繼承關(guān)系,共享共同的數(shù)據(jù)結(jié)構(gòu)和行為;不同應(yīng)用中的對(duì)象通過(guò)復(fù)用,共享數(shù)據(jù)結(jié)構(gòu)和行為。77第3章 面向?qū)ο蠓椒ㄅcUML面向?qū)ο笙到y(tǒng)具有的特色系統(tǒng)的定義從問(wèn)題領(lǐng)域的實(shí)體出發(fā),與人類習(xí)慣的思維方式一致。搭建的系統(tǒng)結(jié)構(gòu)穩(wěn)定性好,修改可以局部化。系統(tǒng)及體系結(jié)構(gòu)可以使用構(gòu)件組裝,可復(fù)用性好。軟件系統(tǒng)容易理解,容易修改,容易測(cè)試,適合開(kāi)發(fā)大型的軟件產(chǎn)品。軟件體系結(jié)構(gòu)嚴(yán)格按照信息(細(xì)節(jié))隱蔽的原則設(shè)計(jì),產(chǎn)品可維護(hù)性好。88第3章 面向?qū)ο蠓椒ㄅcUML對(duì)象的定義對(duì)象是系統(tǒng)中描述客觀事物的實(shí)體,是構(gòu)成系統(tǒng)的一個(gè)基本單元,由一組屬性值和一組對(duì)屬性進(jìn)行操作的服務(wù)組成。對(duì)象 = 對(duì)象名+數(shù)據(jù)(屬性)+操作(行為)屬

5、性表征了對(duì)象的靜態(tài)特征,一般通過(guò)封裝在對(duì)象內(nèi)部的數(shù)據(jù)存儲(chǔ)來(lái)定義。一旦對(duì)象的數(shù)據(jù)存儲(chǔ)都賦了值,這個(gè)對(duì)象的狀態(tài)就確定了。屬性值一般只能通過(guò)執(zhí)行對(duì)象的操作來(lái)改變。操作又稱為方法或服務(wù),它描述了對(duì)象執(zhí)行的功能。若通過(guò)消息傳遞,還可以為其他對(duì)象使用。99第3章 面向?qū)ο蠓椒ㄅcUML計(jì)算機(jī)屏幕上三個(gè)多邊形(20, 20)(56, 10)(23, 30)(46, 37)(50, 45)(10, 50)(35, 60)(35, 85)(50, 60)(50, 85)(60, 35)計(jì)算機(jī)窗口中的三個(gè)多邊形對(duì)象1010第3章 面向?qū)ο蠓椒ㄅcUML表示多邊形的3個(gè)對(duì)象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)表示多邊形的三個(gè)對(duì)象1111第3章 面向?qū)ο蠓椒ㄅcUML對(duì)象的分類對(duì)象可以分為5種: 物理對(duì)象(Physical Objects)-物理對(duì)象是最易識(shí)別的對(duì)象,通??梢栽趩?wèn)題領(lǐng)域的描述中找到,它們的屬性可以標(biāo)識(shí)和測(cè)

7、量。 角色對(duì)象(Roles)-一個(gè)實(shí)體的角色也可以抽象成一個(gè)單獨(dú)的對(duì)象。角色對(duì)象的操作是由角色提供的技能。 事件對(duì)象(Incidents)-一個(gè)事件是某種活動(dòng)的一次“出現(xiàn)”。一個(gè)事件對(duì)象通常是一個(gè)數(shù)據(jù)實(shí)體,它管理“出現(xiàn)”的重要信息。事件對(duì)象的操作主要用于對(duì)數(shù)據(jù)的存取。1212第3章 面向?qū)ο蠓椒ㄅcUML對(duì)象的分類 交互對(duì)象(Interactions)-交互表示兩個(gè)對(duì)象之間的關(guān)系,這種類型的對(duì)象類似于在數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)所涉及的“關(guān)系”實(shí)體。當(dāng)實(shí)體之間是多對(duì)多的關(guān)系時(shí),利用交互對(duì)象可將其簡(jiǎn)化為兩個(gè)一對(duì)多的關(guān)系。 規(guī)格說(shuō)明對(duì)象(Specifications)-規(guī)格說(shuō)明對(duì)象表明組合某些實(shí)體時(shí)的要求。規(guī)格說(shuō)

8、明對(duì)象中的操作支持把一些簡(jiǎn)單的對(duì)象組合成較復(fù)雜的對(duì)象。1313第3章 面向?qū)ο蠓椒ㄅcUML對(duì)象的特點(diǎn) 對(duì)象是消息處理的主體。對(duì)象之間是通過(guò)消息互相通信的。 對(duì)象是以數(shù)據(jù)為中心的。所有操作都與對(duì)象的屬性相關(guān),而且操作的結(jié)果往往與當(dāng)時(shí)所處的狀態(tài)(屬性的值)有關(guān)。 實(shí)現(xiàn)了數(shù)據(jù)封裝。對(duì)象是一個(gè)黑盒,其屬性值對(duì)外不可見(jiàn),被完全封裝在盒子內(nèi)部,對(duì)屬性值的訪問(wèn)只能通過(guò)接口中定義的(公有)接口操作進(jìn)行。為了使用對(duì)象內(nèi)的屬性值,只需知道屬性值的取值范圍和可以訪問(wèn)該屬性的接口操作,無(wú)需知道表征屬性的具體數(shù)據(jù)結(jié)構(gòu)和操作的實(shí)現(xiàn)算法。1414第3章 面向?qū)ο蠓椒ㄅcUML對(duì)象的特點(diǎn) 模塊獨(dú)立性好。由于前3個(gè)特點(diǎn),故對(duì)象內(nèi)

9、部各種成分彼此相關(guān),聯(lián)系緊密,內(nèi)聚性強(qiáng)。又由于完成對(duì)象功能所需的操作和相關(guān)數(shù)據(jù)結(jié)構(gòu)基本上都被封裝在對(duì)象內(nèi)部,形成了面向?qū)ο笙到y(tǒng)的基本模塊,因而它與外界的聯(lián)系較少,對(duì)象之間的耦合比較松散。 具有并行的特點(diǎn)。不同的對(duì)象各自獨(dú)立地處理自身的數(shù)據(jù),彼此通過(guò)發(fā)送消息、傳遞信息來(lái)完成通信。所以它們具有并行工作的特點(diǎn)。1515第3章 面向?qū)ο蠓椒ㄅcUML對(duì)象的兩個(gè)視圖設(shè)計(jì)視圖:把對(duì)象看做實(shí)體,產(chǎn)生有關(guān)實(shí)體的聲明,包括實(shí)體的屬性和可以執(zhí)行的操作,但不涉及實(shí)現(xiàn)功能的一系列動(dòng)作。實(shí)現(xiàn)視圖:用對(duì)象表示在應(yīng)用程序代碼中的實(shí)體,是數(shù)據(jù)存儲(chǔ)與相關(guān)操作的統(tǒng)一的封裝體,是數(shù)據(jù)抽象和過(guò)程抽象的實(shí)例化。1616第3章 面向?qū)ο蠓?/p>

10、法與UML類與封裝類(Class)是一組具有相同結(jié)構(gòu)、相同服務(wù)、共同關(guān)系和共同語(yǔ)義的對(duì)象集合。類的定義包括類名、一組數(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由兩個(gè)四邊形對(duì)象導(dǎo)出一個(gè)類17第3章 面向?qū)ο蠓椒ㄅcUML繼承(inheritance)如果某幾個(gè)類之間具有共性的東西 (屬性和行為),抽取出來(lái)放在一個(gè)泛化類中,將各個(gè)類的特有的東西放在特化類中分別描述,則可建立起特化類對(duì)泛化類的繼承。繼承是使用已有的類定義做為基礎(chǔ)建立新類的定義技術(shù)。已有的類可當(dāng)做泛化類(父類)來(lái)引用,則新類相應(yīng)地可當(dāng)做特化類(子類)來(lái)引用。1818第3章 面向?qū)ο蠓椒ㄅcUML繼承(inheritance)建立繼承結(jié)構(gòu)的好處:易編程、易理解, 代碼短, 結(jié)構(gòu)清晰易修改, 共同部分只要在一處修改即可易增加新類, 只須描述不同部分怎樣建立一個(gè)好的繼承層次類可以從父類繼承

12、,父類又可以從它的父類繼承,形成多層次的繼承結(jié)構(gòu)。當(dāng)增加一個(gè)新類時(shí),不一定在最低層,可能需要插在中間層,這樣可能需要調(diào)整原來(lái)的層次結(jié)構(gòu)。1919第3章 面向?qū)ο蠓椒ㄅcUML繼承(inheritance)汽車大轎車載重車救火車起重車a) 建立一個(gè)新類起重車。它的底盤、發(fā)動(dòng)機(jī)、輪胎、驅(qū)動(dòng)裝置等都在已有類汽車中。關(guān)系如右圖所示。新類是已有類的特殊情形。這時(shí)直接讓起重車類作為汽車類的子類即可。起重車類汽車類2020第3章 面向?qū)ο蠓椒ㄅcUML繼承(inheritance)b) 增加一個(gè)新類拖拉機(jī)。它的底盤、發(fā)動(dòng)機(jī)等與汽車不同,但驅(qū)動(dòng)裝置、輪胎等與汽車相同。調(diào)整繼承結(jié)構(gòu)。建立一個(gè)新的一般的車輛類,把拖拉

13、機(jī)與汽車類的共性放到車輛類中,拖拉機(jī)與汽車類都成為車輛類的子類。車輛是抽象類,相關(guān)操作到子類汽車找。汽車車輛拖拉機(jī)汽車拖拉機(jī)2121第3章 面向?qū)ο蠓椒ㄅcUML繼承(inheritance)c) 另一種情形是在已有類的基礎(chǔ)上加入新類,使得新類成為已有類的泛化類。例如,已經(jīng)存在三角形類,四邊形類,想加入一個(gè)多邊形類,并使之成為三角形和四邊形類的泛化類。多邊形三角形類多邊形類四邊形類三角形四邊形六邊形2222第3章 面向?qū)ο蠓椒ㄅcUML繼承(inheritance)d) 前三個(gè)情況主要是通過(guò)查找(應(yīng)用領(lǐng)域)類庫(kù),找到可以原封不動(dòng)地繼承的類或可以通過(guò)調(diào)整繼承層次結(jié)構(gòu)繼承的類。但如果在已有的繼承層次中

14、找不到可以繼承的已有類,就從新開(kāi)始完全獨(dú)立地建立一個(gè)類。2323第3章 面向?qū)ο蠓椒ㄅcUML多繼承如果一個(gè)類需要用到多個(gè)現(xiàn)有類的特征,可以從多個(gè)類中繼承,稱為多繼承。例如退休教師是繼承退休者和教師這兩個(gè)類的某些特征或行為而得到的一個(gè)新類。退休者教師退休教師2424第3章 面向?qū)ο蠓椒ㄅcUML繼承的種類 取代繼承。如“窗口”和“Windows窗口”的關(guān)系,任何需要“窗口”的地方都可以用“Windows窗口”來(lái)代替。 內(nèi)容繼承。例如“四邊形”與“矩形”的關(guān)系,“四邊形”包括了“矩形”。 受限繼承。如“鴕鳥(niǎo)”是一種特殊的“鳥(niǎo)”,它不能繼承“鳥(niǎo)”的“會(huì)飛”的特性。 特化繼承。如“汽車”與“起重車”的關(guān)

15、系。2525第3章 面向?qū)ο蠓椒ㄅcUML多態(tài)性和動(dòng)態(tài)綁定對(duì)象互相通信,即一個(gè)對(duì)象發(fā)消息給另一個(gè)對(duì)象,執(zhí)行某些行為或又發(fā)消息給另外的對(duì)象,從而執(zhí)行系統(tǒng)的功能。多態(tài)性指同名的函數(shù)或操作可在不同類型的對(duì)象中有各自相應(yīng)的實(shí)現(xiàn)。例如a)整數(shù)“+”:整數(shù)加法b)浮點(diǎn)數(shù)“+”:浮點(diǎn)數(shù)加法c)字符串“+”:字符串連接d)點(diǎn)“+”:兩個(gè)點(diǎn)的坐標(biāo)位置分別疊加具有多態(tài)的函數(shù)或操作在運(yùn)行時(shí)才根據(jù)實(shí)際的對(duì)象類型,執(zhí)行相應(yīng)實(shí)現(xiàn)程序的連接,此即動(dòng)態(tài)綁定。2626第3章 面向?qū)ο蠓椒ㄅcUML多態(tài)性實(shí)現(xiàn)的種類 利用繼承關(guān)系把所有數(shù)據(jù)類型當(dāng)做一個(gè)抽象數(shù)據(jù)類型的子類型。動(dòng)態(tài)綁定保證在程序執(zhí)行時(shí)實(shí)施與實(shí)例連接的操作。 利用模板機(jī)制把

16、所有可能的數(shù)據(jù)類型用一個(gè)參數(shù)化的數(shù)據(jù)類型來(lái)代替。2727第3章 面向?qū)ο蠓椒ㄅcUML消息通信消息是一個(gè)對(duì)象向另一個(gè)對(duì)象傳遞的信息。有4類消息:發(fā)送對(duì)象請(qǐng)求接收對(duì)象提供服務(wù)。發(fā)送對(duì)象激活接收對(duì)象。發(fā)送對(duì)象詢問(wèn)接收對(duì)象。發(fā)送對(duì)象僅傳送信息給接收對(duì)象。2828第3章 面向?qū)ο蠓椒ㄅcUML消息通信消息的使用類似于函數(shù)調(diào)用,消息中指定了某一個(gè)實(shí)例、一個(gè)操作名和一個(gè)參數(shù)表(可能是空的),接收消息的實(shí)例執(zhí)行消息中指定的操作,并將形式參數(shù)與參數(shù)表中相應(yīng)的值結(jié)合起來(lái)。系統(tǒng)功能的實(shí)現(xiàn)就是一組對(duì)象通過(guò)執(zhí)行對(duì)象自身的操作和消息通信來(lái)完成的。2929第3章 面向?qū)ο蠓椒ㄅcUML對(duì)象生存周期對(duì)象的生存周期屬于對(duì)象的實(shí)現(xiàn)視

17、圖。在程序執(zhí)行過(guò)程中,它們根據(jù)需要被創(chuàng)建;一旦它們的使命完成不再需要它們時(shí),對(duì)象將被銷毀。從這個(gè)意義上講,對(duì)象具有動(dòng)態(tài)性。對(duì)象的創(chuàng)建稱為實(shí)例化。對(duì)象具有狀態(tài)和行為。對(duì)象的狀態(tài)保存在對(duì)象內(nèi)部的屬性中,對(duì)象的行為通過(guò)相關(guān)的操作來(lái)表現(xiàn)。對(duì)象之間可以并行工作,各自獨(dú)立處理自己的數(shù)據(jù),同時(shí)改變自己的狀態(tài)。對(duì)象之間還具有通信能力,它們通過(guò)互相發(fā)送消息進(jìn)行通信,協(xié)同完成工作流程。3030第3章 面向?qū)ο蠓椒ㄅcUML3.2 統(tǒng)一建模語(yǔ)言UML概述3131第3章 面向?qū)ο蠓椒ㄅcUML什么是建模所謂建模就是對(duì)現(xiàn)實(shí)的簡(jiǎn)化或抽象,它濾掉了非本質(zhì)的細(xì)節(jié),集中描繪復(fù)雜問(wèn)題或結(jié)構(gòu)的本質(zhì),使得問(wèn)題更容易理解。模型可以幫助人們

18、按照實(shí)際情況或按照人們所需要的樣式對(duì)系統(tǒng)進(jìn)行直觀的描繪;模型允許人們細(xì)致地說(shuō)明系統(tǒng)的結(jié)構(gòu)和行為;模型給出一個(gè)指導(dǎo)人們構(gòu)造系統(tǒng)的模板;模型可以通過(guò)文檔的方式把人們的決策正式記載下來(lái)。建模是系統(tǒng)成功的一個(gè)基本因素。3232第3章 面向?qū)ο蠓椒ㄅcUML建模過(guò)程原則 選擇創(chuàng)建的模型應(yīng)能反映所要處理和解決的問(wèn)題。 根據(jù)觀察者的角色和觀察的原因,可選擇用不同詳細(xì)程度表示的模型。 模型建造要基于現(xiàn)實(shí)、反映現(xiàn)實(shí)。 為了完整地理解和表達(dá)系統(tǒng),需要用一組從不同視角描述系統(tǒng)的模型。 構(gòu)造模型的基本技術(shù)是抽象,應(yīng)抓住與問(wèn)題有關(guān)的主要特征,從抽象到具體,逐步引進(jìn)問(wèn)題詳細(xì)可行的解決方案。3333第3章 面向?qū)ο蠓椒ㄅcUM

19、L建模過(guò)程原則 不要追求絕對(duì)的真實(shí)和完美,只須從預(yù)期目標(biāo)的角度看其是否充分。 應(yīng)當(dāng)分階段刻畫(huà)問(wèn)題的關(guān)鍵方面,略去相對(duì)次要的因素。 建模語(yǔ)言應(yīng)支持人的由模糊到清晰、由粗到細(xì)、逐漸完善的認(rèn)識(shí)過(guò)程。 應(yīng)采用可視化圖形建模語(yǔ)言,例如UML。3434第3章 面向?qū)ο蠓椒ㄅcUMLUML發(fā)展歷史UML(Unified Modeling Language)是一種定義良好、易于表達(dá)、功能強(qiáng)大且普遍適用的建模語(yǔ)言。它融入了軟件工程領(lǐng)域的新思想、新方法和新技術(shù)。它的作用域不僅支持面向?qū)ο笙到y(tǒng)的分析與設(shè)計(jì),還支持從需求分析開(kāi)始的系統(tǒng)開(kāi)發(fā)的全過(guò)程。20世紀(jì)90年代,有3種著名方法是OMT(Rumbaugh)、Booch

20、和OOSE(Jacobson)。每種方法都有自己的開(kāi)發(fā)過(guò)程、表示符號(hào)和側(cè)重點(diǎn)。OMT的強(qiáng)項(xiàng)在分析,而弱項(xiàng)在設(shè)計(jì);Booch 91的強(qiáng)項(xiàng)在設(shè)計(jì),而弱項(xiàng)在分析;OOSE的強(qiáng)項(xiàng)在行為分析,而弱項(xiàng)在其他領(lǐng)域。3535第3章 面向?qū)ο蠓椒ㄅcUML36第3章 面向?qū)ο蠓椒ㄅcUMLUML的特點(diǎn) 統(tǒng)一標(biāo)準(zhǔn)。融合了當(dāng)前一些流行的面向?qū)ο箝_(kāi)發(fā)方法的主要概念和技術(shù),成為一種面向?qū)ο蟮臉?biāo)準(zhǔn)化的統(tǒng)一建模語(yǔ)言。提供了標(biāo)準(zhǔn)的面向?qū)ο蟮哪P驮氐亩x和表示法,有標(biāo)準(zhǔn)的語(yǔ)言工具可用。已成為工業(yè)標(biāo)準(zhǔn)化組織OMG的正式標(biāo)準(zhǔn)。 面向?qū)ο蟆ML支持面向?qū)ο蠹夹g(shù)的主要概念,它提供了一批基本的表示模型元素的圖形和方法,能簡(jiǎn)潔明了地表達(dá)面

21、向?qū)ο蟮母鞣N概念和模型元素。3637第3章 面向?qū)ο蠓椒ㄅcUMLUML的特點(diǎn) 可視化,表達(dá)能力強(qiáng)大。一種圖形化語(yǔ)言,系統(tǒng)的邏輯模型和實(shí)現(xiàn)模型都能用UML的模型圖形清晰地表示??梢蕴幚砼c軟件的說(shuō)明和文檔有關(guān)的問(wèn)題。提供了語(yǔ)言的擴(kuò)展機(jī)制,用戶可以根據(jù)需要增加定義自己的衍型(StereoType)、標(biāo)記值和約束等??捎糜诟鞣N復(fù)雜類型的軟件系統(tǒng)的建模。3738第3章 面向?qū)ο蠓椒ㄅcUMLUML的特點(diǎn) 獨(dú)立于過(guò)程。UML是系統(tǒng)建模語(yǔ)言,不依賴特定的開(kāi)發(fā)過(guò)程。 容易掌握使用。UML概念明確,建模表示法簡(jiǎn)潔明了,圖形結(jié)構(gòu)清晰,容易掌握使用。只要著重學(xué)習(xí)3個(gè)方面的主要內(nèi)容(UML的基本模型元素、組織模型元素的

22、規(guī)則、UML語(yǔ)言的公共機(jī)制),基本就了解了UML,剩下的就是實(shí)踐的問(wèn)題了。 與編程語(yǔ)言的關(guān)系。 可自動(dòng)生成Java,C+的代碼框架3839第3章 面向?qū)ο蠓椒ㄅcUMLUML的視圖一個(gè)軟件系統(tǒng)往往可以從不同的角度對(duì)其進(jìn)行觀察,從某個(gè)角度觀察到的系統(tǒng)就構(gòu)成了系統(tǒng)的一個(gè)視圖。每個(gè)視圖都是整個(gè)系統(tǒng)描述的一個(gè)投影,若干個(gè)不同的視圖可以完整地描述出所建造的系統(tǒng)。每種視圖用若干幅圖來(lái)描述,一幅圖包含了系統(tǒng)的某一特殊方面的信息。3940第3章 面向?qū)ο蠓椒ㄅcUMLUML的構(gòu)成UML的三個(gè)主要組成元素1)基本構(gòu)造塊(basic building blocks )2)組織構(gòu)造塊的規(guī)則(rules)3)運(yùn)用于整個(gè)U

23、ML的公共機(jī)制(common mechanisms)UML包括三種基本構(gòu)造塊:1)事物(things)2)關(guān)系(relationships)3)圖(diagrams)4041第3章 面向?qū)ο蠓椒ㄅcUMLUML視圖的4個(gè)主題域結(jié)構(gòu)主題域描述了系統(tǒng)中的結(jié)構(gòu)成員及其相互關(guān)系,包括靜態(tài)視圖、設(shè)計(jì)視圖和用例視圖;動(dòng)態(tài)主題域描述了系統(tǒng)的行為或其他隨時(shí)間變化的行為,包括狀態(tài)機(jī)視圖、活動(dòng)視圖和交互視圖;物理主題域描述了系統(tǒng)中的計(jì)算資源及其總體結(jié)構(gòu)上的部署,包括部署視圖;模型管理主題域描述層次結(jié)構(gòu)中模型自身的組織(利用包來(lái)組織模型),包括模型管理視圖和剖面。4142第3章 面向?qū)ο蠓椒ㄅcUMLUML的視圖 用例

24、視圖(Use Case View) 用例視圖由一組用例圖構(gòu)成,其基本組成部件是用例、參與者和系統(tǒng),用于從系統(tǒng)的外部視角描述參與者與系統(tǒng)的交互,進(jìn)行系統(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)實(shí)現(xiàn)的視角)。 設(shè)計(jì)視圖(Design View) 設(shè)計(jì)視圖由一組內(nèi)部結(jié)構(gòu)圖、通信圖和構(gòu)件圖實(shí)現(xiàn)。它用于對(duì)應(yīng)用系統(tǒng)自身的設(shè)計(jì)層面的結(jié)構(gòu)建模。4243第3章 面向?qū)ο蠓椒ㄅcUMLUML的視圖 狀態(tài)機(jī)視圖(State Machine View) 狀態(tài)機(jī)視圖用狀態(tài)機(jī)圖表示。每個(gè)狀

25、態(tài)機(jī)圖用于對(duì)一個(gè)類實(shí)例的整個(gè)生存周期的個(gè)體行為建模,它描述了該實(shí)例的一組狀態(tài)和這些狀態(tài)之間的遷移。 活動(dòng)視圖(Activity View) 活動(dòng)視圖用活動(dòng)圖表示?;顒?dòng)圖相當(dāng)于傳統(tǒng)的程序流程圖的作用,用于描述一個(gè)系統(tǒng)或子系統(tǒng)的工作流,或者描述某一算法中計(jì)算活動(dòng)的控制流。 交互視圖(Interaction View) 交互視圖可用順序圖和通信圖表示,描述系統(tǒng)中一組對(duì)象如何通過(guò)消息傳遞,共同協(xié)作來(lái)實(shí)現(xiàn)某一個(gè)用例或構(gòu)件的功能。4344第3章 面向?qū)ο蠓椒ㄅcUMLUML的視圖 部署視圖(Deployment View) 部署視圖用部署圖表示,部署圖描述了運(yùn)行時(shí)結(jié)點(diǎn)(如計(jì)算機(jī)等物理設(shè)備資源)的配置及其連接

26、,以及各種制品在結(jié)點(diǎn)網(wǎng)絡(luò)上的分布。制品是一個(gè)物理實(shí)現(xiàn)單元,如一個(gè)文件,它也可以表示一個(gè)或多個(gè)構(gòu)件的實(shí)現(xiàn)。 模型管理視圖(Model Managernent View) 模型管理視圖對(duì)模型自身的組織建模。一個(gè)模型由一組保存模型元素(如類、狀態(tài)機(jī)、用例)的包組成。包還可以包含其他的包,因此,一個(gè)模型從一個(gè)間接包含所有模型內(nèi)容的根包(Root Package)開(kāi)始。包是操縱模型內(nèi)容的單元,還是訪問(wèn)控制和配置控制的單元。每個(gè)模型元素可以被一個(gè)包或另一個(gè)元素?fù)碛?。模型管理信息通常展示在包圖中,它是類圖的變種。 剖面(Profile) UML是用一個(gè)元模型(Meta-model)定義的。元模型是指描述建模

27、語(yǔ)言自身的模型。剖面機(jī)制允許在不修改基本元模型的前提下對(duì)UML作有限的變化。4445第3章 面向?qū)ο蠓椒ㄅcUMLUML的視圖UML包含3個(gè)主要的可擴(kuò)展結(jié)構(gòu):約束是以自然語(yǔ)言或特定形式語(yǔ)言書(shū)寫(xiě)的對(duì)語(yǔ)義的限制或條件,一般把約束寫(xiě)在花括號(hào)中,如 value 0 、 or 等。構(gòu)造型也叫做衍型,可追加在其他模型元素之上,使原來(lái)的模型元素變成具有特定語(yǔ)義的新變種。它本質(zhì)上是一種新元類(Metaclass)。一般用 標(biāo)記構(gòu)造型,如signal。標(biāo)簽值是貼在任何模型元素上被命名的信息片。4546第3章 面向?qū)ο蠓椒ㄅcUML47第3章 面向?qū)ο蠓椒ㄅcUML3.3 UML的模型元素4648第3章 面向?qū)ο蠓椒ㄅc

28、UMLUML的事物事物是對(duì)模型中最具代表性成分的抽象。在UML中,可以將事物分為結(jié)構(gòu)事物、行為事物、分組事物和注釋事物4類。4749第3章 面向?qū)ο蠓椒ㄅcUMLUML的事物origin(24,20)(f)用例size(12,8)suspend()flush()(c)對(duì)象open()close()windowsEventManagerdata:windowsPalce Ordermove()display()(a)類(b)主動(dòng)類ISpelling(d)接口(e)狀態(tài)機(jī)Initializing(g)參與者OrderManegement(h)協(xié)作Orderform.Java(i)構(gòu)件Applicat

29、ionServer(j)結(jié)點(diǎn)UserInterfacePackage(k)包See policy.doc(l)注釋UML的基本事物50第3章 面向?qū)ο蠓椒ㄅcUMLUML的事物1結(jié)構(gòu)事物結(jié)構(gòu)事物是UML模型的靜態(tài)部分,主要用來(lái)描述概念的或物理的元素,包括類、主動(dòng)類、接口、用例、協(xié)作、構(gòu)件和結(jié)點(diǎn)等。 類(Class)- 類用帶有類名、屬性和操作的矩形框來(lái)表示。類名Windoworiginsizeopen( )close( )move( )display( )屬性操作4851第3章 面向?qū)ο蠓椒ㄅcUMLUML的事物 對(duì)象(Object)- 對(duì)象是類的實(shí)例,在使用時(shí)需在其名字下邊加下劃線,對(duì)象的屬性值

30、需明確給出。 接口(Interface)- 描述了一個(gè)類或構(gòu)件的一組外部可用的服務(wù)(操作)集。接口定義的是一組操作的描述,而不是操作的實(shí)現(xiàn)。供口需口4952第3章 面向?qū)ο蠓椒ㄅcUMLUML的事物 主動(dòng)類(Active Class)- 主動(dòng)類的實(shí)例應(yīng)具有一個(gè)或多個(gè)進(jìn)程或線程,能夠啟動(dòng)控制活動(dòng)。在圖形上,為了與普通類區(qū)分,主動(dòng)類用兩側(cè)加邊框的矩形表示。EventManagersuspend()flush()5053第3章 面向?qū)ο蠓椒ㄅcUMLUML的事物 用例(Use Case)- 亦稱用況,用于表示系統(tǒng)想要實(shí)現(xiàn)的行為,即描述一組動(dòng)作序列(即場(chǎng)景)。而系統(tǒng)執(zhí)行這組動(dòng)作后將產(chǎn)生一個(gè)對(duì)特定參與者有價(jià)

31、值的結(jié)果。在圖形上,用例用一個(gè)僅包含其名字的實(shí)線橢圓表示。Place Order實(shí)現(xiàn)用例OrderManagement協(xié)作5154第3章 面向?qū)ο蠓椒ㄅcUMLUML的事物 參與者(Aotor)- 亦稱行動(dòng)者或角色。參與者定義了一組與系統(tǒng)有信息交互關(guān)系的人、事、物,在圖形上用一個(gè)簡(jiǎn)化的小人表示。 協(xié)作(Collaboration)- 用例僅描述要實(shí)現(xiàn)的行為,不描述這些行為的實(shí)現(xiàn)。這種實(shí)現(xiàn)用協(xié)作描述。協(xié)作定義了一個(gè)交互,描述一組角色實(shí)體和其他實(shí)體如何通過(guò)協(xié)同工作來(lái)完成一個(gè)功能或行為。在圖形上,協(xié)作用一個(gè)僅包含名字的虛線橢圓表示 。Actor5255第3章 面向?qū)ο蠓椒ㄅcUMLUML的事物 構(gòu)件(C

32、omponent)- 亦稱組件,是系統(tǒng)中物理的、可替代的部件。它通常是一個(gè)描述了一些邏輯元素的物理包。在圖形上,構(gòu)件用一個(gè)帶有小方框的矩形來(lái)表示。Orderform.java5356第3章 面向?qū)ο蠓椒ㄅcUMLUML的事物 結(jié)點(diǎn)(Node)- 是在運(yùn)行時(shí)存在的物理元素。它代表一種可計(jì)算的資源,通常具有一定的記憶能力和處理能力。在圖形上,結(jié)點(diǎn)用立方體來(lái)表示。應(yīng)用服務(wù)器數(shù)據(jù)庫(kù)服務(wù)器課程管理成績(jī)管理5457第3章 面向?qū)ο蠓椒ㄅcUMLUML的事物2行為事物行為事物是UML模型的動(dòng)態(tài)部分,包括交互和狀態(tài)機(jī)兩類。 交互(Interaction)交互由在特定的上下文環(huán)境中共同完成一定任務(wù)的一組對(duì)象之間傳遞

33、的消息組成。交互涉及的元素包括消息、動(dòng)作序列和鏈。有名對(duì)象Assign(development)p:Person:Company消息匿名對(duì)象5558第3章 面向?qū)ο蠓椒ㄅcUMLUML的事物 狀態(tài)機(jī)(State Machine)狀態(tài)機(jī)描述了一個(gè)對(duì)象或一個(gè)交互在生存周期內(nèi)響應(yīng)事件所經(jīng)歷的狀態(tài)序列。狀態(tài)機(jī)涉及的元素包括狀態(tài)、轉(zhuǎn)換、事件活動(dòng)等。狀態(tài)用圓角矩形來(lái)表示。KeypressinitializingcommandExitidleFinished5659第3章 面向?qū)ο蠓椒ㄅcUMLUML的事物3分組事物分組事物是UML模型的組織部分。它的作用是降低模型的復(fù)雜性。包(Package)- 是把模型元素

34、組織成組的機(jī)制,結(jié)構(gòu)事物、行為事物甚至其他分組事物都可以放進(jìn)包內(nèi)。包不像構(gòu)件(僅在運(yùn)行時(shí)存在),它純粹是概念上的(即它僅在開(kāi)發(fā)時(shí)存在)。用戶接口包應(yīng)用包業(yè)務(wù)對(duì)象包5760第3章 面向?qū)ο蠓椒ㄅcUMLUML的事物4注釋事物注釋事物是UML模型的解釋部分,它們用來(lái)描述和標(biāo)注模型的任何元素。通常可以用注釋修飾帶有約束或者解釋的圖。See policy8-5-96.docfor details aboutthese algorithms.CashAccountpresentValue()5861第3章 面向?qū)ο蠓椒ㄅcUMLUML中的關(guān)系模型元素之間的關(guān)系也是模型元素,常見(jiàn)的關(guān)系有依賴、關(guān)聯(lián)、泛化和實(shí)現(xiàn)

35、4種。關(guān)系特征:這四種關(guān)系是UML模型中可以包含的基本關(guān)系。它們也有變體。例如,依賴的變體有細(xì)化、跟蹤、包含和延伸。5962第3章 面向?qū)ο蠓椒ㄅcUMLUML中的關(guān)系依賴關(guān)聯(lián)泛化實(shí)現(xiàn)聚合復(fù)合(狀態(tài))遷移同步消息簡(jiǎn)單消息異步消息UML中的關(guān)系5963第3章 面向?qū)ο蠓椒ㄅcUMLUML中的關(guān)系1依賴(Dependency)關(guān)系兩個(gè)事物之間的語(yǔ)義關(guān)系,其中目標(biāo)事物發(fā)生變化會(huì)影響源事物的語(yǔ)義。圖中虛線箭頭從源事物指向目標(biāo)事物,表示源事物依賴于目標(biāo)事物。CourseScheduleadd(c:Course)remove(c:Course)IteratorCourse6064第3章 面向?qū)ο蠓椒ㄅcUMLU

36、ML中的關(guān)系兩個(gè)類之間的依賴關(guān)系可以是:源類訪問(wèn)定義在目標(biāo)類內(nèi)部的數(shù)據(jù)值;源類的操作調(diào)用了定義在目標(biāo)類的操作;源類的返回類或參數(shù)是目標(biāo)類的實(shí)例;如果在順序圖中的兩個(gè)對(duì)象存在消息的傳送,而且它們之間沒(méi)有結(jié)構(gòu)方面的連接,可以在類圖上用依賴關(guān)系建模。依賴的變體包含特定的語(yǔ)義,表明類之間的關(guān)系、包之間的關(guān)系、用例之間的關(guān)系、對(duì)象之間的關(guān)系、建模元素與模型之間的關(guān)系等。6165第3章 面向?qū)ο蠓椒ㄅcUML類之間的依賴關(guān)系a. 友元依賴 目標(biāo)類(如二叉樹(shù))視源類(如迭代器)為友元,允許源類訪問(wèn)目標(biāo)類的所有私有屬性和操作。IteratorBinaryTreeb. 導(dǎo)出依賴 兩個(gè)類或?qū)ο笕绻嬖趯?dǎo)出依賴,則表

37、明源類(如年齡)可以從目標(biāo)類(如出生年月)通過(guò)計(jì)算導(dǎo)出。AgeBirthDay6266第3章 面向?qū)ο蠓椒ㄅcUML類之間的依賴關(guān)系c. 細(xì)化依賴 在類圖中表示同一模型的不同詳細(xì)程度的規(guī)格說(shuō)明,源類比目標(biāo)類更為詳細(xì)。Chessboardfrom optimizedchessboardfrom simpled. 實(shí)例化依賴 若要強(qiáng)調(diào)一個(gè)類的對(duì)象是由另一個(gè)類的對(duì)象創(chuàng)建的,可用實(shí)例化依賴。它表明源類創(chuàng)建了目標(biāo)類的一個(gè)實(shí)例。ArrayStack6367第3章 面向?qū)ο蠓椒ㄅcUML類之間的依賴關(guān)系e. 使用依賴 不加任何修飾的依賴即為使用依賴。也可用修飾強(qiáng)調(diào)源類的語(yǔ)義依賴于目標(biāo)類的具有共有可見(jiàn)性的構(gòu)成的語(yǔ)

38、義。Binary SearchTreeBinary Treef. 綁定(Binding)依賴這種依賴關(guān)系中的目標(biāo)類是模板類,源類是從模板實(shí)例化的類。 Stack Stack6468第3章 面向?qū)ο蠓椒ㄅcUML包之間的依賴關(guān)系a. 訪問(wèn)依賴 它表明源包被賦予了可訪問(wèn)目標(biāo)包的權(quán)限。sourcetargetb. 導(dǎo)入依賴 它表明了源包可以訪問(wèn)目標(biāo)包里的元素,但各個(gè)包有自己獨(dú)立的命名空間,這意味著屬于不同包的兩個(gè)元素可以重名。導(dǎo)入依賴可以使目標(biāo)包內(nèi)的公共可見(jiàn)元素進(jìn)入源包的命名空間。sourcetarget6569第3章 面向?qū)ο蠓椒ㄅcUML用例之間的依賴關(guān)系a. 包含依賴 它表明源用例顯式地包含目標(biāo)用

39、例作為其行為的一部分。此時(shí)將源用例稱為基用例,目標(biāo)用例稱為內(nèi)含用例。如果兩個(gè)用例之間具有包含依賴關(guān)系,則表明基用例的動(dòng)作序列中有特定的步驟把內(nèi)含用例的動(dòng)作序列包含進(jìn)來(lái)。baseuse caseinclusionuse case6670第3章 面向?qū)ο蠓椒ㄅcUML用例之間的依賴關(guān)系b. 擴(kuò)展依賴 它表明源用例擴(kuò)展了目標(biāo)用例的行為。此時(shí),源用例稱為基用例,目標(biāo)用例稱為擴(kuò)展用例。擴(kuò)展用例在特定條件下為基用例提供附加的動(dòng)態(tài)行為。例如,在人機(jī)交互過(guò)程中出現(xiàn)差錯(cuò)時(shí)進(jìn)行的異常處理即為擴(kuò)展動(dòng)作。baseuse caseextensionuse case擴(kuò)展依賴與包含依賴的區(qū)別在于,如果僅將擴(kuò)展從基用例地動(dòng)作序

40、列中去除,基用例仍然是語(yǔ)義完備的,即它的執(zhí)行仍將產(chǎn)生有意義的結(jié)果。而包含依賴則不然。6771第3章 面向?qū)ο蠓椒ㄅcUML對(duì)象之間的依賴關(guān)系a. 轉(zhuǎn)換依賴 當(dāng)需要在交互圖上表示對(duì)象狀態(tài)的轉(zhuǎn)換時(shí)可以用轉(zhuǎn)換依賴。主要強(qiáng)調(diào)由于消息而導(dǎo)致對(duì)象狀態(tài)的改變。轉(zhuǎn)換依賴連接的目標(biāo)對(duì)象和源對(duì)象是同一個(gè)對(duì)象。b. 調(diào)用依賴 當(dāng)需要在交互圖或?qū)ο髨D上顯式強(qiáng)調(diào)對(duì)象之間或操作之間的調(diào)用關(guān)系時(shí)要用調(diào)用依賴。它表明源對(duì)象引用了目標(biāo)對(duì)象的操作,或源操作引用了目標(biāo)操作。6872第3章 面向?qū)ο蠓椒ㄅcUML對(duì)象之間的依賴關(guān)系c. 復(fù)制依賴 為了在交互圖或活動(dòng)圖上描述對(duì)象復(fù)制的動(dòng)作可以采用復(fù)制依賴。它連接兩個(gè)對(duì)象,目標(biāo)對(duì)象是源對(duì)象的

41、完全相同而又獨(dú)立的副本。d. 發(fā)送依賴 它連接一個(gè)對(duì)象(在源端)和一個(gè)消息(在目標(biāo)端),表明源對(duì)象在交互過(guò)程中發(fā)送了一個(gè)消息,可以用在狀態(tài)機(jī)的描述中。它針對(duì)內(nèi)嵌有狀態(tài)機(jī)的對(duì)象,可用來(lái)描述如何通過(guò)發(fā)送信號(hào)以產(chǎn)生某種事件的動(dòng)作。6973第3章 面向?qū)ο蠓椒ㄅcUML建模元素與模型之間的依賴關(guān)系a. 回溯依賴 它連接兩個(gè)模型元素,表明目標(biāo)是源的歷史上的前驅(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)系,它描述了兩個(gè)或多個(gè)類的實(shí)例之間的連接關(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)是最常見(jià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)描述兩個(gè)類之間的關(guān)聯(lián),用兩個(gè)類之間的一條直線來(lái)表示,直線上可寫(xiě)上關(guān)聯(lián)名。關(guān)聯(lián)通常是雙向的,每一個(gè)方向可有一個(gè)關(guān)聯(lián)名,并用一個(gè)實(shí)心三角來(lái)指示關(guān)聯(lián)名指的是哪一個(gè)方向。如果關(guān)聯(lián)含義清晰的話,也可不起名字。關(guān)聯(lián)與兩端的類連接的地方叫做關(guān)聯(lián)端點(diǎn),在關(guān)聯(lián)兩端連接的類各自充當(dāng)了某種角色,有關(guān)的信息(如角色名、可見(jiàn)性、多重性等)可附加到各個(gè)端點(diǎn)上。7276第3章 面向?qū)ο蠓椒ㄅcUMLUML中的關(guān)系77普通關(guān)聯(lián)多重性:表

43、明一個(gè)關(guān)聯(lián)的兩端連接的類實(shí)例個(gè)數(shù)的對(duì)應(yīng)關(guān)系。11個(gè)實(shí)例 0.* 或* 0到多個(gè)實(shí)例0.10到1個(gè)實(shí)例 1+或1.* 1到多個(gè)實(shí)例角色名:表示類實(shí)例在這個(gè)關(guān)聯(lián)中扮演的角色。一個(gè)類可與它自身關(guān)聯(lián)。多元關(guān)聯(lián):3個(gè)或3個(gè)以上類之間的關(guān)聯(lián)。多元關(guān)聯(lián)由一個(gè)菱形,以及由菱形引出的通向各個(gè)相關(guān)類的直線組成。78第3章 面向?qū)ο蠓椒ㄅcUMLUML中的關(guān)系2)限定關(guān)聯(lián)限定關(guān)聯(lián)通常用在一對(duì)多或多對(duì)多的關(guān)聯(lián)關(guān)系中,可以把模型中的多重性從一對(duì)多變成一對(duì)一,或?qū)⒍鄬?duì)多簡(jiǎn)化成多對(duì)一。一種方式是在類圖中關(guān)聯(lián)關(guān)系的下方加約束;另一種方式是在類圖中把限定詞(Qualifier)放在關(guān)聯(lián)關(guān)系末端的一個(gè)小方框內(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)系比較簡(jiǎn)單的情況下,關(guān)聯(lián)關(guān)系的語(yǔ)義用關(guān)聯(lián)關(guān)系的名字來(lái)概括。但在某些情況下,需要對(duì)關(guān)聯(lián)關(guān)系的語(yǔ)義做詳細(xì)的定義、存儲(chǔ)和訪問(wèn),為此可以建立關(guān)聯(lián)類(Association Class),用來(lái)描述關(guān)聯(lián)的屬性。關(guān)聯(lián)中的每個(gè)鏈與關(guān)聯(lián)類的一個(gè)實(shí)例相聯(lián)系,關(guān)聯(lián)類通過(guò)一條虛線與關(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)系中處于部分方的實(shí)例可同時(shí)參與多個(gè)處于整體方實(shí)例的構(gòu)成,則該聚合稱為共享聚合。聚合和共享聚合的圖示符號(hào)是在表示關(guān)聯(lián)關(guān)系的直線末端緊挨著整體類的地方畫(huà)一個(gè)空心菱形。7582第3章 面向?qū)ο蠓椒ㄅcUMLUML中的關(guān)系4)聚合如果部分類完全隸屬于整體類,部分類需要與整體類共存,一旦整體類不存在了,則部分類也會(huì)隨之消失,或失去存在價(jià)值,則這種聚合稱為復(fù)合聚合,在復(fù)合聚合關(guān)系中整體方的菱形為實(shí)

46、心菱形。7683第3章 面向?qū)ο蠓椒ㄅcUMLUML中的關(guān)系4)聚合導(dǎo)航(Navigabihty)是關(guān)聯(lián)關(guān)系的一種特性,它通過(guò)在關(guān)聯(lián)的一個(gè)端點(diǎn)上加箭頭來(lái)表示導(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ò)的繼承基本相同。但要了解的是,在泛化關(guān)系中常遇到一個(gè)特殊的類-抽象類。一般稱沒(méi)有具體對(duì)象的類為抽象類。抽象類通常作為父類,用于描述其他類(子類)的公共屬性和行為。在圖形上,抽象類的類名下附加一個(gè)標(biāo)簽值abstract 。79普通泛化可以分為多重繼承和單繼承。86第3章 面向?qū)ο蠓椒ㄅcUMLUML中的關(guān)系7987第3章 面向?qū)ο蠓椒ㄅcUMLUML中的關(guān)系2)受限泛化受限泛化關(guān)系是指泛化具有約束條件。預(yù)定義的約束有4種:交疊(Overlapping)、不相交(Disjoint)、完全(Complete)和不完全(Incomplate)。這些約束都是語(yǔ)義約束。8088受限泛

48、化一個(gè)一般類可以從不同的方面將其特化成不同的特殊類集合。例如人可以分成男人和女人,這覆蓋了人的所有性別,約束是“完全的”,并且是互斥的,約束是“不相交的”。從職業(yè)角度,人又可以分為教師,醫(yī)生,并未覆蓋所有職業(yè),約束是“不完全的”,而且允許一個(gè)人有多個(gè)職業(yè),如醫(yī)科大學(xué)的教師也可以是醫(yī)生,約束是“交疊”的。89第3章 面向?qū)ο蠓椒ㄅcUMLUML中的關(guān)系4實(shí)現(xiàn)(Implement)關(guān)系實(shí)現(xiàn)是泛化關(guān)系和依賴關(guān)系的結(jié)合,也是類之間的語(yǔ)義關(guān)系,通常在以下兩種情況出現(xiàn)實(shí)現(xiàn)關(guān)系: 接口和實(shí)現(xiàn)它們的類或構(gòu)件之間。 用例和實(shí)現(xiàn)它們的協(xié)作之間。在UML中,實(shí)現(xiàn)關(guān)系用帶有空心箭頭的虛線表示。8190第3章 面向?qū)ο蠓?/p>

49、法與UMLUML中的關(guān)系8191第3章 面向?qū)ο蠓椒ㄅcUML3.4 UML中的圖8292第3章 面向?qū)ο蠓椒ㄅcUML外部視圖外部視圖主要用用例圖、活動(dòng)圖和順序圖來(lái)描述。例子:系統(tǒng)的問(wèn)題陳述如下:“在每個(gè)學(xué)期開(kāi)始時(shí),注冊(cè)管理員(Registrar)設(shè)置一個(gè)學(xué)期開(kāi)設(shè)的所有課程信息,并根據(jù)學(xué)生的專業(yè),為學(xué)生提供一個(gè)可選課程的目錄,列出他可選擇的課程。學(xué)生(Student)可以申請(qǐng)這個(gè)課程目錄,選擇4門課程。另外,每個(gè)學(xué)生還要指定2門候補(bǔ)課程,以便所選課程滿員或被取消的情況下進(jìn)行調(diào)整。每門課程的選課學(xué)生人數(shù)限制在310名。一個(gè)學(xué)生的注冊(cè)過(guò)程完成后,注冊(cè)系統(tǒng)就會(huì)將信息發(fā)送給計(jì)費(fèi)系統(tǒng)(Billing Sy

50、stem),這樣這名學(xué)生就可以為這個(gè)學(xué)期付費(fèi)了。教授(Professor)可以使用這個(gè)系統(tǒng)提交他計(jì)劃開(kāi)設(shè)的課程,查看哪些學(xué)生注冊(cè)了他的課程。”8393第3章 面向?qū)ο蠓椒ㄅcUML外部視圖1用例圖(Use Case Diagram)用例圖展現(xiàn)了一組用例、參與者和擴(kuò)展關(guān)系、包含關(guān)系等。該圖的作用是描述系統(tǒng)的行為,即該系統(tǒng)在它的上下文環(huán)境中所提供的外部可見(jiàn)服務(wù)。因此,用例圖有兩種使用方式:一是上下文環(huán)境建模,說(shuō)明位于系統(tǒng)之外并與系統(tǒng)進(jìn)行交互的參與者以及它們所扮演的角色的含義;二是功能需求建模,說(shuō)明系統(tǒng)想要的行為。8494第3章 面向?qū)ο蠓椒ㄅcUML外部視圖95第3章 面向?qū)ο蠓椒ㄅcUML外部視圖如果

51、多個(gè)用例共享一個(gè)功能,可以單獨(dú)建立一個(gè)用例以描述這個(gè)功能,并建立用例之間的聯(lián)系,包括“包含”和“擴(kuò)展”關(guān)系。8596第3章 面向?qū)ο蠓椒ㄅcUML外部視圖2活動(dòng)圖(Activity Diagram)用例圖描述了系統(tǒng)應(yīng)提供的功能,但不包括實(shí)現(xiàn)功能的細(xì)節(jié)。如果需要描述功能的實(shí)現(xiàn)細(xì)節(jié),可以使用活動(dòng)圖和順序圖。活動(dòng)圖顯示了用例中的操作和操作之間的控制流和數(shù)據(jù)流。使用活動(dòng)圖可以表達(dá)出計(jì)算過(guò)程或工作流順序的和并發(fā)的執(zhí)行步驟。8697第3章 面向?qū)ο蠓椒ㄅcUML外部視圖分支或決策點(diǎn)控制流活動(dòng)或動(dòng)作(并行流)分叉(并行流)合并接收一個(gè)事件發(fā)送一個(gè)事件按時(shí)間點(diǎn)啟動(dòng)操作活動(dòng)起始點(diǎn)活動(dòng)終點(diǎn)控制流終點(diǎn)活動(dòng)圖中主要符號(hào)8

52、698第3章 面向?qū)ο蠓椒ㄅcUML外部視圖使用活動(dòng)圖可以描述用例的業(yè)務(wù)工作流,進(jìn)行工作流建模,展示與系統(tǒng)交互的參與者所能觀察到的活動(dòng)。在后續(xù)的設(shè)計(jì)階段,還可以利用活動(dòng)圖對(duì)操作的控制流建模。此時(shí)可以把活動(dòng)當(dāng)做程序流程圖使用,對(duì)一個(gè)計(jì)算的細(xì)節(jié)部分進(jìn)行描述。我們希望在活動(dòng)圖中既能描述執(zhí)行了什么活動(dòng),又能夠說(shuō)明該活動(dòng)由誰(shuí)來(lái)完成,可以使用泳道來(lái)描述這種關(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“瀏覽課程目錄”的活動(dòng)圖87100第3章 面向?qū)ο蠓椒ㄅcUML外部視圖3順序圖(Sequence Diagram)順序圖也稱為序列圖,它按時(shí)間順序顯示對(duì)象之間的交互,描述了如何通過(guò)對(duì)象之間的交互實(shí)現(xiàn)用例。它由在一個(gè)上下文環(huán)境中的一組對(duì)象及它們之間交互的信息組成。對(duì)象表述為虛垂線頂端的矩形框。這些對(duì)象都排列在圖的頂部。其中,

54、發(fā)起用例活動(dòng)的對(duì)象(如參與者)放在最左邊,其他對(duì)象按邊界對(duì)象、控制對(duì)象、實(shí)體對(duì)象依次排列。每個(gè)對(duì)象下面有一條虛垂線,稱為該對(duì)象的生命線,表明對(duì)象在一段時(shí)間內(nèi)存在,以此說(shuō)明對(duì)象可以在交互過(guò)程中創(chuàng)建,在交互過(guò)程中撤銷。88101第3章 面向?qū)ο蠓椒ㄅcUML外部視圖在生命線上覆蓋的瘦高的矩形稱為控制焦點(diǎn),表示一個(gè)對(duì)象執(zhí)行一個(gè)動(dòng)作所經(jīng)歷的時(shí)間段。矩形的頂部表示動(dòng)作的開(kāi)始,底部表示動(dòng)作的結(jié)束(可以用一個(gè)由虛線剪頭表示的返回消息來(lái)標(biāo)記)。生命線之間的箭頭表示消息。它從一個(gè)對(duì)象指向另一個(gè)對(duì)象。消息箭頭可以回到同一條生命線,指明自調(diào)用,即對(duì)象發(fā)給自己的消息。消息出現(xiàn)的次序自上而下。順序圖展現(xiàn)了一組對(duì)象和由這組

55、對(duì)象收發(fā)的消息,用于按時(shí)間順序?qū)刂屏鹘!?9102第3章 面向?qū)ο蠓椒ㄅcUML外部視圖89103第3章 面向?qū)ο蠓椒ㄅcUML內(nèi)部視圖UML的內(nèi)部視圖描述系統(tǒng)內(nèi)部的過(guò)程、活動(dòng)、關(guān)系和結(jié)構(gòu)。下面介紹幾個(gè)主要的內(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)航指示符,角色名字等。特別地,主動(dòng)類的類圖給出了系統(tǒng)的靜態(tài)進(jìn)程視圖。90104第3章 面向?qū)ο蠓椒ㄅcUML內(nèi)部視圖105第3章 面向?qū)ο蠓椒ㄅcUML內(nèi)部視圖在類的描述中,屬性和操作可具有不同的可見(jiàn)性。常用的可見(jiàn)性包括 public(

56、公用)private(私用)和 protected(保護(hù),在繼承關(guān)系中使用),在UML中分別用“+”、“-”和“#”表示。UML還允許在屬性和操作后附加約束特性的說(shuō)明。如在某屬性后加“只讀”說(shuō)明該屬性是只讀屬性;又如在某操作后加“const”說(shuō)明該操作是常值操作,操作的結(jié)果不會(huì)改變類對(duì)象的值。91106第3章 面向?qū)ο蠓椒ㄅcUML內(nèi)部視圖2對(duì)象圖(object Diagram)對(duì)象是類的實(shí)例,對(duì)象圖可以看做是類圖的一個(gè)實(shí)例,對(duì)象之間的鏈(Link)可以是類之間關(guān)聯(lián)的實(shí)例。因此,對(duì)象圖展現(xiàn)了一組對(duì)象以及它們之間的關(guān)系,用以詳述、構(gòu)造和文檔化系統(tǒng)中存在的對(duì)象以及它們之間的相互關(guān)系。92107第3章

57、 面向?qū)ο蠓椒ㄅcUML內(nèi)部視圖108第3章 面向?qū)ο蠓椒ㄅcUML內(nèi)部視圖3通信圖(Communication Diagram)通信圖在UML 2.0以前的版本稱為協(xié)作圖或合作圖,它是動(dòng)態(tài)設(shè)計(jì)視圖,強(qiáng)調(diào)參加交互的各個(gè)對(duì)象的組織。通信圖只對(duì)相互間有交互的對(duì)象和這些對(duì)象之間的關(guān)系建模,而忽略了其他對(duì)象和關(guān)聯(lián)。通信圖可以被視為對(duì)象圖的擴(kuò)展,但它除了展現(xiàn)出對(duì)象之間的鏈接外,還顯示出對(duì)象之間的消息傳遞。在表示鏈接的直線上可以附加名字,對(duì)象之間的消息傳遞用箭頭標(biāo)示在鏈的旁邊,箭頭的方向從發(fā)送消息的對(duì)象指向接收消息的對(duì)象。消息上所附序列號(hào)指明消息執(zhí)行的時(shí)間順序。93109第3章 面向?qū)ο蠓椒ㄅcUML內(nèi)部視圖1

58、10通信圖通信圖與順序圖都可以表示對(duì)象之間的交互,都屬于交互圖,在語(yǔ)義上是等價(jià)的,但它們之間也有不同。順序圖主要強(qiáng)調(diào)各個(gè)消息收發(fā)的時(shí)間先后次序,但沒(méi)有明確表達(dá)對(duì)象之間的關(guān)系。通信圖主要強(qiáng)調(diào)各個(gè)對(duì)象的組織關(guān)系,但時(shí)間順序必須從消息的序列號(hào)得到,一般多用于內(nèi)部視圖。111第3章 面向?qū)ο蠓椒ㄅcUML內(nèi)部視圖94112第3章 面向?qū)ο蠓椒ㄅcUML內(nèi)部視圖4狀態(tài)機(jī)圖(State Machine Diagram)在UML中,一個(gè)類的對(duì)象有其生存周期過(guò)程。在此過(guò)程中對(duì)象具有若干典型的狀態(tài),當(dāng)探測(cè)到某一事件發(fā)生,對(duì)象做出響應(yīng)就將導(dǎo)致?tīng)顟B(tài)的轉(zhuǎn)變。對(duì)象的每個(gè)狀態(tài)執(zhí)行若干活動(dòng)或動(dòng)作,從而表現(xiàn)出某種行為并完成某種工

59、作。狀態(tài)機(jī)圖通過(guò)對(duì)類的對(duì)象的生存周期建模來(lái)描述對(duì)象隨時(shí)間變化的動(dòng)態(tài)行為,它由狀態(tài)、遷移、事件和活動(dòng)組成 。95113第3章 面向?qū)ο蠓椒ㄅcUML內(nèi)部視圖95114第3章 面向?qū)ο蠓椒ㄅcUML內(nèi)部視圖狀態(tài)分為起始狀態(tài)、終止?fàn)顟B(tài)和中間狀態(tài)。起始狀態(tài)表示激活一個(gè)對(duì)象,開(kāi)始該對(duì)象的生存周期的歷程;終止?fàn)顟B(tài)表示對(duì)象完成生存周期的狀態(tài)遷移的所有活動(dòng),結(jié)束對(duì)象的生存周期歷程;中間狀態(tài)表示對(duì)象處于生存周期的某一位置并執(zhí)行相關(guān)的活動(dòng)或動(dòng)作。一個(gè)狀態(tài)機(jī)圖可以有一個(gè)起始狀態(tài)和零個(gè)或多個(gè)終止?fàn)顟B(tài)。狀態(tài)遷移表示圖中一個(gè)狀態(tài)到另一個(gè)狀態(tài)的轉(zhuǎn)換,在狀態(tài)機(jī)圖中用連接兩個(gè)狀態(tài)的箭頭表示。狀態(tài)遷移分成外部遷移和內(nèi)部遷移。外部遷移是系統(tǒng)響應(yīng)某個(gè)事件并導(dǎo)致對(duì)象狀態(tài)轉(zhuǎn)換的遷移,通常把事件名寫(xiě)在表示遷移的箭頭旁,需要時(shí)可加上引發(fā)遷移的條件表達(dá)式。內(nèi)部遷移也是系統(tǒng)響應(yīng)某個(gè)事件的發(fā)生而被觸發(fā)的,但它不會(huì)導(dǎo)致對(duì)象狀態(tài)的轉(zhuǎn)換,因此這種遷移只有源狀態(tài)而沒(méi)有目標(biāo)狀態(tài)也可以說(shuō),內(nèi)部遷移是對(duì)象處于該狀態(tài)時(shí),為響應(yīng)事件而在狀態(tài)內(nèi)部執(zhí)行的活動(dòng)或動(dòng)作,它不改變狀態(tài)。96115第3章 面向?qū)ο蠓椒ㄅcUML內(nèi)部視圖96116第3章 面向?qū)ο蠓椒ㄅcUML內(nèi)部視圖事件是指在某一時(shí)刻發(fā)生并造成影響的事。在狀態(tài)機(jī)中,一個(gè)事件的發(fā)生可以觸發(fā)狀態(tài)的遷移。

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論