面向?qū)ο蠓椒▽W(xué)PPT課件_第1頁
面向?qū)ο蠓椒▽W(xué)PPT課件_第2頁
面向?qū)ο蠓椒▽W(xué)PPT課件_第3頁
面向?qū)ο蠓椒▽W(xué)PPT課件_第4頁
面向?qū)ο蠓椒▽W(xué)PPT課件_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 面向?qū)ο蠓椒▽W(xué)的出發(fā)點(diǎn)和基本原則,是盡可能模擬人類習(xí)慣的思維方式,使開發(fā)軟件的方法與過程盡可能接近人類認(rèn)識(shí)世界解決問題的方法與過程,也就是使描述問題的問題空間(也稱為問題域)與實(shí)現(xiàn)解法的解空間(也稱為求解域)在結(jié)構(gòu)上盡可能一致。1、面向?qū)ο蠓椒▽W(xué)概述第1頁/共74頁概括地說,面向?qū)ο蠓椒ň哂邢率?個(gè)要點(diǎn):(1) 認(rèn)為客觀世界是由各種對象組成的,任何事物都是對象,復(fù)雜的對象可以由比較簡單的對象以某種方式組合而成。按照這種觀點(diǎn),可以認(rèn)為整個(gè)世界就是一個(gè)最復(fù)雜的對象。因此,面向?qū)ο蟮能浖到y(tǒng)是由對象組成的,軟件中的任何元素都是對象,復(fù)雜的軟件對象由比較簡單的對象組合而成。由此可見,面向?qū)ο蠓椒ㄓ脤?/p>

2、象分解取代了傳統(tǒng)方法的功能分解。第2頁/共74頁(2) 把所有對象都劃分成各種對象類(簡稱為類,class),每個(gè)對象類都定義了一組數(shù)據(jù)和一組方法。數(shù)據(jù)用于表示對象的靜態(tài)屬性,是對象的狀態(tài)信息。因此,每當(dāng)建立該對象類的一個(gè)新實(shí)例時(shí),就按照類中對數(shù)據(jù)的定義為這個(gè)新對象生成一組專用的數(shù)據(jù),以便描述該對象獨(dú)特的屬性值。類中定義的方法,是允許施加于該類對象上的操作,是該類所有對象共享的,并不需要為每個(gè)對象都復(fù)制操作的代碼。第3頁/共74頁(3) 按照子類(或稱為派生類)與父類(或稱為基類)的關(guān)系,把若干個(gè)對象類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)(也稱為類等級)。在這種層次結(jié)構(gòu)中,通常下層的派生類具有和上層的基類相

3、同的特性(包括數(shù)據(jù)和方法),這種現(xiàn)象稱為繼承(inheritance)。但是,如果在派生類中對某些特性又做了重新描述,則在派生類中的這些特性將以新描述為準(zhǔn),也就是說,低層的特性將屏蔽高層的同名特性。第4頁/共74頁(4) 對象彼此之間僅能通過傳遞消息互相聯(lián)系。對象與傳統(tǒng)的數(shù)據(jù)有本質(zhì)區(qū)別,它不是被動(dòng)地等待外界對它施加操作,相反,它是進(jìn)行處理的主體,必須發(fā)消息請求它執(zhí)行它的某個(gè)操作,處理它的私有數(shù)據(jù),而不能從外界直接對它的私有數(shù)據(jù)進(jìn)行操作。也就是說,一切局部于該對象的私有信息,都被封裝在該對象類的定義中,就好像裝在一個(gè)不透明的黑盒子中一樣,在外界是看不見的,更不能直接使用,這就是“封裝性”。第5頁

