面向軟件工程對象方法學(xué).ppt_第1頁
面向軟件工程對象方法學(xué).ppt_第2頁
面向軟件工程對象方法學(xué).ppt_第3頁
面向軟件工程對象方法學(xué).ppt_第4頁
面向軟件工程對象方法學(xué).ppt_第5頁
已閱讀5頁,還剩53頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、軟件工程,第九章 面向?qū)ο蠓椒▽W(xué)引論,2,引言,話說三國時(shí)期,曹操帶領(lǐng)百萬大軍攻打東吳,大軍在長江赤壁駐扎,軍船連成一片,眼看就要滅掉東吳,統(tǒng)一天下,曹操大悅,于是大宴眾文武,在酒席間,曹操詩性大發(fā),不覺吟道:“喝酒唱歌,人生真爽?!?。眾文武齊呼:“丞相好詩!”于是一臣子速命印刷工匠刻版印刷,以便流傳天下。,3,喝酒唱歌 人生真爽,曹操感覺不妥:“喝與唱,此話過俗,應(yīng)改為對酒當(dāng)歌,喝酒當(dāng)歌 人生真爽,唱當(dāng),曹操細(xì)細(xì)一品,覺得還是不好:“人生真爽太過直接,應(yīng)改問語才夠意境,對酒當(dāng)歌,人生幾何?!工匠聽后當(dāng)即暈倒,由于所有字刻在一塊石碑上,因此修改一個(gè)字也要從新雕刻,費(fèi)時(shí)費(fèi)力。,4,把每個(gè)字做一個(gè)

2、對象,只需更改四個(gè)字就可,對酒當(dāng)歌 人生幾何,只需更改要改之字,此為可維護(hù); 這些字并非用完這次就無用,在今后的印刷中可重復(fù)使用,此乃可復(fù)用; 此詩若要加字,只需另刻字加入即可,此稱可擴(kuò)展; 字的排列橫豎均可,此是靈活性好。 面向?qū)ο蠓椒ㄍㄟ^封裝、繼承、多態(tài)把程序的耦合度降低,使程序更加靈活、易修改、易復(fù)用。,5,第九章 面向?qū)ο蠓椒▽W(xué)引論,1 面向?qū)ο蠓椒▽W(xué)概述 2 面向?qū)ο蟾拍?3 面向?qū)ο蠼?4 對象模型 5 動(dòng)態(tài)模型 6 功能模型 7 三種模型之間的關(guān)系,6,學(xué)習(xí)重點(diǎn)和難點(diǎn),理解面向?qū)ο蠹夹g(shù)中的基本思想、概念和原理等;理解面向?qū)ο蠼⒌娜N模型的功能和相互關(guān)系。,7,9 . 1 面向

3、對象方法學(xué)概述,軟件工程發(fā)展的兩個(gè)重要階段 傳統(tǒng)軟件工程 面向?qū)ο筌浖墓こ?8,傳統(tǒng)軟件工程,以面向過程的結(jié)構(gòu)化程序設(shè)計(jì)為基礎(chǔ); 遵循“程序=數(shù)據(jù)結(jié)構(gòu)+算法”的思路; 由“追求技巧與效率”到“清晰第一,效率第二” 缺點(diǎn): 不太適應(yīng)規(guī)模大、特別復(fù)雜的項(xiàng)目; 難以解決軟件重用的問題; 難以適應(yīng)需求的變化; 難以徹底解決維護(hù)問題。,9,面向?qū)ο筌浖こ?按人類習(xí)慣的思維方法,以現(xiàn)實(shí)世界中客觀存在的事物(即對象)為中心來思考和認(rèn)識問題。 采用的思想方法與原則:抽象、分類、繼承、聚合、封裝等。 以易于理解的方式表達(dá)軟件系統(tǒng),建立問題域模型,使設(shè)計(jì)出的軟件盡可能直接地描述現(xiàn)實(shí)世界,具有更好的可維護(hù)性,1

