UML與面向?qū)ο蠓治?-9-10(教案稿)_第1頁
UML與面向?qū)ο蠓治?-9-10(教案稿)_第2頁
UML與面向?qū)ο蠓治?-9-10(教案稿)_第3頁
UML與面向?qū)ο蠓治?-9-10(教案稿)_第4頁
UML與面向?qū)ο蠓治?-9-10(教案稿)_第5頁
已閱讀5頁,還剩119頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、UML與面向?qū)ο蠓治?-9-10(教案稿)第第9章:面向?qū)ο蠓椒▽W(xué)引論章:面向?qū)ο蠓椒▽W(xué)引論n9.1 面向?qū)ο蠓椒▽W(xué)概述面向?qū)ο蠓椒▽W(xué)概述n9.1.1 面向?qū)ο蠓椒▽W(xué)的要點(diǎn)面向?qū)ο蠓椒▽W(xué)的要點(diǎn)n 面向?qū)ο蠓椒▽W(xué)的基本原則:盡可能模擬人面向?qū)ο蠓椒▽W(xué)的基本原則:盡可能模擬人類習(xí)慣的思維方式,使開發(fā)軟件的方法與過程盡可類習(xí)慣的思維方式,使開發(fā)軟件的方法與過程盡可能接近人類認(rèn)識世界解決問題的方法與過程。能接近人類認(rèn)識世界解決問題的方法與過程。客觀世界中的實(shí)體客觀世界中的實(shí)體問題域中的對象;問題域中的對象;計(jì)算機(jī)中的實(shí)體計(jì)算機(jī)中的實(shí)體解空間對象;解空間對象;n解空間對象取決于程序設(shè)計(jì)語言:解空間對象取

2、決于程序設(shè)計(jì)語言:n 匯編語言的對象:存儲單元;匯編語言的對象:存儲單元;n 面向過程的高級語言的對象:變量、數(shù)組、記面向過程的高級語言的對象:變量、數(shù)組、記錄、文件等;錄、文件等;n 面向?qū)ο蟮母呒壵Z言的對象:除上述元素外,面向?qū)ο蟮母呒壵Z言的對象:除上述元素外,還包括窗體、菜單、按鈕、等等。還包括窗體、菜單、按鈕、等等。n 與傳統(tǒng)方法不同,面向?qū)ο蠓椒ㄒ詳?shù)與傳統(tǒng)方法不同,面向?qū)ο蠓椒ㄒ詳?shù)據(jù)為主線,將數(shù)據(jù)和操作方法封裝在對象據(jù)為主線,將數(shù)據(jù)和操作方法封裝在對象中,通過消息請求對象主動(dòng)執(zhí)行它的內(nèi)部中,通過消息請求對象主動(dòng)執(zhí)行它的內(nèi)部操作,改變其內(nèi)部私有數(shù)據(jù)。操作,改變其內(nèi)部私有數(shù)據(jù)。n面向?qū)ο?/p>

3、方法具有四個(gè)要點(diǎn):面向?qū)ο蠓椒ň哂兴膫€(gè)要點(diǎn):n A認(rèn)為客觀世界是由對象組成;認(rèn)為客觀世界是由對象組成;n B把所有對象都劃分成各種對象類(把所有對象都劃分成各種對象類(Class););n C把若干對象類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)把若干對象類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)(類等級);(類等級);n D對象彼此間僅通過傳遞消息互相聯(lián)系。對象彼此間僅通過傳遞消息互相聯(lián)系。n OO = Objects + Class + Inheritance + Communication with message n9.1.2 面向?qū)ο蠓椒ǖ膬?yōu)點(diǎn)面向?qū)ο蠓椒ǖ膬?yōu)點(diǎn)n 1與人們習(xí)慣的思維方法一致;與人們習(xí)慣的思維方法一致;n

4、 2穩(wěn)定性好;穩(wěn)定性好;n 3可重用性好;可重用性好;n 4較易開發(fā)大型軟件產(chǎn)品;較易開發(fā)大型軟件產(chǎn)品;n 5. 可維護(hù)性好??删S護(hù)性好。9.2 面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍頽9.2.1 對象對象 1、對象的形象表示、對象的形象表示 n狀態(tài)狀態(tài)Sn操作操作1n操作操作2n操作操作3n界面界面n操作操作1、2、3的實(shí)現(xiàn)的實(shí)現(xiàn)n圖圖9.2 對象的形象表示對象的形象表示n1)定義)定義1:對象是具有相同狀態(tài)的一組操作:對象是具有相同狀態(tài)的一組操作的集合。的集合。n2)定義)定義2:對象是對屬性值和操作的封裝。:對象是對屬性值和操作的封裝。n3)定義)定義3:對象:對象:= 其其中,中,ID是對象的名

