![面向?qū)ο蠓椒▽W(xué)PPT課件_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/19/8e934cb8-c470-44be-a7da-041490ed28f3/8e934cb8-c470-44be-a7da-041490ed28f31.gif)
![面向?qū)ο蠓椒▽W(xué)PPT課件_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/19/8e934cb8-c470-44be-a7da-041490ed28f3/8e934cb8-c470-44be-a7da-041490ed28f32.gif)
![面向?qū)ο蠓椒▽W(xué)PPT課件_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/19/8e934cb8-c470-44be-a7da-041490ed28f3/8e934cb8-c470-44be-a7da-041490ed28f33.gif)
![面向?qū)ο蠓椒▽W(xué)PPT課件_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/19/8e934cb8-c470-44be-a7da-041490ed28f3/8e934cb8-c470-44be-a7da-041490ed28f34.gif)
![面向?qū)ο蠓椒▽W(xué)PPT課件_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/19/8e934cb8-c470-44be-a7da-041490ed28f3/8e934cb8-c470-44be-a7da-041490ed28f35.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 面向?qū)ο蠓椒▽W(xué)的出發(fā)點和基本原則,是盡可能模擬人類習(xí)慣的思維方式,使開發(fā)軟件的方法與過程盡可能接近人類認識世界解決問題的方法與過程,也就是使描述問題的問題空間(也稱為問題域)與實現(xiàn)解法的解空間(也稱為求解域)在結(jié)構(gòu)上盡可能一致。1、面向?qū)ο蠓椒▽W(xué)概述第1頁/共74頁概括地說,面向?qū)ο蠓椒ň哂邢率?個要點:(1) 認為客觀世界是由各種對象組成的,任何事物都是對象,復(fù)雜的對象可以由比較簡單的對象以某種方式組合而成。按照這種觀點,可以認為整個世界就是一個最復(fù)雜的對象。因此,面向?qū)ο蟮能浖到y(tǒng)是由對象組成的,軟件中的任何元素都是對象,復(fù)雜的軟件對象由比較簡單的對象組合而成。由此可見,面向?qū)ο蠓椒ㄓ脤?/p>
2、象分解取代了傳統(tǒng)方法的功能分解。第2頁/共74頁(2) 把所有對象都劃分成各種對象類(簡稱為類,class),每個對象類都定義了一組數(shù)據(jù)和一組方法。數(shù)據(jù)用于表示對象的靜態(tài)屬性,是對象的狀態(tài)信息。因此,每當建立該對象類的一個新實例時,就按照類中對數(shù)據(jù)的定義為這個新對象生成一組專用的數(shù)據(jù),以便描述該對象獨特的屬性值。類中定義的方法,是允許施加于該類對象上的操作,是該類所有對象共享的,并不需要為每個對象都復(fù)制操作的代碼。第3頁/共74頁(3) 按照子類(或稱為派生類)與父類(或稱為基類)的關(guān)系,把若干個對象類組成一個層次結(jié)構(gòu)的系統(tǒng)(也稱為類等級)。在這種層次結(jié)構(gòu)中,通常下層的派生類具有和上層的基類相
3、同的特性(包括數(shù)據(jù)和方法),這種現(xiàn)象稱為繼承(inheritance)。但是,如果在派生類中對某些特性又做了重新描述,則在派生類中的這些特性將以新描述為準,也就是說,低層的特性將屏蔽高層的同名特性。第4頁/共74頁(4) 對象彼此之間僅能通過傳遞消息互相聯(lián)系。對象與傳統(tǒng)的數(shù)據(jù)有本質(zhì)區(qū)別,它不是被動地等待外界對它施加操作,相反,它是進行處理的主體,必須發(fā)消息請求它執(zhí)行它的某個操作,處理它的私有數(shù)據(jù),而不能從外界直接對它的私有數(shù)據(jù)進行操作。也就是說,一切局部于該對象的私有信息,都被封裝在該對象類的定義中,就好像裝在一個不透明的黑盒子中一樣,在外界是看不見的,更不能直接使用,這就是“封裝性”。第5頁
4、/共74頁1. 與人類習(xí)慣的思維方法一致 傳統(tǒng)的程序設(shè)計技術(shù)是面向過程的設(shè)計方法,這種方法以算法為核心,把數(shù)據(jù)和過程作為相互獨立的部分,數(shù)據(jù)代表問題空間中的客體,程序代碼則用于處理這些數(shù)據(jù)。 面向?qū)ο蠓椒▽W(xué)的優(yōu)點第6頁/共74頁2. 穩(wěn)定性好 傳統(tǒng)的軟件開發(fā)方法以算法為核心,開發(fā)過程基于功能分析和功能分解。用傳統(tǒng)方法所建立起來的軟件系統(tǒng)的結(jié)構(gòu)緊密依賴于系統(tǒng)所要完成的功能,當功能需求發(fā)生變化時將引起軟件結(jié)構(gòu)的整體修改。事實上,用戶需求變化大部分是針對功能的,因此,這樣的軟件系統(tǒng)是不穩(wěn)定的。第7頁/共74頁3. 可重用性好 用已有的零部件裝配新的產(chǎn)品,是典型的重用技術(shù),例如,可以用已有的預(yù)制件建筑
5、一幢結(jié)構(gòu)和外形都不同于從前的新大樓。重用是提高生產(chǎn)率的最主要的方法。第8頁/共74頁4. 較易開發(fā)大型軟件產(chǎn)品 在開發(fā)大型軟件產(chǎn)品時,組織開發(fā)人員的方法不恰當往往是出現(xiàn)問題的主要原因。用面向?qū)ο蠓椒▽W(xué)開發(fā)軟件時,構(gòu)成軟件系統(tǒng)的每個對象就像一個微型程序,有自己的數(shù)據(jù)、操作、功能和用途,因此,可以把一個大型軟件產(chǎn)品分解成一系列本質(zhì)上相互獨立的小產(chǎn)品來處理,這就不僅降低了開發(fā)的技術(shù)難度,而且也使得對開發(fā)工作的管理變得容易多了。這就是為什么對于大型軟件產(chǎn)品來說,面向?qū)ο蠓缎蛢?yōu)于結(jié)構(gòu)化范型的原因之一。第9頁/共74頁5. 可維護性好 用傳統(tǒng)方法和面向過程語言開發(fā)出來的軟件很難維護,是長期困擾人們的一個嚴
6、重問題,是軟件危機的突出表現(xiàn)。第10頁/共74頁 在應(yīng)用領(lǐng)域中有意義的、與所要解決的問題有關(guān)系的任何事物都可以作為對象,它既可以是具體的物理實體的抽象,也可以是人為的概念,或者是任何有明確邊界和意義的東西。,對象是對問題域中某個實體的抽象,設(shè)立某個對象就反映了軟件系統(tǒng)具有保存有關(guān)它的信息并且與它進行交互的能力。2、 面向?qū)ο蟮母拍?(1) 對象第11頁/共74頁由于客觀世界中的實體通常都既具有靜態(tài)的屬性,又具有動態(tài)的行為,因此,面向?qū)ο蠓椒▽W(xué)中的對象是由描述該對象屬性的數(shù)據(jù)以及可以對這些數(shù)據(jù)施加的所有操作封裝在一起構(gòu)成的統(tǒng)一體。對象可以作的操作表示它的動態(tài)行為,在面向?qū)ο蠓治龊兔嫦驅(qū)ο笤O(shè)計中,
7、通常把對象的操作稱為服務(wù)或方法。1. 對象的形象表示為有助于讀者理解對象的概念,下圖形象地描繪了具有3個操作的對象。第12頁/共74頁對象的形象表示第13頁/共74頁 一個對象很像一臺錄音機。當在軟件中使用一個對象的時候,只能通過對象與外界的界面來操作它。對象與外界的界面也就是該對象向公眾開放的操作。使用對象向公眾開放的操作就好像使用錄音機的按鍵,只須知道該操作的名字(好像錄音機的按鍵名)和所需要的參數(shù)(提供附加信息或設(shè)置狀態(tài),根本無須知道實現(xiàn)這些操作的方法。事實上,實現(xiàn)對象操作的代碼和數(shù)據(jù)是隱藏在對象內(nèi)部的,一個對象好像是一個黑盒子,表示它內(nèi)部狀態(tài)的數(shù)據(jù)和實現(xiàn)各個操作的代碼及局部數(shù)據(jù),都被封
8、裝在這個黑盒子內(nèi)部,在外面是看不見的,更不能從外面去訪問或修改這些數(shù)據(jù)或代碼。第14頁/共74頁(2)類(class) 現(xiàn)實世界中存在的客觀事物有些是彼此相似的,例如,張三、李四、王五雖說每個人職業(yè)、性格、愛好、特長等等各有不同,但是,他們的基本特征是相似的,都是黃皮膚、黑頭發(fā)、黑眼睛,于是人們把他們統(tǒng)稱為“中國人”。人類習(xí)慣于把有相似特征的事物歸為一類,分類是人類認識客觀世界的基本方法。第15頁/共74頁 在面向?qū)ο蟮能浖夹g(shù)中,“類”就是對具有相同數(shù)據(jù)和相同操作的一組相似對象的定義,也就是說,類是對具有相同屬性和行為的一個或多個對象的描述,通常在這種描述中也包括對怎樣創(chuàng)建該類的新對象的說明
9、。 以上先詳細地闡述了對象的定義,然后在此基礎(chǔ)上定義了類。也可以先定義類再定義對象,例如,可以像下面這樣定義類和對象: 類是支持繼承的抽象數(shù)據(jù)類型,而對象就是類的實例。第16頁/共74頁(3) 實例(instance) 實例就是由某個特定的類所描述的一個具體的對象。類是對具有相同屬性和行為的一組相似的對象的抽象,類在現(xiàn)實世界中并不能真正存在。實際上類是建立對象時使用的“樣板”,按照這個樣板所建立的一個個具體的對象,就是類的實際例子,通常稱為實例。當使用“對象”這個術(shù)語時,既可以指一個具體的對象,也可以泛指一般的對象,但是,當使用“實例”這個術(shù)語時,必然是指一個具體的對象。第17頁/共74頁(4
10、) 消息(message)消息就是要求某個對象執(zhí)行在定義它的那個類中所定義的某個操作的規(guī)格說明。通常,一個消息由下述3部分組成:接收消息的對象;消息選擇符(也稱為消息名);零個或多個變元。(5)方法(method)方法就是對象所能執(zhí)行的操作,也就是類中所定義的服務(wù)。方法描述了對象執(zhí)行操作的算法,響應(yīng)消息的方法。在C+語言中把方法稱為成員函數(shù)。第18頁/共74頁(6)屬性(attribute)屬性就是類中所定義的數(shù)據(jù),它是對客觀世界實體所具有的性質(zhì)的抽象。類的每個實例都有自己特有的屬性值。在C+語言中把屬性稱為數(shù)據(jù)成員(7)封裝(encapsulation)從字面上理解,所謂封裝就是把某個事物包
11、起來,使外界不知道該事物的具體內(nèi)容。把數(shù)據(jù)和實現(xiàn)操作的代碼集中起來放在對象內(nèi)部。一個對象好像是一個不透明的黑盒子,表示對象狀態(tài)的數(shù)據(jù)和實現(xiàn)操作的代碼與局部數(shù)據(jù),都被封裝在黑盒子里面。第19頁/共74頁封裝也就是信息隱藏,通過封裝對外界隱藏了對象的實現(xiàn)細節(jié)。對象類實質(zhì)上是抽象數(shù)據(jù)類型。類把數(shù)據(jù)說明和操作說明與數(shù)據(jù)表達和操作實現(xiàn)分離開了,使用者只需知道它的說明(值域及可對數(shù)據(jù)施加的操作),就可以使用它。7. 繼承(inheritance)廣義地說,繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們。在面向?qū)ο蟮能浖夹g(shù)中,繼承是子類自動地共享基類中定義的數(shù)據(jù)和方法的機制。第20頁/共74頁實
12、現(xiàn)繼承機制的原理第21頁/共74頁當一個類只允許有一個父類時,也就是說,當類等級為樹形結(jié)構(gòu)時,類的繼承是單繼承;當允許一個類有多個父類時,類的繼承是多重繼承。多重繼承的類可以組合多個父類的性質(zhì)構(gòu)成所需要的性質(zhì),因此功能更強、使用更方便;但是,使用多重繼承時要注意避免二義性。繼承性使得相似的對象可以共享程序代碼和數(shù)據(jù)結(jié)構(gòu),從而大大減少了程序中的冗余信息。在程序執(zhí)行期間,對對象某一性質(zhì)的查找是從該對象類在類等級中所在的層次開始,沿類等級逐層向上進行的,并把第一個被找到的性質(zhì)作為所要的性質(zhì)。因此,低層的性質(zhì)將屏蔽高層的同名性質(zhì)。第22頁/共74頁(9) 多態(tài)性(polymorphism) 多態(tài)性一詞
13、來源于希臘語,意思是“有許多形態(tài)”。在面向?qū)ο蟮能浖夹g(shù)中,多態(tài)性是指子類對象可以像父類對象那樣使用,同樣的消息既可以發(fā)送給父類對象也可以發(fā)送給子類對象。也就是說,在類等級的不同層次中可以共享(公用)一個行為(方法)的名字,然而不同層次中的每個類卻各自按自己的需要來實現(xiàn)這個行為。當對象接收到發(fā)送給它的消息時,根據(jù)該對象所屬于的類動態(tài)選用在該類中定義的實現(xiàn)算法。第23頁/共74頁(10) 重載(overloading) 有兩種重載:函數(shù)重載是指在同一作用域內(nèi)的若干個參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字;運算符重載是指同一個運算符可以施加于不同類型的操作數(shù)上面。當然,當參數(shù)特征不同或被操作數(shù)的
14、類型不同時,實現(xiàn)函數(shù)的算法或運算符的語義是不相同的。第24頁/共74頁 為了更好地理解問題,人們常常采用建立問題模型的方法。所謂模型,就是為了理解事物而對事物作出的一種抽象,是對事物的一種無歧義的書面描述。通常,模型由一組圖示符號和組織這些符號的規(guī)則組成,利用它們來定義和描述問題域中的術(shù)語和概念。更進一步講,模型是一種思考工具,利用這種工具可以把知識規(guī)范地表示出來。模型可以幫助我們思考問題、定義術(shù)語、在選擇術(shù)語時作出適當?shù)募僭O(shè),并且可以幫助我們保持定義和假設(shè)的一致性。3、 面向?qū)ο蠼5?5頁/共74頁 一個典型的軟件系統(tǒng)組合了3方面內(nèi)容:它使用數(shù)據(jù)結(jié)構(gòu)(對象模型),執(zhí)行操作(動態(tài)模型),并且
15、完成數(shù)據(jù)值的變化(功能模型)。用面向?qū)ο蠓椒ㄩ_發(fā)軟件,在任何情況下,對象模型始終都是最重要、最基本、最核心的。在整個開發(fā)過程中,3種模型一直都在發(fā)展、完善。在面向?qū)ο蠓治鲞^程中,構(gòu)造出完全獨立于實現(xiàn)的應(yīng)用域模型;在面向?qū)ο笤O(shè)計過程中,把求解域的結(jié)構(gòu)逐漸加入到模型中;在實現(xiàn)階段,把應(yīng)用域和求解域的結(jié)構(gòu)都編成程序代碼并進行嚴格的測試驗證。第26頁/共74頁 對象模型表示靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)的“數(shù)據(jù)”性質(zhì)。它是對模擬客觀世界實體的對象以及對象彼此間的關(guān)系的映射,描述了系統(tǒng)的靜態(tài)結(jié)構(gòu)。對象模型為建立動態(tài)模型和功能模型,提供了實質(zhì)性的框架。4 、 對象模型第27頁/共74頁 在建立對象模型時,我們的目標
16、是從客觀世界中提煉出對具體應(yīng)用有價值的概念。為了建立對象模型,需要定義一組圖形符號,并且規(guī)定一組組織這些符號以表示特定語義的規(guī)則。也就是說,需要用適當?shù)慕UZ言來表達模型,建模語言由記號(即模型中使用的符號)和使用記號的規(guī)則(語法、語義和語用)組成。第28頁/共74頁類圖描述類及類與類之間的靜態(tài)關(guān)系。類圖是一種靜態(tài)模型,它是創(chuàng)建其他UML圖的基礎(chǔ)。一個系統(tǒng)可以由多張類圖來描述,一個類也可以出現(xiàn)在幾張類圖中。定義類UML中類的圖形符號為長方形,用兩條橫線把長方形分成上、中、下3個區(qū)域(下面兩個區(qū)域可省略),3個區(qū)域分別放類的名字、屬性和服務(wù)。4.1 類圖的基本符號第29頁/共74頁 表示類的圖第
17、30頁/共74頁如前所述,類圖由類及類與類之間的關(guān)系組成。定義了類之后就可以定義類與類之間的各種關(guān)系了。類與類之間通常有關(guān)聯(lián)、泛化(繼承)、依賴和細化等4種關(guān)系。1. 關(guān)聯(lián)關(guān)聯(lián)表示兩個類的對象之間存在某種語義上的聯(lián)系。例如,作家使用計算機,我們就認為在作家和計算機之間存在某種語義連接,因此,在類圖中應(yīng)該在作家類和計算機類之間建立關(guān)聯(lián)關(guān)系。4.2 表示關(guān)系的符號第31頁/共74頁(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)起一個名字,在另一個方向上起另一個名字(也可
18、不起名字)。為避免混淆,在名字前面(或后面)加一個表示關(guān)聯(lián)方向的黑三角。第32頁/共74頁 普通關(guān)聯(lián)示例第33頁/共74頁在表示關(guān)聯(lián)的直線兩端可以寫上重數(shù)(multiplicity),它表示該類有多少個對象與對方的一個對象連接。重數(shù)的表示方法通常有:01表示0到1個對象0*或*表示0到多個對象1+或1*表示1到多個對象115表示1到15個對象3表示3個對象如果圖中未明確標出關(guān)聯(lián)的重數(shù),則默認重數(shù)是1。第34頁/共74頁(2) 關(guān)聯(lián)的角色在任何關(guān)聯(lián)中都會涉及到參與此關(guān)聯(lián)的對象所扮演的角色(即起的作用),在某些情況下顯式標明角色名有助于別人理解類圖。例如,下圖是一個遞歸關(guān)聯(lián)(即一個類與它本身有關(guān)聯(lián)
19、關(guān)系)的例子。一個人與另一個人結(jié)婚,必然一個人扮演丈夫的角色,另一個人扮演妻子的角色。如果沒有顯式標出角色名,則意味著用類名作為角色名。第35頁/共74頁 關(guān)聯(lián)的角色第36頁/共74頁(3) 限定關(guān)聯(lián)限定關(guān)聯(lián)通常用在一對多或多對多的關(guān)聯(lián)關(guān)系中,可以把模型中的重數(shù)從一對多變成一對一,或從多對多簡化成多對一。在類圖中把限定詞放在關(guān)聯(lián)關(guān)系末端的一個小方框內(nèi)。例如,某操作系統(tǒng)中一個目錄下有許多文件,一個文件僅屬于一個目錄,在一個目錄內(nèi)文件名確定了惟一一個文件。利用限定詞“文件名”表示了目錄與文件之間的關(guān)系,可見,利用限定詞把一對多關(guān)系簡化成了一對一關(guān)系。第37頁/共74頁 一個受限的關(guān)聯(lián)第38頁/共7
20、4頁限定提高了語義精確性,增強了查詢能力。限定的語法表明,文件名在其目錄內(nèi)是惟一的。因此,查找一個文件的方法就是,首先定下目錄,然后在該目錄內(nèi)查找指定的文件名。由于目錄加文件名可惟一地確定一個文件,因此,限定詞“文件名”應(yīng)該放在靠近目錄的那一端。(4) 關(guān)聯(lián)類為了說明關(guān)聯(lián)的性質(zhì)可能需要一些附加信息??梢砸胍粋€關(guān)聯(lián)類來記錄這些信息。關(guān)聯(lián)中的每個連接與關(guān)聯(lián)類的一個對象相聯(lián)系。關(guān)聯(lián)類通過一條虛線與關(guān)聯(lián)連接。第39頁/共74頁 例如,一個電梯系統(tǒng)的類模型,隊列就是電梯控制器類與電梯類的關(guān)聯(lián)關(guān)系上的關(guān)聯(lián)類。從圖中可以看出,一個電梯控制器控制著4臺電梯,這樣,控制器和電梯之間的實際連接就有4個,每個連接
21、都對應(yīng)一個隊列(對象),每個隊列(對象)存儲著來自控制器和電梯內(nèi)部按鈕的請求服務(wù)信息。電梯控制器通過讀取隊列信息,選擇一個合適的電梯為乘客服務(wù)。關(guān)聯(lián)類與一般的類一樣,也有屬性、操作和關(guān)聯(lián)。第40頁/共74頁關(guān)聯(lián)類示例第41頁/共74頁2. 聚集聚集也稱為聚合,是關(guān)聯(lián)的特例。聚集表示類與類之間的關(guān)系是整體與部分的關(guān)系。在陳述需求時使用的“包含”、“組成”、“分為部分”等字句,往往意味著存在聚集關(guān)系。除了一般聚集之外,還有兩種特殊的聚集關(guān)系,分別是共享聚集和組合聚集。第42頁/共74頁(1) 共享聚集 如果在聚集關(guān)系中處于部分方的對象可同時參與多個處于整體方對象的構(gòu)成,則該聚集稱為共享聚集。例如,
22、一個課題組包含許多成員,每個成員又可以是另一個課題組的成員,則課題組和成員之間是共享聚集關(guān)系。一般聚集和共享聚集的圖示符號,都是在表示關(guān)聯(lián)關(guān)系的直線末端緊挨著整體類的地方畫一個空心菱形。第43頁/共74頁圖9.10 共享聚集示例第44頁/共74頁(2) 組合聚集 如果部分類完全隸屬于整體類,部分與整體共存,整體不存在了部分也會隨之消失(或失去存在價值了),則該聚集稱為組合聚集(簡稱為組成)。例如,在屏幕上打開一個窗口,它就由文本框、列表框、按鈕和菜單組成,一旦關(guān)閉了窗口,各個組成部分也同時消失,窗口和它的組成部分之間存在著組合聚集關(guān)系,組成關(guān)系用實心菱形表示。第45頁/共74頁圖9.11 組合
23、聚集示例第46頁/共74頁3. 泛化UML中的泛化關(guān)系就是通常所說的繼承關(guān)系,它是通用元素和具體元素之間的一種分類關(guān)系。具體元素完全擁有通用元素的信息,并且還可以附加一些其他信息。在UML中,用一端為空心三角形的連線表示泛化關(guān)系,三角形的頂角緊挨著通用元素。注意,泛化針對類型而不針對實例,一個類可以繼承另一個類,但一個對象不能繼承另一個對象。實際上,泛化關(guān)系指出在類與類之間存在“一般-特殊”關(guān)系。泛化可進一步劃分成普通泛化和受限泛化。第47頁/共74頁(1) 普通泛化 需要特別說明的是,沒有具體對象的類稱為抽象類。抽象類通常作為父類,用于描述其他類(子類)的公共屬性和行為。圖示抽象類時,在類名
24、下方附加一個標記值abstract,如下圖所示。圖下方的兩個折角矩形是模型元素“筆記”的符號,其中的文字是注釋,分別說明兩個子類的操作drive的功能。第48頁/共74頁圖9.12 抽象類示例第49頁/共74頁(2) 受限泛化可以給泛化關(guān)系附加約束條件,以進一步說明該泛化關(guān)系的使用方法或擴充方法,這樣的泛化關(guān)系稱為受限泛化。多重繼承指的是,一個子類可以同時多次繼承同一個上層基類,例如下圖中的水陸兩用類繼承了兩次交通工具類。第50頁/共74頁4. 依賴和細化(1) 依賴關(guān)系依賴關(guān)系描述兩個模型元素(類、用例等)之間的語義連接關(guān)系: 其中一個模型元素是獨立的,另一個模型元素不是獨立的,它依賴于獨立
25、的模型元素,如果獨立的模型元素改變了,將影響依賴于它的模型元素。在UML的類圖中,用帶箭頭的虛線連接有依賴關(guān)系的兩個類,箭頭指向獨立的類。在虛線上可以帶一個版類標簽,具體說明依賴的種類,例如,下圖表示一個友元依賴關(guān)系,該關(guān)系使得B類的操作可以使用A類中私有的或保護的成員。第51頁/共74頁友元依賴關(guān)系第52頁/共74頁(2) 細化關(guān)系 當對同一個事物在不同抽象層次上描述時,這些描述之間具有細化關(guān)系。假設(shè)兩個模型元素A和B描述同一個事物,它們的區(qū)別是抽象層次不同,如果B是在A的基礎(chǔ)上的更詳細的描述,則稱B細化了A,或稱A細化成了B。細化的圖示符號為由元素B指向元素A的、一端為空心三角形的虛線(注
26、意,不是實線)。第53頁/共74頁 細化關(guān)系示例第54頁/共74頁動態(tài)模型表示瞬時的、行為化的系統(tǒng)的“控制”性質(zhì),它規(guī)定了對象模型中的對象的合法變化序列。一旦建立起對象模型之后,就需要考察對象的動態(tài)行為。所有對象都具有自己的生命周期(或稱為運行周期)。對一個對象來說,生命周期由許多階段組成,在每個特定階段中,都有適合該對象的一組運行規(guī)律和行為規(guī)則,用以規(guī)范該對象的行為。生命周期中的階段也就是對象的狀態(tài)。5 、 動態(tài)模型第55頁/共74頁所謂狀態(tài),是對對象屬性值的一種抽象。當然,在定義狀態(tài)時應(yīng)該忽略那些不影響對象行為的屬性。各對象之間相互觸發(fā)(即作用)就形成了一系列的狀態(tài)變化。我們把一個觸發(fā)行為
27、稱作一個事件。對象對事件的響應(yīng),取決于接受該觸發(fā)的對象當時所處的狀態(tài),響應(yīng)包括改變自己的狀態(tài)或者又形成一個新的觸發(fā)行為。狀態(tài)有持續(xù)性,它占用一段時間間隔。狀態(tài)與事件密不可分,一個事件分開兩個狀態(tài),一個狀態(tài)隔開兩個事件。事件表示時刻,狀態(tài)代表時間間隔。第56頁/共74頁通常,用UML提供的狀態(tài)圖來描繪對象的狀態(tài)、觸發(fā)狀態(tài)轉(zhuǎn)換的事件以及對象的行為(對事件的響應(yīng))。每個類的動態(tài)行為用一張狀態(tài)圖來描繪,各個類的狀態(tài)圖通過共享事件合并起來,從而構(gòu)成系統(tǒng)的動態(tài)模型。也就是說,動態(tài)模型是基于事件共享而互相關(guān)聯(lián)的一組狀態(tài)圖的集合。第57頁/共74頁功能模型表示變化的系統(tǒng)的“功能”性質(zhì),它指明了系統(tǒng)應(yīng)該“做什么
28、”,因此更直接地反映了用戶對目標系統(tǒng)的需求。通常,功能模型由一組數(shù)據(jù)流圖組成。在面向?qū)ο蠓椒▽W(xué)中,數(shù)據(jù)流圖遠不如在結(jié)構(gòu)分析、設(shè)計方法中那樣重要。一般說來,與對象模型和動態(tài)模型比較起來,數(shù)據(jù)流圖并沒有增加新的信息,但是,建立功能模型有助于軟件開發(fā)人員更深入地理解問題域,改進和完善自己的設(shè)計。因此,不能完全忽視功能模型的作用。6 、 功能模型第58頁/共74頁UML提供的用例圖也是進行需求分析和建立功能模型的強有力工具。在UML中把用用例圖建立起來的系統(tǒng)模型稱為用例模型。用例模型描述的是外部行為者(actor)所理解的系統(tǒng)功能。用例模型的建立是系統(tǒng)開發(fā)者和用戶反復(fù)討論的結(jié)果,它描述了開發(fā)者和用戶對
29、需求規(guī)格所達成的共識。第59頁/共74頁一幅用例圖包含的模型元素有系統(tǒng)、行為者、用例及用例之間的關(guān)系。1. 系統(tǒng)系統(tǒng)被看作是一個提供用例的黑盒子,內(nèi)部如何工作、用例如何實現(xiàn),這些對于建立用例模型來說都是不重要的。代表系統(tǒng)的方框的邊線表示系統(tǒng)的邊界,用于劃定系統(tǒng)的功能范圍,定義了系統(tǒng)所具有的功能。描述該系統(tǒng)功能的用例置于方框內(nèi),代表外部實體的行為者置于方框外。6.1 用例圖第60頁/共74頁自動售貨機系統(tǒng)用例圖第61頁/共74頁2. 用例一個用例是可以被行為者感受到的、系統(tǒng)的一個完整的功能。在UML中把用例定義成系統(tǒng)完成的一系列動作,動作的結(jié)果能被特定的行為者察覺到。這些動作除了完成系統(tǒng)內(nèi)部的計
30、算與工作外,還包括與一些行為者的通信。用例通過關(guān)聯(lián)與行為者連接,關(guān)聯(lián)指出一個用例與哪些行為者交互,這種交互是雙向的。用例具有下述特征:(1) 用例代表某些用戶可見的功能,實現(xiàn)一個具體的用戶目標;第62頁/共74頁(2) 用例總是被行為者啟動的,并向行為者提供可識別的值;(3) 用例必須是完整的。注意,用例是一個類,它代表一類功能而不是使用該功能的某個具體實例。用例的實例是系統(tǒng)的一種實際使用方法,通常把用例的實例稱為腳本。腳本是系統(tǒng)的一次具體執(zhí)行過程,例如,在自動售貨機系統(tǒng)中,張三投入硬幣購買礦泉水,系統(tǒng)收到錢后把礦泉水送出來,上述過程就是一個腳本;李四投幣買可樂,但是可樂已賣完了,于是系統(tǒng)給出
31、提示信息并把錢退還給李四,這個過程是另一個腳本。第63頁/共74頁3. 行為者行為者是指與系統(tǒng)交互的人或其他系統(tǒng),它代表外部實體。使用用例并且與系統(tǒng)交互的任何人或物都是行為者。行為者代表一種角色,而不是某個具體的人或物。事實上,一個具體的人可以充當多種不同角色。第64頁/共74頁在用例圖中用直線連接行為者和用例,表示兩者之間交換信息,稱為通信聯(lián)系。行為者觸發(fā)(激活)用例,并與用例交換信息。單個行為者可與多個用例聯(lián)系;反之,一個用例也可與多個行為者聯(lián)系。對于同一個用例而言,不同行為者起的作用也不同??梢园研袨檎叻殖芍餍袨檎吆透毙袨檎?,還可分成主動行為者和被動行為者。實踐表明,行為者對確定用例是非
32、常有用的。面對一個大型、復(fù)雜的系統(tǒng),要列出用例清單往往很困難,可以先列出行為者清單,再針對每個行為者列出它的用例。這樣做可以比較容易地建立起用例模型。第65頁/共74頁4. 用例之間的關(guān)系UML用例之間主要有擴展和使用兩種關(guān)系,它們是泛化關(guān)系的兩種不同形式。(1) 擴展關(guān)系向一個用例中添加一些動作后構(gòu)成了另一個用例,這兩個用例之間的關(guān)系就是擴展關(guān)系,后者繼承前者的一些行為,通常把后者稱為擴展用例。例如,在自動售貨機系統(tǒng)中,“售貨”是一個基本的用例,如果顧客購買罐裝飲料,售貨功能完成得很順利,但是,如果顧客要購買用紙杯裝的散裝飲料,則不能執(zhí)行該用例提供的常規(guī)動作,而要做些改動。第66頁/共74頁我們可以修改售貨用例,使之既能提供售罐裝飲料的常規(guī)動作又能提供售散裝飲料的非常規(guī)動作,
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年高中化學(xué)上學(xué)期第三周 氧化還原反應(yīng)說課稿
- 7 我們有新玩法 說課稿-2023-2024學(xué)年道德與法治二年級下冊統(tǒng)編版
- 2025二手車購買合同書
- 2025合同的履行、變更、轉(zhuǎn)讓、撤銷和終止
- 14 《窮人》說課稿-2024-2025學(xué)年六年級語文上冊統(tǒng)編版001
- 買方購車合同范本
- 公路修建合同范本
- 鋪設(shè)碎石土路面施工方案
- 輕鋼吊頂施工方案
- 路燈池施工方案
- 00015-英語二自學(xué)教程-unit2
- 人教版九上化學(xué)第二單元課題2氧氣課件
- 三年級上冊乘法豎式計算200道及答案
- 區(qū)塊鏈技術(shù)指南
- 1.中小學(xué)推行全員育人導(dǎo)師制的實施方案
- 中頻治療儀的使用流程
- 旅游裝備行業(yè)分析
- 辦公室清潔培訓(xùn)課件
- 主題旅游產(chǎn)品和線路推廣實施方案
- 圖形的位似課件
- 調(diào)料廠工作管理制度
評論
0/150
提交評論