4、/共74頁1. 與人類習(xí)慣的思維方法一致 傳統(tǒng)的程序設(shè)計(jì)技術(shù)是面向過程的設(shè)計(jì)方法,這種方法以算法為核心,把數(shù)據(jù)和過程作為相互獨(dú)立的部分,數(shù)據(jù)代表問題空間中的客體,程序代碼則用于處理這些數(shù)據(jù)。 面向?qū)ο蠓椒▽W(xué)的優(yōu)點(diǎn)第6頁/共74頁2. 穩(wěn)定性好 傳統(tǒng)的軟件開發(fā)方法以算法為核心,開發(fā)過程基于功能分析和功能分解。用傳統(tǒng)方法所建立起來的軟件系統(tǒng)的結(jié)構(gòu)緊密依賴于系統(tǒng)所要完成的功能,當(dāng)功能需求發(fā)生變化時(shí)將引起軟件結(jié)構(gòu)的整體修改。事實(shí)上,用戶需求變化大部分是針對功能的,因此,這樣的軟件系統(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)品時(shí),組織開發(fā)人員的方法不恰當(dāng)往往是出現(xiàn)問題的主要原因。用面向?qū)ο蠓椒▽W(xué)開發(fā)軟件時(shí),構(gòu)成軟件系統(tǒng)的每個(gè)對象就像一個(gè)微型程序,有自己的數(shù)據(jù)、操作、功能和用途,因此,可以把一個(gè)大型軟件產(chǎn)品分解成一系列本質(zhì)上相互獨(dú)立的小產(chǎn)品來處理,這就不僅降低了開發(fā)的技術(shù)難度,而且也使得對開發(fā)工作的管理變得容易多了。這就是為什么對于大型軟件產(chǎn)品來說,面向?qū)ο蠓缎蛢?yōu)于結(jié)構(gòu)化范型的原因之一。第9頁/共74頁5. 可維護(hù)性好 用傳統(tǒng)方法和面向過程語言開發(fā)出來的軟件很難維護(hù),是長期困擾人們的一個(gè)嚴(yán)

6、重問題,是軟件危機(jī)的突出表現(xiàn)。第10頁/共74頁 在應(yīng)用領(lǐng)域中有意義的、與所要解決的問題有關(guān)系的任何事物都可以作為對象,它既可以是具體的物理實(shí)體的抽象,也可以是人為的概念,或者是任何有明確邊界和意義的東西。,對象是對問題域中某個(gè)實(shí)體的抽象,設(shè)立某個(gè)對象就反映了軟件系統(tǒng)具有保存有關(guān)它的信息并且與它進(jìn)行交互的能力。2、 面向?qū)ο蟮母拍?(1) 對象第11頁/共74頁由于客觀世界中的實(shí)體通常都既具有靜態(tài)的屬性,又具有動(dòng)態(tài)的行為,因此,面向?qū)ο蠓椒▽W(xué)中的對象是由描述該對象屬性的數(shù)據(jù)以及可以對這些數(shù)據(jù)施加的所有操作封裝在一起構(gòu)成的統(tǒng)一體。對象可以作的操作表示它的動(dòng)態(tài)行為,在面向?qū)ο蠓治龊兔嫦驅(qū)ο笤O(shè)計(jì)中,

7、通常把對象的操作稱為服務(wù)或方法。1. 對象的形象表示為有助于讀者理解對象的概念,下圖形象地描繪了具有3個(gè)操作的對象。第12頁/共74頁對象的形象表示第13頁/共74頁 一個(gè)對象很像一臺(tái)錄音機(jī)。當(dāng)在軟件中使用一個(gè)對象的時(shí)候,只能通過對象與外界的界面來操作它。對象與外界的界面也就是該對象向公眾開放的操作。使用對象向公眾開放的操作就好像使用錄音機(jī)的按鍵,只須知道該操作的名字(好像錄音機(jī)的按鍵名)和所需要的參數(shù)(提供附加信息或設(shè)置狀態(tài),根本無須知道實(shí)現(xiàn)這些操作的方法。事實(shí)上,實(shí)現(xiàn)對象操作的代碼和數(shù)據(jù)是隱藏在對象內(nèi)部的,一個(gè)對象好像是一個(gè)黑盒子,表示它內(nèi)部狀態(tài)的數(shù)據(jù)和實(shí)現(xiàn)各個(gè)操作的代碼及局部數(shù)據(jù),都被封

8、裝在這個(gè)黑盒子內(nèi)部,在外面是看不見的,更不能從外面去訪問或修改這些數(shù)據(jù)或代碼。第14頁/共74頁(2)類(class) 現(xiàn)實(shí)世界中存在的客觀事物有些是彼此相似的,例如,張三、李四、王五雖說每個(gè)人職業(yè)、性格、愛好、特長等等各有不同,但是,他們的基本特征是相似的,都是黃皮膚、黑頭發(fā)、黑眼睛,于是人們把他們統(tǒng)稱為“中國人”。人類習(xí)慣于把有相似特征的事物歸為一類,分類是人類認(rèn)識(shí)客觀世界的基本方法。第15頁/共74頁 在面向?qū)ο蟮能浖夹g(shù)中,“類”就是對具有相同數(shù)據(jù)和相同操作的一組相似對象的定義,也就是說,類是對具有相同屬性和行為的一個(gè)或多個(gè)對象的描述,通常在這種描述中也包括對怎樣創(chuàng)建該類的新對象的說明