5、字;是對象的名字;MS是對象中的操作是對象中的操作集合;集合;DS是對象的數(shù)據(jù)集合;是對象的數(shù)據(jù)集合;MI是對象受是對象受理的消息名集合(即對外接口)。理的消息名集合(即對外接口)。 n2、對象的定義、對象的定義n3、對象的特點(diǎn)、對象的特點(diǎn)n 1)以數(shù)據(jù)為中心;)以數(shù)據(jù)為中心;n 2)對象是主動(dòng)的;)對象是主動(dòng)的;n 3)實(shí)現(xiàn)了數(shù)據(jù)封裝;)實(shí)現(xiàn)了數(shù)據(jù)封裝;n 4)本質(zhì)上具有并行性;)本質(zhì)上具有并行性;n 5)模塊獨(dú)立性好。)模塊獨(dú)立性好。 n9.2.2 其他概念其他概念1、類(、類(Class) 類就是對具有相同數(shù)據(jù)和相同操作的一組相類就是對具有相同數(shù)據(jù)和相同操作的一組相似對象的定義。似對象的

6、定義。 如:如:Circle類具有相同的數(shù)據(jù)(圓心坐標(biāo)、半類具有相同的數(shù)據(jù)(圓心坐標(biāo)、半徑、顏色)和相同的操作(顯示自己、放大縮徑、顏色)和相同的操作(顯示自己、放大縮小半徑、在屏幕上移動(dòng)位置)。小半徑、在屏幕上移動(dòng)位置)。 n 又如:下面又如:下面C+語言定義的語言定義的Queue類,可用類,可用于實(shí)現(xiàn)一個(gè)隊(duì)列(即先進(jìn)先出的表):于實(shí)現(xiàn)一個(gè)隊(duì)列(即先進(jìn)先出的表):n Class Queue n int q 100;n int sloc, rloc;n public:n void init ( ); /成員函數(shù)成員函數(shù)n void qput (int i);n int qget( );n ;

7、n 類有私有變量類有私有變量(Private)和公有變量和公有變量(Public)。n 缺省時(shí),都屬于私有的,只能由類內(nèi)部其他成缺省時(shí),都屬于私有的,只能由類內(nèi)部其他成員來訪問,不能由程序的其他部分來訪問。員來訪問,不能由程序的其他部分來訪問。n 這是一種實(shí)現(xiàn)封裝的方法。這是一種實(shí)現(xiàn)封裝的方法。 n 實(shí)例就是由某個(gè)特定的類所描述的一個(gè)具體的實(shí)例就是由某個(gè)特定的類所描述的一個(gè)具體的對象。對象。n如:如:Circle a ; /聲明聲明Circle類實(shí)例類實(shí)例an Queue Q1, Q2; /聲明聲明Queue類實(shí)例類實(shí)例Q1和和Q2 2、實(shí)例實(shí)例(Instance)n 消息就是用來請求對象執(zhí)行

8、某個(gè)處理或回消息就是用來請求對象執(zhí)行某個(gè)處理或回答某些信息的要求。答某些信息的要求。n 消息既可以是數(shù)據(jù)流,也可以是控制流。消息既可以是數(shù)據(jù)流,也可以是控制流。一條消息可以發(fā)送給不同的對象,對消息的解一條消息可以發(fā)送給不同的對象,對消息的解釋完全由接收信息的對象來完成,不同的對象釋完全由接收信息的對象來完成,不同的對象對相同形式的消息可以有不同的解釋。對相同形式的消息可以有不同的解釋。 n3、消息消息(Message)n 與傳統(tǒng)程序的與傳統(tǒng)程序的“調(diào)用調(diào)用/返回返回”所不同的是,所不同的是,對于傳來的消息,對象可以返回相應(yīng)的回答對于傳來的消息,對象可以返回相應(yīng)的回答信息,也可以不返回。信息,也

9、可以不返回。n 一個(gè)消息由三個(gè)部分組成:一個(gè)消息由三個(gè)部分組成:n 1)接收信息的對象;)接收信息的對象;n 2)信息選擇符(即消息名);)信息選擇符(即消息名);n 3)零個(gè)或多個(gè)變元(參數(shù))。)零個(gè)或多個(gè)變元(參數(shù))。n 如:如:MyCircle.Show(GREEN); n 4、方法(、方法(Method)n 方法,是對象所能執(zhí)行的操作。方法,是對象所能執(zhí)行的操作。n C+中把方法稱為成員函數(shù),如中把方法稱為成員函數(shù),如Circle類類中定義的成員函數(shù):中定義的成員函數(shù):Show(int color) n5、屬性(、屬性(Attribute)n 屬性,是類中定義的數(shù)據(jù)。屬性,是類中定義的

10、數(shù)據(jù)。n C+中把屬性稱為數(shù)據(jù)成員。中把屬性稱為數(shù)據(jù)成員。 n6、封裝(、封裝(encapsulation)n 封裝就是信息隱藏,通過封裝對外界隱藏封裝就是信息隱藏,通過封裝對外界隱藏了對象的實(shí)現(xiàn)細(xì)節(jié)。了對象的實(shí)現(xiàn)細(xì)節(jié)。n7、繼承(、繼承(Inheritance) n 繼承,是指能夠直接獲得已有的性質(zhì)和特征,繼承,是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們。而不必重復(fù)定義它們。 nA的操作的操作nA的變量的變量n類類AnA的實(shí)例變量的實(shí)例變量n從從A的繼承特性的繼承特性nB的操作的操作nB的變量的變量n類類Bn繼承來的繼承來的A的實(shí)例變量的實(shí)例變量nB的實(shí)例變量的實(shí)例變量n類類AnA

11、的實(shí)例的實(shí)例a1nB的實(shí)例的實(shí)例b1n類類B:A的子的子類類n圖圖9.4 實(shí)現(xiàn)繼承機(jī)制的原理實(shí)現(xiàn)繼承機(jī)制的原理n8、多態(tài)性(、多態(tài)性(Polymorphism)n 多態(tài)性,指子類對象可以象父類對象那樣使用,多態(tài)性,指子類對象可以象父類對象那樣使用,同樣的消息既可以發(fā)送給父類對象,也可以發(fā)送給同樣的消息既可以發(fā)送給父類對象,也可以發(fā)送給子類對象。子類對象。n 即不同等級的類,可以公用一個(gè)方法的名字。即不同等級的類,可以公用一個(gè)方法的名字。n C+中,多態(tài)性是通過虛函數(shù)來實(shí)現(xiàn)的。在不中,多態(tài)性是通過虛函數(shù)來實(shí)現(xiàn)的。在不同層次的類中,虛函數(shù)實(shí)現(xiàn)算法不同,在運(yùn)行時(shí)根同層次的類中,虛函數(shù)實(shí)現(xiàn)算法不同,在

12、運(yùn)行時(shí)根據(jù)接收消息的對象所屬于的類來決定執(zhí)行虛函數(shù)的據(jù)接收消息的對象所屬于的類來決定執(zhí)行虛函數(shù)的版本,稱為動(dòng)態(tài)聯(lián)編。版本,稱為動(dòng)態(tài)聯(lián)編。n9、重載(、重載(Overloading)n有兩種重載:有兩種重載:n1)函數(shù)重載)函數(shù)重載n 指在同一作用域內(nèi)的若干個(gè)參數(shù)特征不同的函指在同一作用域內(nèi)的若干個(gè)參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字。數(shù)可以使用相同的函數(shù)名字。n 如:如: Show(int a, int b)n Show(int x)n Show(int x, int y, int z)n C+語言中函數(shù)重載是通過靜態(tài)聯(lián)編實(shí)現(xiàn)的。語言中函數(shù)重載是通過靜態(tài)聯(lián)編實(shí)現(xiàn)的。即編譯時(shí)根據(jù)函數(shù)變元的個(gè)

13、數(shù)和類型,決定函數(shù)即編譯時(shí)根據(jù)函數(shù)變元的個(gè)數(shù)和類型,決定函數(shù)版本。版本。n2)運(yùn)算符重載)運(yùn)算符重載n 指同一運(yùn)算符可以施加于不同類型的操作指同一運(yùn)算符可以施加于不同類型的操作數(shù)上面。當(dāng)被操作數(shù)類型不同時(shí),運(yùn)算符的含數(shù)上面。當(dāng)被操作數(shù)類型不同時(shí),運(yùn)算符的含義是不同的。義是不同的。n 編譯時(shí)根據(jù)被操作數(shù)的類型,決定使用算符編譯時(shí)根據(jù)被操作數(shù)的類型,決定使用算符的哪種語義。的哪種語義。 n 另外,在實(shí)現(xiàn)一個(gè)類成員函數(shù)時(shí),必須通過用類名另外,在實(shí)現(xiàn)一個(gè)類成員函數(shù)時(shí),必須通過用類名限定函數(shù)名來告訴編譯器這個(gè)函數(shù)屬于哪個(gè)類。限定函數(shù)名來告訴編譯器這個(gè)函數(shù)屬于哪個(gè)類。n 如,編寫如,編寫qput( )函數(shù)

14、:函數(shù):n Void Queue : qput (int i)n if (sloc = =100)n cout “Queue if full” ;n return; n sloc+;n q sloc = i;n n 從程序中調(diào)用一個(gè)類的成員函數(shù),用對象和點(diǎn)從程序中調(diào)用一個(gè)類的成員函數(shù),用對象和點(diǎn)運(yùn)算符。如:運(yùn)算符。如:n Queue ob1, ob2;n ob1.init( ); /是對對象是對對象ob1的初始化函數(shù)的初始化函數(shù)init( )的調(diào)用的調(diào)用n ob1, ob2之間的唯一關(guān)系是它們是同一類對象。之間的唯一關(guān)系是它們是同一類對象。ob1的初始化不影響的初始化不影響ob2。 n 用面向

15、對象方法開發(fā)軟件,通常需要建立用面向?qū)ο蠓椒ㄩ_發(fā)軟件,通常需要建立三種形式的模型,它們分別是:三種形式的模型,它們分別是:n(1)對象模型:描述系統(tǒng)的數(shù)據(jù)結(jié)構(gòu);)對象模型:描述系統(tǒng)的數(shù)據(jù)結(jié)構(gòu);n(2)動(dòng)態(tài)模型:描述系統(tǒng)的控制結(jié)構(gòu);)動(dòng)態(tài)模型:描述系統(tǒng)的控制結(jié)構(gòu);n(3)功能模型:描述系統(tǒng)的功能。)功能模型:描述系統(tǒng)的功能。 n 3種模型必不可少,其重要程度不同,對象模型是種模型必不可少,其重要程度不同,對象模型是最基本、最重要的。最基本、最重要的。9.3 面向?qū)ο蠼C嫦驅(qū)ο蠼ML(Unified Modeling Language)n UML是面向?qū)ο蟮姆治雠c設(shè)計(jì)是面向?qū)ο蟮姆治雠c設(shè)計(jì)(

16、OOAD)方法方法發(fā)展的產(chǎn)物。發(fā)展的產(chǎn)物。n n 公認(rèn)的面向?qū)ο蠼UZ言出現(xiàn)于公認(rèn)的面向?qū)ο蠼UZ言出現(xiàn)于70年代中期。年代中期。n n 90年代中,一批新方法出現(xiàn)了,其中最引人注年代中,一批新方法出現(xiàn)了,其中最引人注目的是目的是Booch 1993、OOSE和和OMT-2等。等。n1. 標(biāo)準(zhǔn)建模語言標(biāo)準(zhǔn)建模語言UML的出現(xiàn)的出現(xiàn) n 眾多的建模語言各有優(yōu)點(diǎn),大多類同,但仍眾多的建模語言各有優(yōu)點(diǎn),大多類同,但仍存在某些細(xì)微的差別,妨礙了用戶之間的交流。存在某些細(xì)微的差別,妨礙了用戶之間的交流。n 統(tǒng)一建模語言在這樣的背景下產(chǎn)生。統(tǒng)一建模語言在這樣的背景下產(chǎn)生。n 1995年年10月:第一個(gè)公開

