第九章面向?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頁,還剩50頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、軟件工程,第九章 面向?qū)ο蠓椒▽W(xué)引論,2,第九章 面向?qū)ο蠓椒▽W(xué)引論,9 . 1 面向?qū)ο蠓椒▽W(xué)概述 9 . 2 面向?qū)ο蟾拍?9 . 3 面向?qū)ο蠼?9 . 4 對象模型 9 . 5 動態(tài)模型 9 . 6 功能模型 9 . 7 三種模型之間的關(guān)系,3,學(xué)習(xí)重點和難點,理解面向?qū)ο蠹夹g(shù)中的基本思想、概念和原理等;理解面向?qū)ο蠼⒌娜N模型的功能和相互關(guān)系。,4,9 . 1 面向?qū)ο蠓椒▽W(xué)概述,軟件工程發(fā)展的兩個重要階段 傳統(tǒng)軟件工程 面向?qū)ο筌浖墓こ?5,傳統(tǒng)軟件工程,以面向過程的結(jié)構(gòu)化程序設(shè)計為基礎(chǔ); 遵循“程序=數(shù)據(jù)結(jié)構(gòu)+算法”的思路; 由“追求技巧與效率”到“清晰第一,效率第二” 缺

2、點: 不太適應(yīng)規(guī)模大、特別復(fù)雜的項目; 難以解決軟件重用的問題; 難以適應(yīng)需求的變化; 難以徹底解決維護問題。,6,面向?qū)ο筌浖こ?按人類習(xí)慣的思維方法,以現(xiàn)實世界中客觀存在的事物(即對象)為中心來思考和認(rèn)識問題。 采用的思想方法與原則:抽象、分類、繼承、聚合、封裝等。 以易于理解的方式表達(dá)軟件系統(tǒng),建立問題域模型,使設(shè)計出的軟件盡可能直接地描述現(xiàn)實世界,具有更好的可維護性,7,軟件工程學(xué)家Codd 和Yourdon認(rèn)為:,面向?qū)ο髮ο箢惱^承通信 如果一個軟件系統(tǒng)采用這些概念來建立模型并予以實現(xiàn),那么它就是面向?qū)ο蟮摹?8,面向?qū)ο蠹夹g(shù)發(fā)展概述,初始階段:上世紀(jì) 60 年代,挪威奧斯陸大學(xué)和

3、挪威計算中心開發(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è)計( OOD )的研究。出現(xiàn)各種著名的面向?qū)ο蠓治鲈O(shè)計的方法,如: Coad/ Yourdon 的方法、 Booch 的方法、 OMT方法、 wirtf-Brock 的 RDD 方法、 Jacobson 的 OOSE 方法 等。,9,面

4、向?qū)ο蠹夹g(shù)的基本觀點, 任何客觀的事物或?qū)嶓w都是對象。對象組成客觀世界,復(fù)雜的對象可以由簡單的對象組成。 具有相同數(shù)據(jù)和操作的對象可以歸并為一個類(class ) ,對象是對象類的一個實例。 類可以派生出子類,子類繼承父類的全部特性(數(shù)據(jù)和操作),又可以有自己的新特性。子類與父類形成類的層次結(jié)構(gòu)。 對象之間通過消息傳遞相互聯(lián)系。,10,面向?qū)ο蠓椒▽W(xué)的優(yōu)點,詳見教材 P205 一 P208 頁 1 、與人類習(xí)慣的思維方法一致 2 、穩(wěn)定性好 3 、可重用性好 4 、較易開發(fā)大型軟件產(chǎn)品 5 、可維護性好,11,傳統(tǒng)的開發(fā)方法與面向?qū)ο蟮拈_發(fā)方法比較,12,9 . 2 面向?qū)ο蟮母拍?9 . 2

5、 . 1 對象( objoct ) 在現(xiàn)實世界中有意義的、與所要解決的問題有關(guān)系的任何事物都可以作為對象,包括具體的物理實體的抽象、人為的概念、任何有明確邊界和意義的東西。 如:一名職工、一本圖書、貸款、生產(chǎn)計劃、一場演出等。 對象既有靜態(tài)的屬性,又有動態(tài)的行為(操作)。,13,從軟件開發(fā)的角度定義對象 系統(tǒng)中用來描述客觀事物的實體,是構(gòu)成系統(tǒng)的基本單位。 由一組屬性和相關(guān)操作組成的服務(wù)組成。這是對象的兩個基本要素: 屬性:用來描述對象靜態(tài)特征的一個數(shù)據(jù)項; 服務(wù):用來描述對象動態(tài)特征(行為)的一個操作序列。 對象的屬性和所有操作封裝在一起,構(gòu)成一個統(tǒng)一體。 屬性一般只能通過執(zhí)行對象的操作來改