9、。 以上先詳細(xì)地闡述了對象的定義,然后在此基礎(chǔ)上定義了類。也可以先定義類再定義對象,例如,可以像下面這樣定義類和對象: 類是支持繼承的抽象數(shù)據(jù)類型,而對象就是類的實(shí)例。第16頁/共74頁(3) 實(shí)例(instance) 實(shí)例就是由某個(gè)特定的類所描述的一個(gè)具體的對象。類是對具有相同屬性和行為的一組相似的對象的抽象,類在現(xiàn)實(shí)世界中并不能真正存在。實(shí)際上類是建立對象時(shí)使用的“樣板”,按照這個(gè)樣板所建立的一個(gè)個(gè)具體的對象,就是類的實(shí)際例子,通常稱為實(shí)例。當(dāng)使用“對象”這個(gè)術(shù)語時(shí),既可以指一個(gè)具體的對象,也可以泛指一般的對象,但是,當(dāng)使用“實(shí)例”這個(gè)術(shù)語時(shí),必然是指一個(gè)具體的對象。第17頁/共74頁(4

10、) 消息(message)消息就是要求某個(gè)對象執(zhí)行在定義它的那個(gè)類中所定義的某個(gè)操作的規(guī)格說明。通常,一個(gè)消息由下述3部分組成:接收消息的對象;消息選擇符(也稱為消息名);零個(gè)或多個(gè)變元。(5)方法(method)方法就是對象所能執(zhí)行的操作,也就是類中所定義的服務(wù)。方法描述了對象執(zhí)行操作的算法,響應(yīng)消息的方法。在C+語言中把方法稱為成員函數(shù)。第18頁/共74頁(6)屬性(attribute)屬性就是類中所定義的數(shù)據(jù),它是對客觀世界實(shí)體所具有的性質(zhì)的抽象。類的每個(gè)實(shí)例都有自己特有的屬性值。在C+語言中把屬性稱為數(shù)據(jù)成員(7)封裝(encapsulation)從字面上理解,所謂封裝就是把某個(gè)事物包

11、起來,使外界不知道該事物的具體內(nèi)容。把數(shù)據(jù)和實(shí)現(xiàn)操作的代碼集中起來放在對象內(nèi)部。一個(gè)對象好像是一個(gè)不透明的黑盒子,表示對象狀態(tài)的數(shù)據(jù)和實(shí)現(xiàn)操作的代碼與局部數(shù)據(jù),都被封裝在黑盒子里面。第19頁/共74頁封裝也就是信息隱藏,通過封裝對外界隱藏了對象的實(shí)現(xiàn)細(xì)節(jié)。對象類實(shí)質(zhì)上是抽象數(shù)據(jù)類型。類把數(shù)據(jù)說明和操作說明與數(shù)據(jù)表達(dá)和操作實(shí)現(xiàn)分離開了,使用者只需知道它的說明(值域及可對數(shù)據(jù)施加的操作),就可以使用它。7. 繼承(inheritance)廣義地說,繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們。在面向?qū)ο蟮能浖夹g(shù)中,繼承是子類自動(dòng)地共享基類中定義的數(shù)據(jù)和方法的機(jī)制。第20頁/共74頁實(shí)

12、現(xiàn)繼承機(jī)制的原理第21頁/共74頁當(dāng)一個(gè)類只允許有一個(gè)父類時(shí),也就是說,當(dāng)類等級為樹形結(jié)構(gòu)時(shí),類的繼承是單繼承;當(dāng)允許一個(gè)類有多個(gè)父類時(shí),類的繼承是多重繼承。多重繼承的類可以組合多個(gè)父類的性質(zhì)構(gòu)成所需要的性質(zhì),因此功能更強(qiáng)、使用更方便;但是,使用多重繼承時(shí)要注意避免二義性。繼承性使得相似的對象可以共享程序代碼和數(shù)據(jù)結(jié)構(gòu),從而大大減少了程序中的冗余信息。在程序執(zhí)行期間,對對象某一性質(zhì)的查找是從該對象類在類等級中所在的層次開始,沿類等級逐層向上進(jìn)行的,并把第一個(gè)被找到的性質(zhì)作為所要的性質(zhì)。因此,低層的性質(zhì)將屏蔽高層的同名性質(zhì)。第22頁/共74頁(9) 多態(tài)性(polymorphism) 多態(tài)性一詞