4、0,軟件工程學(xué)家Codd 和Yourdon認(rèn)為:,面向?qū)ο髮ο箢惱^承通信 如果一個(gè)軟件系統(tǒng)采用這些概念來建立模型并予以實(shí)現(xiàn),那么它就是面向?qū)ο蟮摹?11,面向?qū)ο蠹夹g(shù)發(fā)展概述,初始階段:上世紀(jì) 60 年代,挪威奧斯陸大學(xué)和挪威計(jì)算中心開發(fā)的 Simula67 的語言; 70 年代中期, Xerox 研究中心開發(fā)的 Smallta Ik 語言,具備了面向?qū)ο笳Z言的各種特征。 發(fā)展階段:涌現(xiàn)大批面向?qū)ο缶幊陶Z言(OOPL )。如 C +、 objective-C 、 ob j ect Pascal 、 Eiffel 、 Actor 等。 成熟階段:面向?qū)ο蠓治觯∣OA )和面向?qū)ο笤O(shè)計(jì)( OOD

5、)的研究。出現(xiàn)各種著名的面向?qū)ο蠓治鲈O(shè)計(jì)的方法,如: Coad/ Yourdon 的方法、 Booch 的方法、 OMT方法、 wirtf-Brock 的 RDD 方法、 Jacobson 的 OOSE 方法 等。,12,面向?qū)ο蠹夹g(shù)的基本觀點(diǎn), 任何客觀的事物或?qū)嶓w都是對象。對象組成客觀世界,復(fù)雜的對象可以由簡單的對象組成。 具有相同數(shù)據(jù)和操作的對象可以歸并為一個(gè)類(class ) ,對象是對象類的一個(gè)實(shí)例。 類可以派生出子類,子類繼承父類的全部特性(數(shù)據(jù)和操作),又可以有自己的新特性。子類與父類形成類的層次結(jié)構(gòu)。 對象之間通過消息傳遞相互聯(lián)系。,13,面向?qū)ο蠓椒▽W(xué)的優(yōu)點(diǎn),1 、與人類習(xí)慣

6、的思維方法一致 2 、穩(wěn)定性好 3 、可重用性好 4 、較易開發(fā)大型軟件產(chǎn)品 5 、可維護(hù)性好,14,傳統(tǒng)的開發(fā)方法與面向?qū)ο蟮拈_發(fā)方法比較,15,9 . 2 面向?qū)ο蟮母拍?9 . 2 . 1 對象( objoct ) 在現(xiàn)實(shí)世界中有意義的、與所要解決的問題有關(guān)系的任何事物都可以作為對象,包括具體的物理實(shí)體的抽象、人為的概念、任何有明確邊界和意義的東西。 如:一名職工、一本圖書、貸款、生產(chǎn)計(jì)劃、一場演出等。 對象既有靜態(tài)的屬性,又有動(dòng)態(tài)的行為(操作)。,16,從軟件開發(fā)的角度定義對象 系統(tǒng)中用來描述客觀事物的實(shí)體,是構(gòu)成系統(tǒng)的基本單位。 由一組屬性和相關(guān)操作組成的服務(wù)組成。這是對象的兩個(gè)基本

7、要素: 屬性:用來描述對象靜態(tài)特征的一個(gè)數(shù)據(jù)項(xiàng); 服務(wù):用來描述對象動(dòng)態(tài)特征(行為)的一個(gè)操作序列。 對象的屬性和所有操作封裝在一起,構(gòu)成一個(gè)統(tǒng)一體。 屬性一般只能通過執(zhí)行對象的操作來改變。,17,表示內(nèi)部狀態(tài)的數(shù)據(jù)、實(shí)現(xiàn)各操作的代碼及局部數(shù)據(jù),被隱藏,無法從外面看見、訪問或修改; 使用對象的時(shí)候,只能通過對象與外界的界面來操作; 操作時(shí),只需知道該操作的名字和所需要的參數(shù),不需要知道這些操作是如何實(shí)現(xiàn)的; 簡單、方便,安全性和可靠性高。,18,9.2.2 其他概念,1、類( Class ) 具有相同屬性和服務(wù)的一組對象的集合,它為屬于該類的全部對象提供了統(tǒng)一的抽象描述。 “類”好比是一個(gè)對象

8、模板,用它可以產(chǎn)生多個(gè)對象。,類的描述,19,例:,類(class):是對象的“類型”(type) 一般用關(guān)鍵字class來表示。 Class CPeople long ID; string name; void DoSomething(); 對象是類的實(shí)例:CPeople Tom,20,2、實(shí)例(instance),實(shí)例是某個(gè)特定類所描述的一個(gè)具休對象。 如:“張三”“李四”是類“學(xué)生”的實(shí)例。 對象:可以是一個(gè)具體的對象,也可以泛指一般的對象。 實(shí)例:必然是指一個(gè)在客觀世界中存在的具體對象。,21,3、消息(message),對象之間通信的手段,是一個(gè)對象要求另一對象執(zhí)行類中定義的某個(gè)操作