6、變。,14,表示內(nèi)部狀態(tài)的數(shù)據(jù)、實現(xiàn)各操作的代碼及局部數(shù)據(jù),被隱藏,無法從外面看見、訪問或修改; 使用對象的時候,只能通過對象與外界的界面來操作; 操作時,只需知道該操作的名字和所需要的參數(shù),不需要知道這些操作是如何實現(xiàn)的; 簡單、方便,安全性和可靠性高。,15,9.2.2 其他概念,1、類( Class ) 具有相同屬性和服務(wù)的一組對象的集合,它為屬于該類的全部對象提供了統(tǒng)一的抽象描述。 “類”好比是一個對象模板,用它可以產(chǎn)生多個對象。,類的描述,16,例:,類(class):是對象的“類型”(type) 一般用關(guān)鍵字class來表示。 Class CPeople long ID; stri

7、ng name; void DoSomething(); 對象是類的實例:CPeople Tom,17,2、實例(instance),實例是某個特定類所描述的一個具休對象。 如:“張三”“李四”是類“學(xué)生”的實例。 對象:可以是一個具體的對象,也可以泛指一般的對象。 實例:必然是指一個在客觀世界中存在的具體對象。,18,3、消息(message),對象之間通信的手段,是一個對象要求另一對象執(zhí)行類中定義的某個操作的規(guī)格說明。 通常一個消息由三部分組成: 接收消息的對象 消息標(biāo)識符(即消息名) 零個或多個變元 例如: MyCircle.Show (Green ) MyCircle是接收消息的對象的

8、名字, Show 是消息名,Green是消息的變元。,19,4 、方法( method ),對象所能執(zhí)行的操作稱為方法,也就是類中所定義的服務(wù)。方法描述了對象執(zhí)行的功能、響應(yīng)消息的操作。 在 C + +中稱為成員函數(shù)。,20,5 、屬性( attribute),屬性是對客觀世界實體所具有的性質(zhì)的抽象,是類中所定義的數(shù)據(jù)。 如:學(xué)生類屬性有姓名、年齡、性別等。 不同對象的同一屬性可以具有相同或不同的屬性值。 如:張三的年齡為19 ,李四 的年齡為20。,21,6 、封裝(encapsulation ),封裝是把對象的屬性和實現(xiàn)操作的代碼結(jié)合成一個獨立的系統(tǒng)單位,并盡可能隱藏對象的內(nèi)部細(xì)節(jié),對象以

9、外的部分不能直接作用于對象的內(nèi)部數(shù)據(jù)(屬性),對象間的通信只能通過明確的消息來進行。,22,7、繼承( inheritance),在現(xiàn)存類定義的基礎(chǔ)上,建立新定義類的技術(shù)。 新類的定義可以是現(xiàn)存類所聲明的數(shù)據(jù)、定義與新類所增加的聲明的組合。 新類復(fù)用現(xiàn)存類的定義,而不要求修改現(xiàn)存類。 現(xiàn)存類可當(dāng)作父類(泛化類、基類或超類)來引用,則新類相應(yīng)地可當(dāng)作子類(特化類、子女類或派生類)來引用。,23,實現(xiàn)繼承機制的原理,24,父類、子類、超類 父類:一個類的上層是父類。 子類:一個類的下層是子類。 超類:若 C2 是 C1 的子類, C3 是 C2 的子類,則 C1 是 C3的超類。,25,單繼承與多

10、繼承,單繼承:一個類只允許有一個父類,即類等級為樹形結(jié)構(gòu)。 多繼承:一個類允許有多個父類 繼承的傳遞性: 如果類 C 繼承類 B , 類 B 繼承類 A ,則類 C 繼承類 A 。,26,繼承性的優(yōu)點,使得相似的對象可以共享程序代碼和數(shù)據(jù)結(jié)構(gòu),大大減少程序中的冗余信息。 便于軟件修改維護。 用戶在開發(fā)新系統(tǒng)時不必從零開始,可以繼承原有相似功能或者從類庫中選取需要的類,再派生新類。,27,8 、多態(tài)性(polymorphism ),指對象根據(jù)所接受的消息而做出動作,同樣的消息為不同的對象接受時可導(dǎo)致完全不同的行動。,28,9 、重載( overloading),包括: 函數(shù)重載:在同一作用域,若

11、干個參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字; 運算符重載:同一個運算符可以施加于不同類型的操作數(shù)上面。,29,9 .3 面向?qū)ο蠼?模型:是一組圖示符號和組織這些符號的規(guī)則,利用它們來定義和描述問題域中的術(shù)語和概念。 面向?qū)ο竽P偷慕M成:,描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu),描述系統(tǒng)控制結(jié)構(gòu),描述系統(tǒng)功能,30,一般的建模順序:, 對象模型(object model ) :定義實體,描述系統(tǒng)數(shù)據(jù),定義“對誰做” 動態(tài)模型( dynamic model ) :描述系統(tǒng)控制結(jié)構(gòu),規(guī)定“何時做” 功能模型( functional model ) :描述系統(tǒng)功能,指明系統(tǒng)應(yīng)“做什么”,31,幾種著名的面向?qū)ο蠓椒?