13、來源于希臘語,意思是“有許多形態(tài)”。在面向?qū)ο蟮能浖夹g(shù)中,多態(tài)性是指子類對象可以像父類對象那樣使用,同樣的消息既可以發(fā)送給父類對象也可以發(fā)送給子類對象。也就是說,在類等級的不同層次中可以共享(公用)一個(gè)行為(方法)的名字,然而不同層次中的每個(gè)類卻各自按自己的需要來實(shí)現(xiàn)這個(gè)行為。當(dāng)對象接收到發(fā)送給它的消息時(shí),根據(jù)該對象所屬于的類動(dòng)態(tài)選用在該類中定義的實(shí)現(xiàn)算法。第23頁/共74頁(10) 重載(overloading) 有兩種重載:函數(shù)重載是指在同一作用域內(nèi)的若干個(gè)參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字;運(yùn)算符重載是指同一個(gè)運(yùn)算符可以施加于不同類型的操作數(shù)上面。當(dāng)然,當(dāng)參數(shù)特征不同或被操作數(shù)的

14、類型不同時(shí),實(shí)現(xiàn)函數(shù)的算法或運(yùn)算符的語義是不相同的。第24頁/共74頁 為了更好地理解問題,人們常常采用建立問題模型的方法。所謂模型,就是為了理解事物而對事物作出的一種抽象,是對事物的一種無歧義的書面描述。通常,模型由一組圖示符號和組織這些符號的規(guī)則組成,利用它們來定義和描述問題域中的術(shù)語和概念。更進(jìn)一步講,模型是一種思考工具,利用這種工具可以把知識(shí)規(guī)范地表示出來。模型可以幫助我們思考問題、定義術(shù)語、在選擇術(shù)語時(shí)作出適當(dāng)?shù)募僭O(shè),并且可以幫助我們保持定義和假設(shè)的一致性。3、 面向?qū)ο蠼5?5頁/共74頁 一個(gè)典型的軟件系統(tǒng)組合了3方面內(nèi)容:它使用數(shù)據(jù)結(jié)構(gòu)(對象模型),執(zhí)行操作(動(dòng)態(tài)模型),并且

15、完成數(shù)據(jù)值的變化(功能模型)。用面向?qū)ο蠓椒ㄩ_發(fā)軟件,在任何情況下,對象模型始終都是最重要、最基本、最核心的。在整個(gè)開發(fā)過程中,3種模型一直都在發(fā)展、完善。在面向?qū)ο蠓治鲞^程中,構(gòu)造出完全獨(dú)立于實(shí)現(xiàn)的應(yīng)用域模型;在面向?qū)ο笤O(shè)計(jì)過程中,把求解域的結(jié)構(gòu)逐漸加入到模型中;在實(shí)現(xiàn)階段,把應(yīng)用域和求解域的結(jié)構(gòu)都編成程序代碼并進(jìn)行嚴(yán)格的測試驗(yàn)證。第26頁/共74頁 對象模型表示靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)的“數(shù)據(jù)”性質(zhì)。它是對模擬客觀世界實(shí)體的對象以及對象彼此間的關(guān)系的映射,描述了系統(tǒng)的靜態(tài)結(jié)構(gòu)。對象模型為建立動(dòng)態(tài)模型和功能模型,提供了實(shí)質(zhì)性的框架。4 、 對象模型第27頁/共74頁 在建立對象模型時(shí),我們的目標(biāo)

16、是從客觀世界中提煉出對具體應(yīng)用有價(jià)值的概念。為了建立對象模型,需要定義一組圖形符號,并且規(guī)定一組組織這些符號以表示特定語義的規(guī)則。也就是說,需要用適當(dāng)?shù)慕UZ言來表達(dá)模型,建模語言由記號(即模型中使用的符號)和使用記號的規(guī)則(語法、語義和語用)組成。第28頁/共74頁類圖描述類及類與類之間的靜態(tài)關(guān)系。類圖是一種靜態(tài)模型,它是創(chuàng)建其他UML圖的基礎(chǔ)。一個(gè)系統(tǒng)可以由多張類圖來描述,一個(gè)類也可以出現(xiàn)在幾張類圖中。定義類UML中類的圖形符號為長方形,用兩條橫線把長方形分成上、中、下3個(gè)區(qū)域(下面兩個(gè)區(qū)域可省略),3個(gè)區(qū)域分別放類的名字、屬性和服務(wù)。4.1 類圖的基本符號第29頁/共74頁 表示類的圖第