9、的規(guī)格說明。 通常一個(gè)消息由三部分組成: 接收消息的對象 消息標(biāo)識符(即消息名) 零個(gè)或多個(gè)變元 例如: MyCircle.Show (Green ) MyCircle是接收消息的對象的名字, Show 是消息名,Green是消息的變元。,22,4 、方法( method ),對象所能執(zhí)行的操作稱為方法,也就是類中所定義的服務(wù)。方法描述了對象執(zhí)行的功能、響應(yīng)消息的操作。 在 C + +中稱為成員函數(shù)。,23,5 、屬性( attribute),屬性是對客觀世界實(shí)體所具有的性質(zhì)的抽象,是類中所定義的數(shù)據(jù)。 如:學(xué)生類屬性有姓名、年齡、性別等。 不同對象的同一屬性可以具有相同或不同的屬性值。 如:

10、張三的年齡為19 ,李四 的年齡為20。,24,6 、封裝(encapsulation ),封裝是把對象的屬性和實(shí)現(xiàn)操作的代碼結(jié)合成一個(gè)獨(dú)立的系統(tǒng)單位,并盡可能隱藏對象的內(nèi)部細(xì)節(jié),對象以外的部分不能直接作用于對象的內(nèi)部數(shù)據(jù)(屬性),對象間的通信只能通過明確的消息來進(jìn)行。,25,7、繼承( inheritance),在現(xiàn)存類定義的基礎(chǔ)上,建立新定義類的技術(shù)。 新類的定義可以是現(xiàn)存類所聲明的數(shù)據(jù)、定義與新類所增加的聲明的組合。 新類復(fù)用現(xiàn)存類的定義,而不要求修改現(xiàn)存類。 現(xiàn)存類可當(dāng)作父類(泛化類、基類或超類)來引用,則新類相應(yīng)地可當(dāng)作子類(特化類、子女類或派生類)來引用。,26,實(shí)現(xiàn)繼承機(jī)制的原理

11、,27,父類、子類、超類 父類:一個(gè)類的上層是父類。 子類:一個(gè)類的下層是子類。 超類:若 C2 是 C1 的子類, C3 是 C2 的子類,則 C1 是 C3的超類。,28,單繼承與多繼承,單繼承:一個(gè)類只允許有一個(gè)父類,即類等級為樹形結(jié)構(gòu)。 多繼承:一個(gè)類允許有多個(gè)父類 繼承的傳遞性: 如果類 C 繼承類 B , 類 B 繼承類 A ,則類 C 繼承類 A 。,29,繼承性的優(yōu)點(diǎn),使得相似的對象可以共享程序代碼和數(shù)據(jù)結(jié)構(gòu),大大減少程序中的冗余信息。 便于軟件修改維護(hù)。 用戶在開發(fā)新系統(tǒng)時(shí)不必從零開始,可以繼承原有相似功能或者從類庫中選取需要的類,再派生新類。,30,8 、多態(tài)性(polym

12、orphism ),指對象根據(jù)所接受的消息而做出動(dòng)作,同樣的消息為不同的對象接受時(shí)可導(dǎo)致完全不同的行動(dòng)。,31,9 、重載( overloading),包括: 函數(shù)重載:在同一作用域,若干個(gè)參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字; 運(yùn)算符重載:同一個(gè)運(yùn)算符可以施加于不同類型的操作數(shù)上面。,32,9 .3 面向?qū)ο蠼?模型:是一組圖示符號和組織這些符號的規(guī)則,利用它們來定義和描述問題域中的術(shù)語和概念。 面向?qū)ο竽P偷慕M成:,描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu),描述系統(tǒng)控制結(jié)構(gòu),描述系統(tǒng)功能,33,一般的建模順序:, 對象模型(object model ) :定義實(shí)體,描述系統(tǒng)數(shù)據(jù),定義“對誰做” 動(dòng)態(tài)模型(

13、dynamic model ) :描述系統(tǒng)控制結(jié)構(gòu),規(guī)定“何時(shí)做” 功能模型( functional model ) :描述系統(tǒng)功能,指明系統(tǒng)應(yīng)“做什么”,34,幾種著名的面向?qū)ο蠓椒?Booch 方法( 1991 ) Coad 一 Yourdon 方法( 1991 ) Rumbaugh 方法(簡稱 OMT ) ( object Modeling Technology , 1991 ) Jacobson 方法(簡稱 OOSE , 1992 ) 由 Rumbaugh 、 Booch 、 Jacobson 提出的統(tǒng)一建模語言 ( 簡稱 UML ) ( Unify Modeling Language

14、 , 1994 ),35,UML 統(tǒng)一建模語言,一種可視化建模語言,能描述開發(fā)需要的各種視圖,并以此為基礎(chǔ)組建系統(tǒng)。 其發(fā)展過程如右圖: 常用的工具: Rational Rose,36,面向?qū)ο蟮能浖_發(fā)模型,對象模型: 描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的對象模型; 動(dòng)態(tài)模型:描述系統(tǒng)控制結(jié)構(gòu); 功能模型:描述系統(tǒng)功能。 一個(gè)典型的軟件系統(tǒng)使用數(shù)據(jù)結(jié)構(gòu)(對象模型),執(zhí)行操作(動(dòng)態(tài)模型),并且完成數(shù)據(jù)值的變化(功能模型)。,37,9 . 4 對象模型,描述系統(tǒng)內(nèi)部對象的靜態(tài)結(jié)構(gòu),包括對象本身的定義、對象的屬性和操作、以及對象與其它對象之間的關(guān)系。 UML 中,對象模型通常由“類圖”組成。,38,9 . 4 .