17、版本月:第一個(gè)公開版本UM 0.8(Unified Method)。)。n 1996年年6月:月:UM改名為改名為UML(Unified Modeling Language),發(fā)布,發(fā)布 。n 1996年底:年底:UML占面向?qū)ο蠹夹g(shù)市場的占面向?qū)ο蠹夹g(shù)市場的85,成為可視化建模語言事實(shí)上的工業(yè)標(biāo)準(zhǔn)。成為可視化建模語言事實(shí)上的工業(yè)標(biāo)準(zhǔn)。n 現(xiàn)最新版本:現(xiàn)最新版本:n UML是標(biāo)準(zhǔn)的建模語言,而不是標(biāo)準(zhǔn)的是標(biāo)準(zhǔn)的建模語言,而不是標(biāo)準(zhǔn)的開發(fā)過程。開發(fā)過程。n 在不同組織和不同應(yīng)用領(lǐng)域,在不同組織和不同應(yīng)用領(lǐng)域,UML應(yīng)用應(yīng)用需采取不同的開發(fā)過程。需采取不同的開發(fā)過程。n 1998年:年:RUP(

18、Rational Unified Process)是一種典型的建模過程。是一種典型的建模過程。n2. 標(biāo)準(zhǔn)建模語言標(biāo)準(zhǔn)建模語言UML的內(nèi)容的內(nèi)容31UML 的構(gòu)成的構(gòu)成32 事物構(gòu)造塊是對模型中最具有代表性的成分的抽象,表示事物構(gòu)造塊是對模型中最具有代表性的成分的抽象,表示系統(tǒng)中的元素系統(tǒng)中的元素結(jié)構(gòu)事物:結(jié)構(gòu)事物:UML中的名詞,它是模型的靜態(tài)部分,描述概中的名詞,它是模型的靜態(tài)部分,描述概念或物理元素。念或物理元素。行為事物:行為事物:UML中的動(dòng)詞,它是模型中的動(dòng)態(tài)部分,是一中的動(dòng)詞,它是模型中的動(dòng)態(tài)部分,是一種跨越時(shí)間、空間的行為。種跨越時(shí)間、空間的行為。分組事物:分組事物:UML中的