17、30頁/共74頁如前所述,類圖由類及類與類之間的關(guān)系組成。定義了類之后就可以定義類與類之間的各種關(guān)系了。類與類之間通常有關(guān)聯(lián)、泛化(繼承)、依賴和細(xì)化等4種關(guān)系。1. 關(guān)聯(lián)關(guān)聯(lián)表示兩個(gè)類的對象之間存在某種語義上的聯(lián)系。例如,作家使用計(jì)算機(jī),我們就認(rèn)為在作家和計(jì)算機(jī)之間存在某種語義連接,因此,在類圖中應(yīng)該在作家類和計(jì)算機(jī)類之間建立關(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)的圖示符號是連接兩個(gè)類之間的直線。通常,關(guān)聯(lián)是雙向的,可在一個(gè)方向上為關(guān)聯(lián)起一個(gè)名字,在另一個(gè)方向上起另一個(gè)名字(也可

18、不起名字)。為避免混淆,在名字前面(或后面)加一個(gè)表示關(guān)聯(lián)方向的黑三角。第32頁/共74頁 普通關(guān)聯(lián)示例第33頁/共74頁在表示關(guān)聯(lián)的直線兩端可以寫上重?cái)?shù)(multiplicity),它表示該類有多少個(gè)對象與對方的一個(gè)對象連接。重?cái)?shù)的表示方法通常有:01表示0到1個(gè)對象0*或*表示0到多個(gè)對象1+或1*表示1到多個(gè)對象115表示1到15個(gè)對象3表示3個(gè)對象如果圖中未明確標(biāo)出關(guān)聯(lián)的重?cái)?shù),則默認(rèn)重?cái)?shù)是1。第34頁/共74頁(2) 關(guān)聯(lián)的角色在任何關(guān)聯(lián)中都會(huì)涉及到參與此關(guān)聯(lián)的對象所扮演的角色(即起的作用),在某些情況下顯式標(biāo)明角色名有助于別人理解類圖。例如,下圖是一個(gè)遞歸關(guān)聯(lián)(即一個(gè)類與它本身有關(guān)聯(lián)

19、關(guān)系)的例子。一個(gè)人與另一個(gè)人結(jié)婚,必然一個(gè)人扮演丈夫的角色,另一個(gè)人扮演妻子的角色。如果沒有顯式標(biāo)出角色名,則意味著用類名作為角色名。第35頁/共74頁 關(guān)聯(lián)的角色第36頁/共74頁(3) 限定關(guān)聯(lián)限定關(guān)聯(lián)通常用在一對多或多對多的關(guān)聯(lián)關(guān)系中,可以把模型中的重?cái)?shù)從一對多變成一對一,或從多對多簡化成多對一。在類圖中把限定詞放在關(guān)聯(lián)關(guān)系末端的一個(gè)小方框內(nèi)。例如,某操作系統(tǒng)中一個(gè)目錄下有許多文件,一個(gè)文件僅屬于一個(gè)目錄,在一個(gè)目錄內(nèi)文件名確定了惟一一個(gè)文件。利用限定詞“文件名”表示了目錄與文件之間的關(guān)系,可見,利用限定詞把一對多關(guān)系簡化成了一對一關(guān)系。第37頁/共74頁 一個(gè)受限的關(guān)聯(lián)第38頁/共7

20、4頁限定提高了語義精確性,增強(qiáng)了查詢能力。限定的語法表明,文件名在其目錄內(nèi)是惟一的。因此,查找一個(gè)文件的方法就是,首先定下目錄,然后在該目錄內(nèi)查找指定的文件名。由于目錄加文件名可惟一地確定一個(gè)文件,因此,限定詞“文件名”應(yīng)該放在靠近目錄的那一端。(4) 關(guān)聯(lián)類為了說明關(guān)聯(lián)的性質(zhì)可能需要一些附加信息??梢砸胍粋€(gè)關(guān)聯(lián)類來記錄這些信息。關(guān)聯(lián)中的每個(gè)連接與關(guān)聯(lián)類的一個(gè)對象相聯(lián)系。關(guān)聯(lián)類通過一條虛線與關(guān)聯(lián)連接。第39頁/共74頁 例如,一個(gè)電梯系統(tǒng)的類模型,隊(duì)列就是電梯控制器類與電梯類的關(guān)聯(lián)關(guān)系上的關(guān)聯(lián)類。從圖中可以看出,一個(gè)電梯控制器控制著4臺(tái)電梯,這樣,控制器和電梯之間的實(shí)際連接就有4個(gè),每個(gè)連接