15、1 類圖的基本符號,39,9 . 4 . 2 表示關(guān)系的符號,類和類之間的聯(lián)系稱為“關(guān)系”;關(guān)系可以是物理的,也可以是邏輯的。 通常分為:關(guān)聯(lián)、范化、依賴和細(xì)化四種。,40,1 、關(guān)聯(lián),表示:在類之間畫一條連線。 角色:關(guān)聯(lián)的端點(diǎn),說明類在關(guān)聯(lián)中的作用和角色。,41,關(guān)聯(lián)的重?cái)?shù),表示類中有多少個(gè)對象與關(guān)聯(lián)類中的一個(gè)對象相關(guān)。常見的描述有: 未標(biāo)明,默認(rèn)為 1 ; 0 . 1 ; 0 . *或 * ; 0+ 或1 . ; 1 . 5 ; 3,42,限定關(guān)聯(lián),對關(guān)聯(lián)的含義做某種約束。通常用在一對多或多對多的關(guān)聯(lián)關(guān)系中,把模型中的重?cái)?shù)從一對多(或多對多)變成一對一(或多對一),文件在目錄內(nèi)是唯一的,

16、43,關(guān)聯(lián)的屬性,進(jìn)一步說明對象間關(guān)聯(lián)的性質(zhì),可引入一個(gè)關(guān)聯(lián)類來記錄這些附加信息。關(guān)聯(lián)類通過一條虛線與關(guān)聯(lián)連接。,44,45,類圖,46,2、聚合,一種“整體與成員”的關(guān)系。表示整體類的那一端增加一個(gè)菱形框。 包括共享聚合和組合聚合。如:,47,48,4 、依賴和細(xì)化,依賴:一個(gè)模型元素是獨(dú)立的,另一個(gè)依賴于這個(gè)獨(dú)立的模型元素,若獨(dú)立元素改變,將影響此元素。 如成績依賴課程:,49,細(xì)化:同一事物在不同抽象層次上描述時(shí),這些描述之間具有細(xì)化關(guān)系。,B在A的基礎(chǔ)上更詳細(xì)的描述,50,9 . 5 動(dòng)態(tài)模型,狀態(tài)圖描述對象可能的狀態(tài)及其轉(zhuǎn)換,關(guān)心對象在某過程中的經(jīng)歷。 生命周期中的階段也就是對象的狀

17、態(tài)。 一個(gè)觸發(fā)行為稱為一個(gè)事件. 狀態(tài)有持續(xù)性,它占用一段時(shí)間間隔。 事件表示時(shí)刻,狀態(tài)代表時(shí)間間隔。 通過狀態(tài)圖來描繪對象的狀態(tài)、觸發(fā)狀態(tài)轉(zhuǎn)換的事件以及對象的行為。,51,建模實(shí)例:描述客房狀態(tài)的狀態(tài)圖,52,9 . 6 功能模型,功能模型表示變化的系統(tǒng)的“功能”性質(zhì),它指明了系統(tǒng)應(yīng)該“做什么”,因此更直接地反映了用戶對目標(biāo)系統(tǒng)的需求。 UML提供的用例圖也是進(jìn)行需求分析和建立功能模型的強(qiáng)有力工具。 在UML中把用用例圖建立起來的系統(tǒng)模型稱為用例模型。 用例模型描述的是外部行為者(actor)所理解的系統(tǒng)功能。是其他視圖的核心和基礎(chǔ)。,53,圖9.16自動(dòng)售貨機(jī)系統(tǒng)用例圖,方框代表系統(tǒng),橢圓代表用例,行為者,關(guān)系,54,建模實(shí)例:某金融貿(mào)易系統(tǒng)用例圖 (UML ),55,建模實(shí)例:用例圖舉例( UML ),56,用例之間的關(guān)系,UML用例主要有擴(kuò)

溫馨提示

  • 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

提交評論