19、容器,用來組織模型,使模型更加的中的容器,用來組織模型,使模型更加的結(jié)構(gòu)化。結(jié)構(gòu)化。注釋事務(wù):注釋事務(wù):UML中的解釋部分,和代碼中的注釋語句一樣,中的解釋部分,和代碼中的注釋語句一樣,是用來描述模型的。是用來描述模型的。33類(類(class)和對象()和對象(object)接口(接口(interface)構(gòu)件(構(gòu)件(component)34類是對一組具有相同屬性、相同操作、相同關(guān)系和相同類是對一組具有相同屬性、相同操作、相同關(guān)系和相同語義的對象的共同特征的抽象語義的對象的共同特征的抽象 。UML中類是用一個(gè)矩形方框表示的,它包含三個(gè)區(qū)域,中類是用一個(gè)矩形方框表示的,它包含三個(gè)區(qū)域,最上面是

20、類名、中間是類的屬性、最下面是類的方法最上面是類名、中間是類的屬性、最下面是類的方法 對象則是類的一個(gè)實(shí)例對象則是類的一個(gè)實(shí)例 n對象名對象名n類名類名n冒號冒號圖形位置顏色Draw()圖形圖形A : 圖形圖形 35 接口是描述某個(gè)類或構(gòu)件的一個(gè)服務(wù)操作集。接口是描述某個(gè)類或構(gòu)件的一個(gè)服務(wù)操作集。 接口描述了一個(gè)元素的外部可見行為接口描述了一個(gè)元素的外部可見行為。 lUML UML 符號符號3637構(gòu)件也稱組件,是指系統(tǒng)設(shè)計(jì)中的一個(gè)相對獨(dú)立的軟件構(gòu)件也稱組件,是指系統(tǒng)設(shè)計(jì)中的一個(gè)相對獨(dú)立的軟件部件。部件。構(gòu)件是系統(tǒng)設(shè)計(jì)的一個(gè)模塊化部分,它把功能實(shí)現(xiàn)部分構(gòu)件是系統(tǒng)設(shè)計(jì)的一個(gè)模塊化部分,它把功能實(shí)

21、現(xiàn)部分隱藏在內(nèi)部,對外提供了一組外部接口。因此,兩個(gè)具隱藏在內(nèi)部,對外提供了一組外部接口。因此,兩個(gè)具有相同接口的構(gòu)件可以相互替換。有相同接口的構(gòu)件可以相互替換。 構(gòu)件名稱構(gòu)件名稱 UML 1.0 習(xí)慣用法習(xí)慣用法 UML 2.0 習(xí)慣用法習(xí)慣用法 構(gòu)件名稱構(gòu)件名稱38為了能夠有效地對部署的結(jié)構(gòu)進(jìn)行建模,為了能夠有效地對部署的結(jié)構(gòu)進(jìn)行建模,UML引入了節(jié)點(diǎn)這一概念,它可以用來描述實(shí)際的引入了節(jié)點(diǎn)這一概念,它可以用來描述實(shí)際的PC機(jī)、打印機(jī)、服務(wù)器等軟件運(yùn)行的基礎(chǔ)硬件。機(jī)、打印機(jī)、服務(wù)器等軟件運(yùn)行的基礎(chǔ)硬件。 節(jié)點(diǎn)是運(yùn)行時(shí)存在的物理元素,通常至少有存節(jié)點(diǎn)是運(yùn)行時(shí)存在的物理元素,通常至少有存儲空間

22、和處理能力。儲空間和處理能力。 Server 節(jié)點(diǎn)節(jié)點(diǎn)Server的表示方法的表示方法39交互(交互(interaction):):是在特定語境中,共同是在特定語境中,共同完成某個(gè)任務(wù)的一組對象之間交換的信息集合完成某個(gè)任務(wù)的一組對象之間交換的信息集合 。交互的表示法很簡單,就是一條有向直線,并在交互的表示法很簡單,就是一條有向直線,并在上面標(biāo)有操作名。上面標(biāo)有操作名。40狀態(tài)機(jī)(狀態(tài)機(jī)(state machine):是一個(gè)對象或交互):是一個(gè)對象或交互在生命周期內(nèi)響應(yīng)事件所經(jīng)歷的狀態(tài)序列在生命周期內(nèi)響應(yīng)事件所經(jīng)歷的狀態(tài)序列 在在UML模型中將狀態(tài)畫為一個(gè)圓角矩形,并在模型中將狀態(tài)畫為一個(gè)圓角

23、矩形,并在矩形內(nèi)寫出狀態(tài)名。矩形內(nèi)寫出狀態(tài)名。等待等待 “等待等待”狀態(tài)的表示方法狀態(tài)的表示方法41對于一個(gè)中大型的軟件系統(tǒng)而言,通常會包含大量的類,對于一個(gè)中大型的軟件系統(tǒng)而言,通常會包含大量的類,因此也就會存在大量的結(jié)構(gòu)事物、行為事物,為了能夠因此也就會存在大量的結(jié)構(gòu)事物、行為事物,為了能夠更加有效地對其進(jìn)行整合,就需要對其進(jìn)行分組。在更加有效地對其進(jìn)行整合,就需要對其進(jìn)行分組。在UML中,提供了中,提供了“包(包(Package)”來實(shí)現(xiàn)這一目標(biāo)。來實(shí)現(xiàn)這一目標(biāo)。 數(shù)據(jù)訪問數(shù)據(jù)訪問 “數(shù)據(jù)訪問數(shù)據(jù)訪問”包的表示方包的表示方法法4243注釋是依附于一個(gè)元素或一組元素之上,對其注釋是依附于一

24、個(gè)元素或一組元素之上,對其進(jìn)行約束或解釋的簡單符號。進(jìn)行約束或解釋的簡單符號。 注釋符號注釋符號44關(guān)聯(lián)是一種結(jié)構(gòu)關(guān)系,它描述了一組對象之間的連接。關(guān)聯(lián)是一種結(jié)構(gòu)關(guān)系,它描述了一組對象之間的連接。關(guān)聯(lián)兩端的類可以某種角色參與關(guān)聯(lián)關(guān)聯(lián)兩端的類可以某種角色參與關(guān)聯(lián) 角色是關(guān)聯(lián)中靠近它的一端的類對另一端的類呈現(xiàn)角色是關(guān)聯(lián)中靠近它的一端的類對另一端的類呈現(xiàn)的職責(zé);的職責(zé); 如果關(guān)聯(lián)上沒有標(biāo)出角色名,則隱含地用類的名稱如果關(guān)聯(lián)上沒有標(biāo)出角色名,則隱含地用類的名稱作為角色名。作為角色名。關(guān)聯(lián)具有多重性關(guān)聯(lián)具有多重性 多重性表示可以有多少個(gè)對象參與該關(guān)聯(lián)多重性表示可以有多少個(gè)對象參與該關(guān)聯(lián) 固定值:固定值:

25、3 3 許多值:許多值:n n 或者或者* * 區(qū)間:區(qū)間:0.1 0.1 或者或者3.n3.n 集合:集合:2,4,82,4,84546關(guān)聯(lián)(關(guān)聯(lián)(Association)表示兩個(gè)類之間存在某種)表示兩個(gè)類之間存在某種語義上的聯(lián)系。關(guān)聯(lián)關(guān)系提供了通信的路徑,語義上的聯(lián)系。關(guān)聯(lián)關(guān)系提供了通信的路徑,它是所有關(guān)系中最通用、語義最弱的。它是所有關(guān)系中最通用、語義最弱的。在在UML中,使用一條實(shí)線來表示關(guān)聯(lián)關(guān)系中,使用一條實(shí)線來表示關(guān)聯(lián)關(guān)系操作操作屬性屬性類類1 1類類2 2屬性屬性操作操作關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系人人雇傭雇傭公司公司人人雇主雇主公司公司1 1雇員雇員n n47n在關(guān)聯(lián)關(guān)系中,有兩種比較特殊

26、的關(guān)系:聚合和組合在關(guān)聯(lián)關(guān)系中,有兩種比較特殊的關(guān)系:聚合和組合 n聚合關(guān)系:聚合(聚合關(guān)系:聚合(AggregationAggregation)是一種特殊形式的)是一種特殊形式的關(guān)聯(lián)。聚合表示類之間的關(guān)系是整體與部分的關(guān)系。關(guān)聯(lián)。聚合表示類之間的關(guān)系是整體與部分的關(guān)系。 n如果發(fā)現(xiàn)如果發(fā)現(xiàn)“部分部分”類的存在,是完全依賴于類的存在,是完全依賴于“整體整體”類的,那么就應(yīng)該使用類的,那么就應(yīng)該使用“組合組合”關(guān)系來描述關(guān)系來描述 。聚合關(guān)系聚合關(guān)系計(jì)算機(jī)計(jì)算機(jī)主機(jī)主機(jī)顯示器顯示器咖啡桌咖啡桌桌面桌面桌腿桌腿48泛化關(guān)系描述了一般事物與該事物中的特殊種類之間的泛化關(guān)系描述了一般事物與該事物中的特

27、殊種類之間的關(guān)系,也就是父類與子類之間的關(guān)系。關(guān)系,也就是父類與子類之間的關(guān)系。實(shí)現(xiàn)關(guān)系是用來規(guī)定接口和實(shí)現(xiàn)接口的類或組件之間的實(shí)現(xiàn)關(guān)系是用來規(guī)定接口和實(shí)現(xiàn)接口的類或組件之間的關(guān)系。接口是操作的集合,這些操作用于規(guī)定類或組件關(guān)系。接口是操作的集合,這些操作用于規(guī)定類或組件的服務(wù)。的服務(wù)。 擴(kuò)展表示將一個(gè)構(gòu)造型附加到一個(gè)元類(擴(kuò)展表示將一個(gè)構(gòu)造型附加到一個(gè)元類(metaclass)上,)上,使得元類的定義中包括這個(gè)構(gòu)造型。使得元類的定義中包括這個(gè)構(gòu)造型。 有兩個(gè)元素有兩個(gè)元素X、Y,如果修改元素,如果修改元素X的定義可能會引起對的定義可能會引起對另一個(gè)元素另一個(gè)元素Y的定義的修改,則稱元素的定義

28、的修改,則稱元素Y依賴依賴(Dependency)于元素)于元素X。 49父類父類屬性屬性操作操作子類子類泛化關(guān)系泛化關(guān)系屬性屬性操作操作車車公交車公交車密碼驗(yàn)證密碼驗(yàn)證智能卡驗(yàn)證智能卡驗(yàn)證身份驗(yàn)證身份驗(yàn)證注冊用戶注冊用戶圖書管理員圖書管理員普通讀者普通讀者包與包之間也存在泛化關(guān)系。包與包之間也存在泛化關(guān)系。50類類屬性屬性操作操作choicechoice組件組件類類屬性屬性操作操作實(shí)現(xiàn)關(guān)系實(shí)現(xiàn)關(guān)系51driver.dlldriver.dllIDriverIDriverpath.dllpath.dll類類A A屬性屬性操作操作類類B B屬性屬性操作操作InterfaceInterface52類

29、類1 1屬性屬性操作操作add(c:course)add(c:course)remove(c:course)remove(c:course)ScheduleSchedulecoursecourse驗(yàn)證讀者驗(yàn)證讀者includeincludeincludeinclude查詢讀者查詢讀者查詢圖書查詢圖書登記借書登記借書extendextendextendextend登記借書登記借書登記還書登記還書類類2 2屬性屬性操作操作依賴關(guān)系依賴關(guān)系useuse5354常用常用UMLUML圖圖n用例圖用例圖n類圖類圖n狀態(tài)圖狀態(tài)圖n順序圖順序圖Use caseSequenceClass(Simple)Stat

30、eCollaborationClass(Complex)ObjectActivityRequirementRequirement階段Analysis階段Design階段55用例圖用例圖n用例圖是外部參與者所能觀察到的系統(tǒng)功能的模用例圖是外部參與者所能觀察到的系統(tǒng)功能的模型圖。型圖。n由一組用例、參與者及它們之間的關(guān)系組成。主由一組用例、參與者及它們之間的關(guān)系組成。主要用于對系統(tǒng)、子系統(tǒng)或類的功能行為進(jìn)行建模。要用于對系統(tǒng)、子系統(tǒng)或類的功能行為進(jìn)行建模。n參與者是與系統(tǒng)交互的外部實(shí)體,可以是人,也參與者是與系統(tǒng)交互的外部實(shí)體,可以是人,也可以是其它系統(tǒng)。可以是其它系統(tǒng)。n用例是從用戶的角度描述系

31、統(tǒng)的行為(功能),用例是從用戶的角度描述系統(tǒng)的行為(功能),它將系統(tǒng)的功能描述成一系列事件,這些事件最它將系統(tǒng)的功能描述成一系列事件,這些事件最終對參與者產(chǎn)生可觀察結(jié)果。終對參與者產(chǎn)生可觀察結(jié)果。56參與者、用例間的關(guān)系類型參與者、用例間的關(guān)系類型關(guān)系類型關(guān)系類型說說明明表示符號表示符號關(guān)聯(lián)關(guān)聯(lián)參與者和用例間的關(guān)系參與者和用例間的關(guān)系泛化泛化參與者之間或用例之間的關(guān)系參與者之間或用例之間的關(guān)系包含包含用例之間的關(guān)系用例之間的關(guān)系擴(kuò)展擴(kuò)展用例之間的關(guān)系用例之間的關(guān)系 n 用例圖用例圖57驗(yàn)證讀者驗(yàn)證讀者includeincludeincludeinclude查詢讀者查詢讀者查詢圖書查詢圖書登記借

32、書登記借書extendextendextendextend登記借書登記借書登記還書登記還書密碼驗(yàn)證密碼驗(yàn)證智能卡驗(yàn)證智能卡驗(yàn)證身份驗(yàn)證身份驗(yàn)證58用例圖用例圖n確定參與者方法:確定參與者方法:誰使用系統(tǒng)的主要功能?誰使用系統(tǒng)的主要功能?誰需要系統(tǒng)支持他們的日常工作?誰需要系統(tǒng)支持他們的日常工作?誰來維護(hù)、管理使系統(tǒng)正常工作?誰來維護(hù)、管理使系統(tǒng)正常工作?系統(tǒng)需要操縱哪些硬件?系統(tǒng)需要操縱哪些硬件?系統(tǒng)需要與哪些其它系統(tǒng)交互系統(tǒng)需要與哪些其它系統(tǒng)交互, ,包含其它計(jì)包含其它計(jì)算機(jī)系統(tǒng)和其它應(yīng)用程序?算機(jī)系統(tǒng)和其它應(yīng)用程序?59用例圖用例圖n確定用例方法確定用例方法參與者要求系統(tǒng)提供哪些功能?參與

33、者需要做參與者要求系統(tǒng)提供哪些功能?參與者需要做什么?什么?參與者需要讀取、產(chǎn)生、刪除、修改或存儲的參與者需要讀取、產(chǎn)生、刪除、修改或存儲的某些信息嗎?。某些信息嗎?。 必須提醒參與者的系統(tǒng)事件有哪些必須提醒參與者的系統(tǒng)事件有哪些? ?或者參與者或者參與者必須提醒系統(tǒng)的事件有哪些必須提醒系統(tǒng)的事件有哪些? ?系統(tǒng)需要的輸入、輸出信息是什么?這些信息系統(tǒng)需要的輸入、輸出信息是什么?這些信息怎么來?怎么來?其它特殊要求如何滿足?其它特殊要求如何滿足?60n用例圖的建立用例圖的建立確定系統(tǒng)參與者及其關(guān)系確定系統(tǒng)參與者及其關(guān)系確定用例及關(guān)系確定用例及關(guān)系編寫用例描述編寫用例描述用例圖用例圖61用例圖示

34、例62類圖類圖n表示系統(tǒng)中類、協(xié)作(類或?qū)ο箝g的協(xié)作)、表示系統(tǒng)中類、協(xié)作(類或?qū)ο箝g的協(xié)作)、接口及其關(guān)系的圖。接口及其關(guān)系的圖。n類圖中的關(guān)系包括:關(guān)聯(lián)、泛化、依賴、實(shí)類圖中的關(guān)系包括:關(guān)聯(lián)、泛化、依賴、實(shí)現(xiàn)?,F(xiàn)。63類圖類圖n類的劃分:類的劃分:邊界類:參與者與系統(tǒng)之間的交互邊界類:參與者與系統(tǒng)之間的交互實(shí)體類:系統(tǒng)中存儲和管理的永久信息實(shí)體類:系統(tǒng)中存儲和管理的永久信息控制類:系統(tǒng)運(yùn)行中的業(yè)務(wù)控制邏輯控制類:系統(tǒng)運(yùn)行中的業(yè)務(wù)控制邏輯64類圖類圖邊界類邊界類實(shí)體類實(shí)體類boundaryboundary類名類名類名類名controlcontrol類名類名控制類控制類類名類名entityen

35、tity類名類名類名類名65類圖類圖 在軟件開發(fā)的不同階段使用的類圖具有不在軟件開發(fā)的不同階段使用的類圖具有不同的抽象層次,一般類圖可分為三個(gè)層次,概同的抽象層次,一般類圖可分為三個(gè)層次,概念層、說明層、實(shí)現(xiàn)層。念層、說明層、實(shí)現(xiàn)層。概念層類圖:概念層類圖中類內(nèi)只有類名。通概念層類圖:概念層類圖中類內(nèi)只有類名。通常用在需求分析階段常用在需求分析階段, ,該階段類圖是研究應(yīng)用該階段類圖是研究應(yīng)用領(lǐng)域的概念。領(lǐng)域的概念。66類圖類圖n說明層類圖:在設(shè)計(jì)階段說明層類圖:在設(shè)計(jì)階段, ,用說明層類圖描述用說明層類圖描述類與類之間的接口。在說明層類中有屬性和方類與類之間的接口。在說明層類中有屬性和方法,

36、但沒有屬性的類型說明和方法的參數(shù)與返法,但沒有屬性的類型說明和方法的參數(shù)與返回類型?;仡愋?。n實(shí)現(xiàn)層類圖:在實(shí)現(xiàn)階段實(shí)現(xiàn)層類圖:在實(shí)現(xiàn)階段, ,類圖描述軟件系統(tǒng)類圖描述軟件系統(tǒng)中類的實(shí)現(xiàn)。中類的實(shí)現(xiàn)。67類圖類圖n尋找類的技巧尋找類的技巧根據(jù)用例描述中的名詞確定類的侯選者。根據(jù)用例描述中的名詞確定類的侯選者。使用使用CRCCRC(class,responsibility,collaborationclass,responsibility,collaboration)分分析法尋找類。根據(jù)類所扮演的職責(zé)來確定類。析法尋找類。根據(jù)類所扮演的職責(zé)來確定類。根據(jù)邊界類、控制類、實(shí)體類的劃分來幫助發(fā)現(xiàn)根據(jù)

37、邊界類、控制類、實(shí)體類的劃分來幫助發(fā)現(xiàn)系統(tǒng)中的類。系統(tǒng)中的類。68類圖類圖n類圖的建立(可以有多種方式)類圖的建立(可以有多種方式)分析問題領(lǐng)域分析問題領(lǐng)域, ,確定用到的類。確定用到的類。確定類的含義、職責(zé)、確定屬性、操作。確定類的含義、職責(zé)、確定屬性、操作。確定類之間的聯(lián)系。確定類之間的聯(lián)系。細(xì)化、調(diào)整已經(jīng)得到類之間的關(guān)系,并增加細(xì)化、調(diào)整已經(jīng)得到類之間的關(guān)系,并增加相應(yīng)說明。相應(yīng)說明。69先看清有哪些類,然先看清有哪些類,然后看看類之間存在的后看看類之間存在的關(guān)系,并結(jié)合多重性關(guān)系,并結(jié)合多重性來理解類圖的結(jié)構(gòu)特來理解類圖的結(jié)構(gòu)特點(diǎn)以及各個(gè)屬性和方點(diǎn)以及各個(gè)屬性和方法的含義法的含義 70

38、讀出類:圖中共有讀出類:圖中共有7個(gè)類,個(gè)類,Order、OrderItem、Customer、Consignee、DeliverOrder、Peddlery、Prodcut讀出關(guān)系:從圖中關(guān)系最復(fù)雜(也就是線最密集)的類讀出關(guān)系:從圖中關(guān)系最復(fù)雜(也就是線最密集)的類開始閱讀,本圖中最復(fù)雜的就是開始閱讀,本圖中最復(fù)雜的就是Order類。類。1)OrderItem和和Order之間是組合關(guān)系,根據(jù)箭頭的方之間是組合關(guān)系,根據(jù)箭頭的方向可知向可知Order包含了包含了OrderItem。2)Order類和類和Customer、Consignee、DeliverOrder是是關(guān)聯(lián)關(guān)系。也就是說,一