21、都對應(yīng)一個(gè)隊(duì)列(對象),每個(gè)隊(duì)列(對象)存儲(chǔ)著來自控制器和電梯內(nèi)部按鈕的請求服務(wù)信息。電梯控制器通過讀取隊(duì)列信息,選擇一個(gè)合適的電梯為乘客服務(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)系。在陳述需求時(shí)使用的“包含”、“組成”、“分為部分”等字句,往往意味著存在聚集關(guān)系。除了一般聚集之外,還有兩種特殊的聚集關(guān)系,分別是共享聚集和組合聚集。第42頁/共74頁(1) 共享聚集 如果在聚集關(guān)系中處于部分方的對象可同時(shí)參與多個(gè)處于整體方對象的構(gòu)成,則該聚集稱為共享聚集。例如,

22、一個(gè)課題組包含許多成員,每個(gè)成員又可以是另一個(gè)課題組的成員,則課題組和成員之間是共享聚集關(guān)系。一般聚集和共享聚集的圖示符號,都是在表示關(guān)聯(lián)關(guān)系的直線末端緊挨著整體類的地方畫一個(gè)空心菱形。第43頁/共74頁圖9.10 共享聚集示例第44頁/共74頁(2) 組合聚集 如果部分類完全隸屬于整體類,部分與整體共存,整體不存在了部分也會(huì)隨之消失(或失去存在價(jià)值了),則該聚集稱為組合聚集(簡稱為組成)。例如,在屏幕上打開一個(gè)窗口,它就由文本框、列表框、按鈕和菜單組成,一旦關(guān)閉了窗口,各個(gè)組成部分也同時(shí)消失,窗口和它的組成部分之間存在著組合聚集關(guān)系,組成關(guān)系用實(shí)心菱形表示。第45頁/共74頁圖9.11 組合

23、聚集示例第46頁/共74頁3. 泛化UML中的泛化關(guān)系就是通常所說的繼承關(guān)系,它是通用元素和具體元素之間的一種分類關(guān)系。具體元素完全擁有通用元素的信息,并且還可以附加一些其他信息。在UML中,用一端為空心三角形的連線表示泛化關(guān)系,三角形的頂角緊挨著通用元素。注意,泛化針對類型而不針對實(shí)例,一個(gè)類可以繼承另一個(gè)類,但一個(gè)對象不能繼承另一個(gè)對象。實(shí)際上,泛化關(guān)系指出在類與類之間存在“一般-特殊”關(guān)系。泛化可進(jìn)一步劃分成普通泛化和受限泛化。第47頁/共74頁(1) 普通泛化 需要特別說明的是,沒有具體對象的類稱為抽象類。抽象類通常作為父類,用于描述其他類(子類)的公共屬性和行為。圖示抽象類時(shí),在類名

24、下方附加一個(gè)標(biāo)記值abstract,如下圖所示。圖下方的兩個(gè)折角矩形是模型元素“筆記”的符號,其中的文字是注釋,分別說明兩個(gè)子類的操作drive的功能。第48頁/共74頁圖9.12 抽象類示例第49頁/共74頁(2) 受限泛化可以給泛化關(guān)系附加約束條件,以進(jìn)一步說明該泛化關(guān)系的使用方法或擴(kuò)充方法,這樣的泛化關(guān)系稱為受限泛化。多重繼承指的是,一個(gè)子類可以同時(shí)多次繼承同一個(gè)上層基類,例如下圖中的水陸兩用類繼承了兩次交通工具類。第50頁/共74頁4. 依賴和細(xì)化(1) 依賴關(guān)系依賴關(guān)系描述兩個(gè)模型元素(類、用例等)之間的語義連接關(guān)系: 其中一個(gè)模型元素是獨(dú)立的,另一個(gè)模型元素不是獨(dú)立的,它依賴于獨(dú)立