12、Booch 方法( 1991 ) Coad 一 Yourdon 方法( 1991 ) Rumbaugh 方法(簡稱 OMT ) ( object Modeling Technology , 1991 ) Jacobson 方法(簡稱 OOSE , 1992 ) 由 Rumbaugh 、 Booch 、 Jacobson 提出的統(tǒng)一建模語言 ( 簡稱 UML ) ( Unify Modeling Language , 1994 ),32,UML 統(tǒng)一建模語言,一種可視化建模語言,能描述開發(fā)需要的各種視圖,并以此為基礎(chǔ)組建系統(tǒng)。 其發(fā)展過程如右圖: 常用的工具: Rational Rose,33,

13、面向?qū)ο蟮能浖_發(fā)模型,對象模型: 描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的對象模型; 動態(tài)模型:描述系統(tǒng)控制結(jié)構(gòu); 功能模型:描述系統(tǒng)功能。 一個典型的軟件系統(tǒng)使用數(shù)據(jù)結(jié)構(gòu)(對象模型),執(zhí)行操作(動態(tài)模型),并且完成數(shù)據(jù)值的變化(功能模型)。,34,9 . 4 對象模型,描述系統(tǒng)內(nèi)部對象的靜態(tài)結(jié)構(gòu),包括對象本身的定義、對象的屬性和操作、以及對象與其它對象之間的關(guān)系。 UML 中,對象模型通常由“類圖”組成。,35,9 . 4 . 1 類圖的基本符號,36,9 . 4 . 2 表示關(guān)系的符號,類和類之間的聯(lián)系稱為“關(guān)系”;關(guān)系可以是物理的,也可以是邏輯的。 通常分為:關(guān)聯(lián)、范化、依賴和細(xì)化四種。,37,1 、關(guān)聯(lián),

14、表示:在類之間畫一條連線。 角色:關(guān)聯(lián)的端點,說明類在關(guān)聯(lián)中的作用和角色。,38,關(guān)聯(lián)的重數(shù),表示類中有多少個對象與關(guān)聯(lián)類中的一個對象相關(guān)。常見的描述有: 未標(biāo)明,默認(rèn)為 1 ; 0 . 1 ; 0 . *或 * ; 0+ 或1 . ; 1 . 5 ; 3,39,限定關(guān)聯(lián),對關(guān)聯(lián)的含義做某種約束。通常用在一對多或多對多的關(guān)聯(lián)關(guān)系中,把模型中的重數(shù)從一對多(或多對多)變成一對一(或多對一),文件在目錄內(nèi)是唯一的,40,關(guān)聯(lián)的屬性,進一步說明對象間關(guān)聯(lián)的性質(zhì),可引入一個關(guān)聯(lián)類來記錄這些附加信息。關(guān)聯(lián)類通過一條虛線與關(guān)聯(lián)連接。,41,42,類圖,43,2、聚合,一種“整體與成員”的關(guān)系。表示整體類的

15、那一端增加一個菱形框。 包括共享聚合和組合聚合。如:,44,45,4 、依賴和細(xì)化,依賴:一個模型元素是獨立的,另一個依賴于這個獨立的模型元素,若獨立元素改變,將影響此元素。 如成績依賴課程:,46,細(xì)化:同一事物在不同抽象層次上描述時,這些描述之間具有細(xì)化關(guān)系。,B在A的基礎(chǔ)上更詳細(xì)的描述,47,9 . 5 動態(tài)模型,狀態(tài)圖描述對象可能的狀態(tài)及其轉(zhuǎn)換,關(guān)心對象在某過程中的經(jīng)歷。 生命周期中的階段也就是對象的狀態(tài)。 一個觸發(fā)行為稱為一個事件. 狀態(tài)有持續(xù)性,它占用一段時間間隔。 事件表示時刻,狀態(tài)代表時間間隔。 通過狀態(tài)圖來描繪對象的狀態(tài)、觸發(fā)狀態(tài)轉(zhuǎn)換的事件以及對象的行為。,48,建模實例:描

16、述客房狀態(tài)的狀態(tài)圖,49,9 . 6 功能模型,功能模型表示變化的系統(tǒng)的“功能”性質(zhì),它指明了系統(tǒng)應(yīng)該“做什么”,因此更直接地反映了用戶對目標(biāo)系統(tǒng)的需求。 UML提供的用例圖也是進行需求分析和建立功能模型的強有力工具。 在UML中把用用例圖建立起來的系統(tǒng)模型稱為用例模型。 用例模型描述的是外部行為者(actor)所理解的系統(tǒng)功能。是其他視圖的核心和基礎(chǔ)。,50,圖9.16自動售貨機系統(tǒng)用例圖,方框代表系統(tǒng),橢圓代表用例,行為者,關(guān)系,51,建模實例:某金融貿(mào)易系統(tǒng)用例圖 (UML ),52,建模實例:用例圖舉例( UML ),53,用例之間的關(guān)系,UML用例主要有擴展和使用兩種關(guān)系,它們是泛化關(guān)系的兩種不

溫馨提示

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

評論

0/150

提交評論