39、個(gè)訂單和客戶、收貨人、送貨關(guān)聯(lián)關(guān)系。也就是說,一個(gè)訂單和客戶、收貨人、送貨單是相關(guān)的。單是相關(guān)的。7172多重性:用來說明關(guān)聯(lián)的兩個(gè)類之間的數(shù)量關(guān)系多重性:用來說明關(guān)聯(lián)的兩個(gè)類之間的數(shù)量關(guān)系 源類及多重性源類及多重性目標(biāo)類及多重性目標(biāo)類及多重性分析分析Customer(1)Order(0n)訂單是屬于某個(gè)客戶的,網(wǎng)站的客戶可以有訂單是屬于某個(gè)客戶的,網(wǎng)站的客戶可以有0個(gè)或多個(gè)訂單個(gè)或多個(gè)訂單Order(1)Consignee(1)每個(gè)訂單只能夠有一個(gè)收貨人每個(gè)訂單只能夠有一個(gè)收貨人Order(1)OrderItem(1n)訂單是由訂單項(xiàng)組成的,至少要有一個(gè)訂單項(xiàng),最多可以有訂單是由訂單項(xiàng)組成的

40、,至少要有一個(gè)訂單項(xiàng),最多可以有n個(gè)個(gè)Order(1)DeliverOrder(1n)一個(gè)訂單有一個(gè)或多個(gè)送貨單一個(gè)訂單有一個(gè)或多個(gè)送貨單說明:系統(tǒng)根據(jù)說明:系統(tǒng)根據(jù)訂單項(xiàng)的產(chǎn)訂單項(xiàng)的產(chǎn)品所屬的商品所屬的商戶,將其分戶,將其分發(fā)給商戶,發(fā)給商戶,拆成了多個(gè)拆成了多個(gè)送貨單!送貨單!DeliverOrder(1)OrderItem(1n)一張送貨單對應(yīng)訂單中的一到多個(gè)訂單項(xiàng)一張送貨單對應(yīng)訂單中的一到多個(gè)訂單項(xiàng)DeliverOrder(1)Consignee(1)每張送貨單都對應(yīng)著一個(gè)收貨人每張送貨單都對應(yīng)著一個(gè)收貨人Peddlery(1)DeliverOrder(0n)每個(gè)商戶可以有相關(guān)的每個(gè)商