25、的模型元素,如果獨(dú)立的模型元素改變了,將影響依賴于它的模型元素。在UML的類圖中,用帶箭頭的虛線連接有依賴關(guān)系的兩個(gè)類,箭頭指向獨(dú)立的類。在虛線上可以帶一個(gè)版類標(biāo)簽,具體說明依賴的種類,例如,下圖表示一個(gè)友元依賴關(guān)系,該關(guān)系使得B類的操作可以使用A類中私有的或保護(hù)的成員。第51頁/共74頁友元依賴關(guān)系第52頁/共74頁(2) 細(xì)化關(guān)系 當(dāng)對同一個(gè)事物在不同抽象層次上描述時(shí),這些描述之間具有細(xì)化關(guān)系。假設(shè)兩個(gè)模型元素A和B描述同一個(gè)事物,它們的區(qū)別是抽象層次不同,如果B是在A的基礎(chǔ)上的更詳細(xì)的描述,則稱B細(xì)化了A,或稱A細(xì)化成了B。細(xì)化的圖示符號為由元素B指向元素A的、一端為空心三角形的虛線(注

26、意,不是實(shí)線)。第53頁/共74頁 細(xì)化關(guān)系示例第54頁/共74頁動(dòng)態(tài)模型表示瞬時(shí)的、行為化的系統(tǒng)的“控制”性質(zhì),它規(guī)定了對象模型中的對象的合法變化序列。一旦建立起對象模型之后,就需要考察對象的動(dòng)態(tài)行為。所有對象都具有自己的生命周期(或稱為運(yùn)行周期)。對一個(gè)對象來說,生命周期由許多階段組成,在每個(gè)特定階段中,都有適合該對象的一組運(yùn)行規(guī)律和行為規(guī)則,用以規(guī)范該對象的行為。生命周期中的階段也就是對象的狀態(tài)。5 、 動(dòng)態(tài)模型第55頁/共74頁所謂狀態(tài),是對對象屬性值的一種抽象。當(dāng)然,在定義狀態(tài)時(shí)應(yīng)該忽略那些不影響對象行為的屬性。各對象之間相互觸發(fā)(即作用)就形成了一系列的狀態(tài)變化。我們把一個(gè)觸發(fā)行為

27、稱作一個(gè)事件。對象對事件的響應(yīng),取決于接受該觸發(fā)的對象當(dāng)時(shí)所處的狀態(tài),響應(yīng)包括改變自己的狀態(tài)或者又形成一個(gè)新的觸發(fā)行為。狀態(tài)有持續(xù)性,它占用一段時(shí)間間隔。狀態(tài)與事件密不可分,一個(gè)事件分開兩個(gè)狀態(tài),一個(gè)狀態(tài)隔開兩個(gè)事件。事件表示時(shí)刻,狀態(tài)代表時(shí)間間隔。第56頁/共74頁通常,用UML提供的狀態(tài)圖來描繪對象的狀態(tài)、觸發(fā)狀態(tài)轉(zhuǎn)換的事件以及對象的行為(對事件的響應(yīng))。每個(gè)類的動(dòng)態(tài)行為用一張狀態(tài)圖來描繪,各個(gè)類的狀態(tài)圖通過共享事件合并起來,從而構(gòu)成系統(tǒng)的動(dòng)態(tài)模型。也就是說,動(dòng)態(tài)模型是基于事件共享而互相關(guān)聯(lián)的一組狀態(tài)圖的集合。第57頁/共74頁功能模型表示變化的系統(tǒng)的“功能”性質(zhì),它指明了系統(tǒng)應(yīng)該“做什么

28、”,因此更直接地反映了用戶對目標(biāo)系統(tǒng)的需求。通常,功能模型由一組數(shù)據(jù)流圖組成。在面向?qū)ο蠓椒▽W(xué)中,數(shù)據(jù)流圖遠(yuǎn)不如在結(jié)構(gòu)分析、設(shè)計(jì)方法中那樣重要。一般說來,與對象模型和動(dòng)態(tài)模型比較起來,數(shù)據(jù)流圖并沒有增加新的信息,但是,建立功能模型有助于軟件開發(fā)人員更深入地理解問題域,改進(jìn)和完善自己的設(shè)計(jì)。因此,不能完全忽視功能模型的作用。6 、 功能模型第58頁/共74頁UML提供的用例圖也是進(jìn)行需求分析和建立功能模型的強(qiáng)有力工具。在UML中把用用例圖建立起來的系統(tǒng)模型稱為用例模型。用例模型描述的是外部行為者(actor)所理解的系統(tǒng)功能。用例模型的建立是系統(tǒng)開發(fā)者和用戶反復(fù)討論的結(jié)果,它描述了開發(fā)者和用戶對