41、戶可以有相關(guān)的0個(gè)或多個(gè)送貨單個(gè)或多個(gè)送貨單OrderItem(1)Product(1)每個(gè)訂單項(xiàng)中都包含著唯一的一個(gè)產(chǎn)品每個(gè)訂單項(xiàng)中都包含著唯一的一個(gè)產(chǎn)品Peddlery(1)Prodcut(0n)產(chǎn)品是屬于某個(gè)商戶的,可以注冊產(chǎn)品是屬于某個(gè)商戶的,可以注冊0到多個(gè)產(chǎn)品到多個(gè)產(chǎn)品7374 Order類,有兩個(gè)方法:類,有兩個(gè)方法:dispatch()和和close(),從名字中可以猜,從名字中可以猜出它們分別實(shí)現(xiàn)出它們分別實(shí)現(xiàn)“分拆訂單生成送貨單分拆訂單生成送貨單”和和“完成訂單完成訂單”。而在。而在DeliveOrder()類中則有一個(gè)類中則有一個(gè)Close()方法,同理它應(yīng)該表示方法,同

42、理它應(yīng)該表示“完成送完成送貨貨”。而在。而在OrderItem中有一個(gè)中有一個(gè)stateChange()方法和方法和deliverState,不難猜出它就是用來改變其不難猜出它就是用來改變其“是否交給收貨人是否交給收貨人”的標(biāo)志位。的標(biāo)志位。 先調(diào)用先調(diào)用Order的的dispatch()方法,它將根據(jù)其包含的方法,它將根據(jù)其包含的OrderItem中產(chǎn)品信息,來按供應(yīng)商戶分拆成若干個(gè)中產(chǎn)品信息,來按供應(yīng)商戶分拆成若干個(gè)DeliverOrder。商戶登錄。商戶登錄系統(tǒng)后就可以獲取其系統(tǒng)后就可以獲取其DeliverOrder,并在執(zhí)行完后調(diào)用,并在執(zhí)行完后調(diào)用close()方法。方法。這時(shí),就將

43、調(diào)用這時(shí),就將調(diào)用OrderItem的的stateChange()方法來改為其狀態(tài)。同方法來改為其狀態(tài)。同時(shí)再調(diào)用時(shí)再調(diào)用Order的的close()方法,判斷該方法,判斷該Order的所有的的所有的OrderItem是是否都已經(jīng)送到了,如果是就將其真正否都已經(jīng)送到了,如果是就將其真正close()掉掉 75順序圖順序圖n又稱又稱時(shí)序圖時(shí)序圖,描述對象按照時(shí)間順序的消息交,描述對象按照時(shí)間順序的消息交換,顯示參與交互的對象及對象之間消息的交換,顯示參與交互的對象及對象之間消息的交互順序?;ロ樞颉順序圖用來描述用例的實(shí)現(xiàn),表明了由哪些對順序圖用來描述用例的實(shí)現(xiàn),表明了由哪些對象通過消息相互協(xié)作

44、來實(shí)現(xiàn)用例的功能。象通過消息相互協(xié)作來實(shí)現(xiàn)用例的功能。n在用例圖中,標(biāo)識了消息發(fā)生交互的先后順序。在用例圖中,標(biāo)識了消息發(fā)生交互的先后順序。76順序圖順序圖n建模元素:對象、生命線、控制焦點(diǎn)(激活)、建模元素:對象、生命線、控制焦點(diǎn)(激活)、消息。消息。:Driver:CarOper()對象對象生命線生命線控制焦點(diǎn)控制焦點(diǎn)消息消息(調(diào)用調(diào)用)77順序圖順序圖n順序圖描述的是對象之間的消息發(fā)送關(guān)系,而順序圖描述的是對象之間的消息發(fā)送關(guān)系,而不是類之間的關(guān)系。不是類之間的關(guān)系。n在順序圖中并不包括系統(tǒng)中的所有類的對象。在順序圖中并不包括系統(tǒng)中的所有類的對象。也有可能某些對象屬于同一個(gè)類。也有可能某

45、些對象屬于同一個(gè)類。78順序圖順序圖n順序圖的建立(可以有多種方式)順序圖的建立(可以有多種方式)確定交互過程的上下文。確定交互過程的上下文。識別參與交互過程的對象。識別參與交互過程的對象。為每個(gè)對象設(shè)置生命線,即確定哪些對象存為每個(gè)對象設(shè)置生命線,即確定哪些對象存在于整個(gè)交互過程中,哪些對象在交互過程在于整個(gè)交互過程中,哪些對象在交互過程中被創(chuàng)建和撤銷。中被創(chuàng)建和撤銷。79順序圖順序圖從引發(fā)這個(gè)交互過程的初始消息開始,在生命從引發(fā)這個(gè)交互過程的初始消息開始,在生命線之間從頂?shù)较乱来萎嫵鲭S后的各個(gè)消息。線之間從頂?shù)较乱来萎嫵鲭S后的各個(gè)消息。如果需要表示消息的嵌套,或如果需要表示消息的嵌套,或/

46、 /和表示消息發(fā)和表示消息發(fā)生時(shí)的時(shí)間點(diǎn),則采用控制焦點(diǎn)。生時(shí)的時(shí)間點(diǎn),則采用控制焦點(diǎn)。如果需要說明時(shí)間約束,則在消息旁邊加上約如果需要說明時(shí)間約束,則在消息旁邊加上約束說明。束說明。如果需要,可以為每個(gè)消息附上前置和后置條如果需要,可以為每個(gè)消息附上前置和后置條件。件。80順序圖順序圖81循環(huán)與分支循環(huán)與分支82狀態(tài)是指在對象生命周期中滿足某些條件、執(zhí)行某些活動(dòng)或狀態(tài)是指在對象生命周期中滿足某些條件、執(zhí)行某些活動(dòng)或等待某些事件的一個(gè)條件和狀況等待某些事件的一個(gè)條件和狀況 。狀態(tài)機(jī)圖常用來描述業(yè)務(wù)或軟件系統(tǒng)中的對象在外部事件的狀態(tài)機(jī)圖常用來描述業(yè)務(wù)或軟件系統(tǒng)中的對象在外部事件的作用下,對象的狀

47、態(tài)從一種狀態(tài)到另一種狀態(tài)的控制流。作用下,對象的狀態(tài)從一種狀態(tài)到另一種狀態(tài)的控制流。狀態(tài)機(jī)圖的組成元素:初始狀態(tài)、終止?fàn)顟B(tài)、狀態(tài)和轉(zhuǎn)換,狀態(tài)機(jī)圖的組成元素:初始狀態(tài)、終止?fàn)顟B(tài)、狀態(tài)和轉(zhuǎn)換,其中,轉(zhuǎn)換將各種狀態(tài)連接在一起,構(gòu)成一個(gè)狀態(tài)圖。其中,轉(zhuǎn)換將各種狀態(tài)連接在一起,構(gòu)成一個(gè)狀態(tài)圖。 83核心元素:一個(gè)是用圓角矩形表示的狀態(tài)(初核心元素:一個(gè)是用圓角矩形表示的狀態(tài)(初態(tài)和終態(tài)例外);另一個(gè)是在狀態(tài)之間的、包態(tài)和終態(tài)例外);另一個(gè)是在狀態(tài)之間的、包含一些文字描述的有向箭頭,這些箭頭稱為含一些文字描述的有向箭頭,這些箭頭稱為轉(zhuǎn)轉(zhuǎn)換。換。燒水器的狀態(tài)圖燒水器的狀態(tài)圖84源狀態(tài):即受轉(zhuǎn)換影響的狀態(tài)源狀

48、態(tài):即受轉(zhuǎn)換影響的狀態(tài)目標(biāo)狀態(tài):當(dāng)轉(zhuǎn)換完成后對象的狀態(tài)目標(biāo)狀態(tài):當(dāng)轉(zhuǎn)換完成后對象的狀態(tài) 觸發(fā)事件:外部作用于一個(gè)對象,能夠觸發(fā)對觸發(fā)事件:外部作用于一個(gè)對象,能夠觸發(fā)對象狀態(tài)改變的一種現(xiàn)象。包括調(diào)用、改變、信象狀態(tài)改變的一種現(xiàn)象。包括調(diào)用、改變、信號、時(shí)間四類事件。號、時(shí)間四類事件。監(jiān)護(hù)條件:布爾表達(dá)式,決定是否激活轉(zhuǎn)換、監(jiān)護(hù)條件:布爾表達(dá)式,決定是否激活轉(zhuǎn)換、動(dòng)作:轉(zhuǎn)換激活時(shí)的操作動(dòng)作:轉(zhuǎn)換激活時(shí)的操作85與狀態(tài)與狀態(tài)off相關(guān)的轉(zhuǎn)換有兩個(gè),其觸發(fā)事件都是相關(guān)的轉(zhuǎn)換有兩個(gè),其觸發(fā)事件都是turnOn,只不過其監(jiān)護(hù)條件不同。如果對象收到事件只不過其監(jiān)護(hù)條件不同。如果對象收到事件turnOn,那

49、,那么將判斷壺中是否有水;如果么將判斷壺中是否有水;如果沒水沒水,則仍然處于,則仍然處于off狀狀態(tài);如果態(tài);如果有水有水則轉(zhuǎn)為則轉(zhuǎn)為on狀態(tài),并執(zhí)行狀態(tài),并執(zhí)行“燒水燒水”動(dòng)作動(dòng)作而與狀態(tài)而與狀態(tài)on相關(guān)的轉(zhuǎn)換也有兩個(gè),如果相關(guān)的轉(zhuǎn)換也有兩個(gè),如果“水開了水開了”就執(zhí)就執(zhí)行行turnOff,關(guān)掉開關(guān);如果燒壞了,就進(jìn)入了終態(tài)了,關(guān)掉開關(guān);如果燒壞了,就進(jìn)入了終態(tài)了 86繪制狀態(tài)機(jī)圖的理想步驟是:尋找主要的狀態(tài),確定狀繪制狀態(tài)機(jī)圖的理想步驟是:尋找主要的狀態(tài),確定狀態(tài)之間的轉(zhuǎn)換,細(xì)化狀態(tài)內(nèi)的活動(dòng)與轉(zhuǎn)換,用復(fù)合狀態(tài)態(tài)之間的轉(zhuǎn)換,細(xì)化狀態(tài)內(nèi)的活動(dòng)與轉(zhuǎn)換,用復(fù)合狀態(tài)來展開細(xì)節(jié)。來展開細(xì)節(jié)。尋找主要狀

50、態(tài):對于航班機(jī)票預(yù)訂系統(tǒng)而言,包括的狀尋找主要狀態(tài):對于航班機(jī)票預(yù)訂系統(tǒng)而言,包括的狀態(tài)主要有:態(tài)主要有: - 在剛確定飛機(jī)計(jì)劃時(shí),顯然是沒有任何預(yù)訂的,并在剛確定飛機(jī)計(jì)劃時(shí),顯然是沒有任何預(yù)訂的,并且在有人預(yù)訂機(jī)票之前都將處于這種且在有人預(yù)訂機(jī)票之前都將處于這種“無預(yù)訂無預(yù)訂”狀態(tài)狀態(tài) - 對訂座而言顯然有對訂座而言顯然有“部分預(yù)訂部分預(yù)訂”和和“預(yù)訂完預(yù)訂完”兩種兩種狀態(tài)狀態(tài) - 而當(dāng)航班快要起飛時(shí),顯然要而當(dāng)航班快要起飛時(shí),顯然要“預(yù)訂關(guān)閉預(yù)訂關(guān)閉”總結(jié)一下,主要有四種狀態(tài):無預(yù)訂、部分預(yù)訂、預(yù)訂總結(jié)一下,主要有四種狀態(tài):無預(yù)訂、部分預(yù)訂、預(yù)訂完以及預(yù)訂關(guān)閉完以及預(yù)訂關(guān)閉 87源目標(biāo)源目

51、標(biāo)無預(yù)訂無預(yù)訂部分預(yù)訂部分預(yù)訂預(yù)訂完預(yù)訂完預(yù)訂關(guān)閉預(yù)訂關(guān)閉無預(yù)訂無預(yù)訂預(yù)訂預(yù)訂()不直接轉(zhuǎn)換不直接轉(zhuǎn)換關(guān)閉關(guān)閉()部分預(yù)訂部分預(yù)訂退訂退訂(),使預(yù)訂人使預(yù)訂人=0預(yù)訂預(yù)訂(),無空座無空座關(guān)閉關(guān)閉()預(yù)訂完預(yù)訂完不直接轉(zhuǎn)換不直接轉(zhuǎn)換退訂退訂()關(guān)閉關(guān)閉()預(yù)訂關(guān)閉預(yù)訂關(guān)閉無轉(zhuǎn)換無轉(zhuǎn)換無轉(zhuǎn)換無轉(zhuǎn)換無轉(zhuǎn)換無轉(zhuǎn)換88細(xì)化狀態(tài)內(nèi)的活動(dòng)與轉(zhuǎn)換細(xì)化狀態(tài)內(nèi)的活動(dòng)與轉(zhuǎn)換89使用復(fù)合狀態(tài)使用復(fù)合狀態(tài)90活動(dòng)圖和交互圖是活動(dòng)圖和交互圖是UML中對系統(tǒng)動(dòng)態(tài)方面建模的兩種中對系統(tǒng)動(dòng)態(tài)方面建模的兩種主要形式主要形式交互圖強(qiáng)調(diào)的是對象到對象的控制流,而活動(dòng)圖則強(qiáng)調(diào)交互圖強(qiáng)調(diào)的是對象到對象的控制流,而活動(dòng)圖則強(qiáng)調(diào)的是從活

52、動(dòng)到活動(dòng)的控制流的是從活動(dòng)到活動(dòng)的控制流 活動(dòng)圖是一種表述過程基理、業(yè)務(wù)過程以及工作流的技活動(dòng)圖是一種表述過程基理、業(yè)務(wù)過程以及工作流的技術(shù)。它可以用來對業(yè)務(wù)過程、工作流建模,也可以對用術(shù)。它可以用來對業(yè)務(wù)過程、工作流建模,也可以對用例實(shí)現(xiàn)甚至是程序?qū)崿F(xiàn)來建模例實(shí)現(xiàn)甚至是程序?qū)崿F(xiàn)來建模 9192初始節(jié)點(diǎn)和活動(dòng)終點(diǎn):用一個(gè)實(shí)心圓表示初始節(jié)點(diǎn),用初始節(jié)點(diǎn)和活動(dòng)終點(diǎn):用一個(gè)實(shí)心圓表示初始節(jié)點(diǎn),用一個(gè)圓圈內(nèi)加一個(gè)實(shí)心圓來表示活動(dòng)終點(diǎn)一個(gè)圓圈內(nèi)加一個(gè)實(shí)心圓來表示活動(dòng)終點(diǎn)活動(dòng)節(jié)點(diǎn):是活動(dòng)圖中最主要的元素之一,它用來表示活動(dòng)節(jié)點(diǎn):是活動(dòng)圖中最主要的元素之一,它用來表示一個(gè)活動(dòng)一個(gè)活動(dòng) 轉(zhuǎn)換:當(dāng)一個(gè)活動(dòng)結(jié)束時(shí)

53、,控制流就會馬上傳遞給下一轉(zhuǎn)換:當(dāng)一個(gè)活動(dòng)結(jié)束時(shí),控制流就會馬上傳遞給下一個(gè)活動(dòng)節(jié)點(diǎn),在活動(dòng)圖中稱之為個(gè)活動(dòng)節(jié)點(diǎn),在活動(dòng)圖中稱之為“轉(zhuǎn)換轉(zhuǎn)換”,用一條帶箭,用一條帶箭頭的直線來表示頭的直線來表示 93分支與監(jiān)護(hù)條件:分支是用菱形表示的,它有一個(gè)進(jìn)入分支與監(jiān)護(hù)條件:分支是用菱形表示的,它有一個(gè)進(jìn)入轉(zhuǎn)換(箭頭從外指向分支符號),轉(zhuǎn)換(箭頭從外指向分支符號),一個(gè)或多個(gè)離開轉(zhuǎn)換(箭頭從分支符一個(gè)或多個(gè)離開轉(zhuǎn)換(箭頭從分支符號指向外)。而每個(gè)離開轉(zhuǎn)換上都會號指向外)。而每個(gè)離開轉(zhuǎn)換上都會有一個(gè)監(jiān)護(hù)條件,用來表示滿足什么有一個(gè)監(jiān)護(hù)條件,用來表示滿足什么條件的時(shí)候執(zhí)行該轉(zhuǎn)換。條件的時(shí)候執(zhí)行該轉(zhuǎn)換。分岔與匯