29、需求規(guī)格所達(dá)成的共識(shí)。第59頁/共74頁一幅用例圖包含的模型元素有系統(tǒng)、行為者、用例及用例之間的關(guān)系。1. 系統(tǒng)系統(tǒng)被看作是一個(gè)提供用例的黑盒子,內(nèi)部如何工作、用例如何實(shí)現(xiàn),這些對于建立用例模型來說都是不重要的。代表系統(tǒng)的方框的邊線表示系統(tǒng)的邊界,用于劃定系統(tǒng)的功能范圍,定義了系統(tǒng)所具有的功能。描述該系統(tǒng)功能的用例置于方框內(nèi),代表外部實(shí)體的行為者置于方框外。6.1 用例圖第60頁/共74頁自動(dòng)售貨機(jī)系統(tǒng)用例圖第61頁/共74頁2. 用例一個(gè)用例是可以被行為者感受到的、系統(tǒng)的一個(gè)完整的功能。在UML中把用例定義成系統(tǒng)完成的一系列動(dòng)作,動(dòng)作的結(jié)果能被特定的行為者察覺到。這些動(dòng)作除了完成系統(tǒng)內(nèi)部的計(jì)

30、算與工作外,還包括與一些行為者的通信。用例通過關(guān)聯(lián)與行為者連接,關(guān)聯(lián)指出一個(gè)用例與哪些行為者交互,這種交互是雙向的。用例具有下述特征:(1) 用例代表某些用戶可見的功能,實(shí)現(xiàn)一個(gè)具體的用戶目標(biāo);第62頁/共74頁(2) 用例總是被行為者啟動(dòng)的,并向行為者提供可識(shí)別的值;(3) 用例必須是完整的。注意,用例是一個(gè)類,它代表一類功能而不是使用該功能的某個(gè)具體實(shí)例。用例的實(shí)例是系統(tǒng)的一種實(shí)際使用方法,通常把用例的實(shí)例稱為腳本。腳本是系統(tǒng)的一次具體執(zhí)行過程,例如,在自動(dòng)售貨機(jī)系統(tǒng)中,張三投入硬幣購買礦泉水,系統(tǒng)收到錢后把礦泉水送出來,上述過程就是一個(gè)腳本;李四投幣買可樂,但是可樂已賣完了,于是系統(tǒng)給出

31、提示信息并把錢退還給李四,這個(gè)過程是另一個(gè)腳本。第63頁/共74頁3. 行為者行為者是指與系統(tǒng)交互的人或其他系統(tǒng),它代表外部實(shí)體。使用用例并且與系統(tǒng)交互的任何人或物都是行為者。行為者代表一種角色,而不是某個(gè)具體的人或物。事實(shí)上,一個(gè)具體的人可以充當(dāng)多種不同角色。第64頁/共74頁在用例圖中用直線連接行為者和用例,表示兩者之間交換信息,稱為通信聯(lián)系。行為者觸發(fā)(激活)用例,并與用例交換信息。單個(gè)行為者可與多個(gè)用例聯(lián)系;反之,一個(gè)用例也可與多個(gè)行為者聯(lián)系。對于同一個(gè)用例而言,不同行為者起的作用也不同??梢园研袨檎叻殖芍餍袨檎吆透毙袨檎撸€可分成主動(dòng)行為者和被動(dòng)行為者。實(shí)踐表明,行為者對確定用例是非

32、常有用的。面對一個(gè)大型、復(fù)雜的系統(tǒng),要列出用例清單往往很困難,可以先列出行為者清單,再針對每個(gè)行為者列出它的用例。這樣做可以比較容易地建立起用例模型。第65頁/共74頁4. 用例之間的關(guān)系UML用例之間主要有擴(kuò)展和使用兩種關(guān)系,它們是泛化關(guān)系的兩種不同形式。(1) 擴(kuò)展關(guān)系向一個(gè)用例中添加一些動(dòng)作后構(gòu)成了另一個(gè)用例,這兩個(gè)用例之間的關(guān)系就是擴(kuò)展關(guān)系,后者繼承前者的一些行為,通常把后者稱為擴(kuò)展用例。例如,在自動(dòng)售貨機(jī)系統(tǒng)中,“售貨”是一個(gè)基本的用例,如果顧客購買罐裝飲料,售貨功能完成得很順利,但是,如果顧客要購買用紙杯裝的散裝飲料,則不能執(zhí)行該用例提供的常規(guī)動(dòng)作,而要做些改動(dòng)。第66頁/共74頁我們可以修改售貨用例,使之既能提供售罐裝飲料的常規(guī)動(dòng)作又能提供售散裝飲料的非常規(guī)動(dòng)作,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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

提交評論