54、合:分岔與匯合:94959697“活動(dòng)圖活動(dòng)圖” 比較直觀易懂;與傳統(tǒng)的流程圖十分的相近,比較直觀易懂;與傳統(tǒng)的流程圖十分的相近,只要能夠讀懂活動(dòng)圖,就不難畫出活動(dòng)圖只要能夠讀懂活動(dòng)圖,就不難畫出活動(dòng)圖繪制時(shí)首先決定是否采用泳道:主要根據(jù)活動(dòng)圖中是否繪制時(shí)首先決定是否采用泳道:主要根據(jù)活動(dòng)圖中是否要體現(xiàn)出活動(dòng)的不同實(shí)施者要體現(xiàn)出活動(dòng)的不同實(shí)施者然后盡量使用分支、分岔和匯合等基本的建模元素來描然后盡量使用分支、分岔和匯合等基本的建模元素來描述活動(dòng)控制流程述活動(dòng)控制流程如果需要,加入對象流以及對象的狀態(tài)變化,利用一些如果需要,加入對象流以及對象的狀態(tài)變化,利用一些高級的建模元素(如輔助活動(dòng)圖、匯合

55、描述、發(fā)送信號高級的建模元素(如輔助活動(dòng)圖、匯合描述、發(fā)送信號與接收信號、引腳、擴(kuò)展區(qū))來表示更多的信息與接收信號、引腳、擴(kuò)展區(qū))來表示更多的信息活動(dòng)圖的建模關(guān)鍵是表示出控制流,其它的建模元素都活動(dòng)圖的建模關(guān)鍵是表示出控制流,其它的建模元素都是圍繞這一宗旨所進(jìn)行的補(bǔ)充是圍繞這一宗旨所進(jìn)行的補(bǔ)充98部署圖部署圖99100節(jié)點(diǎn):它代表一個(gè)運(yùn)行時(shí)的計(jì)算資源,例如一臺計(jì)算機(jī)、節(jié)點(diǎn):它代表一個(gè)運(yùn)行時(shí)的計(jì)算資源,例如一臺計(jì)算機(jī)、一個(gè)工作站等其它設(shè)備一個(gè)工作站等其它設(shè)備 節(jié)點(diǎn)的概念和構(gòu)件有許多相同之處,例如二者有多名稱,節(jié)點(diǎn)的概念和構(gòu)件有許多相同之處,例如二者有多名稱,都可以參與依賴、泛化和關(guān)聯(lián)關(guān)系,都可以

56、被嵌套,都都可以參與依賴、泛化和關(guān)聯(lián)關(guān)系,都可以被嵌套,都可以有實(shí)例,都可以參與交互。但它們之間也存在明顯可以有實(shí)例,都可以參與交互。但它們之間也存在明顯的區(qū)別:構(gòu)件是參與系統(tǒng)執(zhí)行的事物,而節(jié)點(diǎn)是執(zhí)行構(gòu)的區(qū)別:構(gòu)件是參與系統(tǒng)執(zhí)行的事物,而節(jié)點(diǎn)是執(zhí)行構(gòu)件的事物;構(gòu)件表示邏輯元素的物理打包,而節(jié)點(diǎn)表示件的事物;構(gòu)件表示邏輯元素的物理打包,而節(jié)點(diǎn)表示構(gòu)件的物理部署構(gòu)件的物理部署本圖中建模了四個(gè)節(jié)點(diǎn):本圖中建模了四個(gè)節(jié)點(diǎn):B/S客戶端、客戶端、C/S客戶端、客戶端、IIS服務(wù)器和數(shù)據(jù)庫服務(wù)器服務(wù)器和數(shù)據(jù)庫服務(wù)器 101連接:節(jié)點(diǎn)之間最常見的關(guān)系就是關(guān)聯(lián)關(guān)系(用一根實(shí)連接:節(jié)點(diǎn)之間最常見的關(guān)系就是關(guān)聯(lián)關(guān)

57、系(用一根實(shí)線表示)。為了更好地表示兩個(gè)節(jié)點(diǎn)之間的關(guān)系,我們線表示)。為了更好地表示兩個(gè)節(jié)點(diǎn)之間的關(guān)系,我們可以通過可以通過“約束約束”來對連接進(jìn)行描述。來對連接進(jìn)行描述。源節(jié)點(diǎn)目標(biāo)節(jié)點(diǎn)約束含義B/S客戶端IIS服務(wù)器HTTP+Network網(wǎng)絡(luò)連接,使用HTTP協(xié)議C/S客戶端IIS服務(wù)器HTTP+SOAP+Network網(wǎng)絡(luò)連接,通過Web Service訪問服務(wù)IIS服務(wù)器數(shù)據(jù)庫服務(wù)器ADO.NET.NET提供的數(shù)據(jù)庫訪問解決方案102處理器(處理器(process):具有處理能力的節(jié)點(diǎn),即可以):具有處理能力的節(jié)點(diǎn),即可以執(zhí)行構(gòu)件執(zhí)行構(gòu)件設(shè)備(設(shè)備(device):沒有處理能力的節(jié)點(diǎn),

58、至少是不):沒有處理能力的節(jié)點(diǎn),至少是不關(guān)心其處理能力的節(jié)點(diǎn)。例如打印機(jī)、關(guān)心其處理能力的節(jié)點(diǎn)。例如打印機(jī)、IC卡讀寫器,如卡讀寫器,如果我們的系統(tǒng)不考慮它們內(nèi)部的芯片,就可建模為設(shè)備果我們的系統(tǒng)不考慮它們內(nèi)部的芯片,就可建模為設(shè)備節(jié)點(diǎn)屬性和操作:可以為一個(gè)節(jié)點(diǎn)提供處理器速度、內(nèi)節(jié)點(diǎn)屬性和操作:可以為一個(gè)節(jié)點(diǎn)提供處理器速度、內(nèi)存容量、網(wǎng)卡數(shù)量等屬性,可以為其提供啟動(dòng)、關(guān)機(jī)等存容量、網(wǎng)卡數(shù)量等屬性,可以為其提供啟動(dòng)、關(guān)機(jī)等操作操作 103自定義構(gòu)造型圖標(biāo)自定義構(gòu)造型圖標(biāo)104IC卡讀卡器:提供給員工刷卡用,它將收集刷卡的時(shí)間信息,傳給卡讀卡器:提供給員工刷卡用,它將收集刷卡的時(shí)間信息,傳給應(yīng)用系

59、統(tǒng),并存入數(shù)據(jù)庫中應(yīng)用系統(tǒng),并存入數(shù)據(jù)庫中應(yīng)用服務(wù)器:用來負(fù)責(zé)從應(yīng)用服務(wù)器:用來負(fù)責(zé)從IC卡讀卡器中收集信息,并對管理人員提卡讀卡器中收集信息,并對管理人員提供員工設(shè)置、考勤查詢等功能供員工設(shè)置、考勤查詢等功能數(shù)據(jù)庫服務(wù)器:用來存儲考勤數(shù)據(jù),由于該系統(tǒng)比較小,因此在物數(shù)據(jù)庫服務(wù)器:用來存儲考勤數(shù)據(jù),由于該系統(tǒng)比較小,因此在物理上可以與應(yīng)用服務(wù)器合并理上可以與應(yīng)用服務(wù)器合并客戶端軟件:提供給管理人員使用,連接應(yīng)用服務(wù)器,完成相應(yīng)操客戶端軟件:提供給管理人員使用,連接應(yīng)用服務(wù)器,完成相應(yīng)操作作 105客戶端:需使用客戶端:需使用Windows操作系統(tǒng),安裝客戶端軟件(假設(shè)名為)操作系統(tǒng),安裝客戶端

60、軟件(假設(shè)名為)服務(wù)器:包含一個(gè)用服務(wù)器:包含一個(gè)用Delphi開發(fā)的服務(wù)端軟件(設(shè)為),它需要與開發(fā)的服務(wù)端軟件(設(shè)為),它需要與Access數(shù)據(jù)庫交互(設(shè)為),并且需要通過數(shù)據(jù)庫交互(設(shè)為),并且需要通過IC卡讀卡器的驅(qū)動(dòng)程序卡讀卡器的驅(qū)動(dòng)程序(假設(shè)名為)來實(shí)現(xiàn)與(假設(shè)名為)來實(shí)現(xiàn)與IC卡讀卡器通信卡讀卡器通信IC卡讀寫器:對于本系統(tǒng)而言,它是不執(zhí)行構(gòu)件的設(shè)備,不過為了卡讀寫器:對于本系統(tǒng)而言,它是不執(zhí)行構(gòu)件的設(shè)備,不過為了方便員工,安裝了方便員工,安裝了3個(gè)。個(gè)。106作業(yè)解答n教材教材購銷購銷系統(tǒng)系統(tǒng)主要功能主要功能根據(jù)學(xué)校的教學(xué)計(jì)劃,向選課的學(xué)生及時(shí)供應(yīng)所需根據(jù)學(xué)校的教學(xué)計(jì)劃,向選課

溫馨提示

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

最新文檔

評論

0/150

提交評論