版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第九章 面向?qū)ο蠓椒▽W引論(Object - Oriented Methodology),1 面向?qū)ο蠓椒▽W概述 1、瀑布模型的缺點:僵化 瀑布模型要求:生命周期各階段間遵守嚴格的順序。 實際情況是:軟件開發(fā)往往在反復實踐中完成。 瀑布模型要求:預先定義并“凍結(jié)”軟件需求。 實際情況是:某些系統(tǒng)的需求是一個逐漸明確的過程,且預先定義的需求到軟件完成時可能已經(jīng)過時。,1面向?qū)ο蠓椒▽W概述, 本質(zhì)上是功能分解,以實現(xiàn)功能的過程為中心,而用戶的需求變化主要是針對功能的。這就使基于過程的設(shè)計不易被理解;且功能變化往往引起結(jié)構(gòu)變化較大,穩(wěn)定性不好。 系統(tǒng)有明確的邊界定義,且系統(tǒng)結(jié)構(gòu)依賴于系統(tǒng)邊界的定義,
2、這樣的系統(tǒng)不易擴充和修改。 數(shù)據(jù)與操作分開處理,可能造成軟構(gòu)件對具體應用環(huán)境的依賴,可重用性(reusability)較差.,2、SA - SD - SP 技術(shù)的缺點: (結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計、結(jié)構(gòu)化程序設(shè)計),面向?qū)ο蠓椒ò褦?shù)據(jù)和行為看成同等重要,它是一種以數(shù)據(jù)為主線,把數(shù)據(jù)和對數(shù)據(jù)的操作緊密地結(jié)合起來的方法。,3、面向?qū)ο蠓椒▽W(OOM),面向?qū)ο蠓椒▽W具有下述4個要點。 把對象(object)作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)一的軟件構(gòu)件。面向?qū)ο蟪绦蚴怯蓪ο蠼M成的,程序中任何元素都是對象,復雜對象由比較簡單的對象組合而成。,(2) 把所有對象都劃分成類(class)。每個類都定義
3、了一組數(shù)據(jù)和一組操作,類是對具有相同數(shù)據(jù)和相同操作的一組相似對象的定義。,(3) 按照父類(或稱為基類)與子類(或稱為派生類)的關(guān)系,把若干個相關(guān)類組成一個層次結(jié)構(gòu)的系統(tǒng)(也稱為類等級)。在類等級中,下層派生類自動擁有上層基類中定義的數(shù)據(jù)和操作,這種現(xiàn)象稱為繼承。 (4) 對象彼此間僅能通過發(fā)送消息互相聯(lián)系。 也就是說,對象的所有私有信息都被封裝在該對象內(nèi),不能從外界直接訪問,這就是通常所說的封裝性。,杭 州,北 京,Message,Send by method,對象Object,Object,= 數(shù)據(jù)Attribute,Attributes: location; employee; ,+ 操
4、作Method,Methods: send; sell; ,注意:Object內(nèi)部的attributes不允許外部用戶直接改動,只有當它提供了相應的服務method時,用戶才能通過發(fā)送message來提請它執(zhí)行。,我想把郵局搬到 我家門口,多加幾個 郵遞員,24小時都開門 ,對不起, 本郵局不提供 此類服務,唉,那就先送束花吧 Post_office.Send (request, payment),例:, 特點:盡可能模擬人類習慣的思維方式,即問題域與求解域在結(jié)構(gòu)上盡可能一致。與傳統(tǒng)方法相反,OOM以數(shù)據(jù)或信息為主線,把數(shù)據(jù)和處理結(jié)合構(gòu)成統(tǒng)一體 對象。這時程序不再是一系列工作在數(shù)據(jù)上的函數(shù)集合
5、,而是相互協(xié)作又彼此獨立的對象的集合。, OOM的四要素:,對象(object):世界由對象組成。, 類 (class) :對象可劃分為類;單個對象可視為某一類的實例 (instance)。,1面向?qū)ο蠓椒▽W概述,例: class Post_office private : loc_type location ; emp_type employee ; public : void send (req_type request, money_type payment); void sell (int goods, money_type payment) ; ;,main ( ) Post_off
6、ice My_PO ; req_type My_request ; money_type My_payment ; My_PO.Send ( My_request, My_payment) ; ,1面向?qū)ο蠓椒▽W概述, 繼承(inheritance):類可分層,下層子類與上層父類有相同特征,稱為繼承。, 消息(message):對象間只能通過發(fā)送消息進行聯(lián)系,外界不能處理對象的內(nèi)部數(shù)據(jù),只能通過消息請求它進行處理(如果它提供相應消息的話)。,1面向?qū)ο蠓椒▽W概述,OOM:以object 為核心,強調(diào)對現(xiàn)實概念的模擬而不強調(diào)算法?!懊嫦?qū)ο蠓椒▽W的基本原則,是按照人們習慣的思維方式建立問題域的模
7、型,開發(fā)出盡可能直觀、自然地表現(xiàn)求解方法的軟件系統(tǒng)”。 Class:由特殊到一般的歸納(induction) Inheritance:由一般到特殊的演繹(deduction),OOM = Object+Class+Inheritance+Communication with messages, OOM的優(yōu)點:, 傳統(tǒng)方法:面向過程設(shè)計,以計算為核心,數(shù)據(jù)與操作分離,不易理解。,1面向?qū)ο蠓椒▽W概述,OOM:以object模擬實體,需求變化不會引起結(jié)構(gòu)的整體變化,因為實體相對穩(wěn)定,故系統(tǒng)也相應穩(wěn)定。, 傳統(tǒng)方法:結(jié)構(gòu)依賴于功能,不穩(wěn)定。,傳統(tǒng)方法:通過建立標準函數(shù)庫來重用軟構(gòu)件。但標準函數(shù)缺少必
8、要的“柔性”,難以適應不同場合的不同需要。,OOM:一個class所有的 instances 都可重用它的代碼;由 inheritance 派生出的新的 class 可重用其父類的代碼,并且可以修改、擴充而不影響其父類的使用。,1面向?qū)ο蠓椒▽W概述,穩(wěn)定性好:軟件功能需求的變化不牽動全局,只需局部修改; Class 獨立性強:只要修改不涉及class的對外接口,則內(nèi)部修改完全不影響外部調(diào)用; Inheritance和多態(tài)性(polymorphism)使其很容易被修改和擴充; 容易理解;, 傳統(tǒng)方法:可維護性是最令人頭痛的問題。 OOM:從以下幾方面改善了可維護性 , 容易測試、調(diào)試。,注:OO
9、M并不是減少了開發(fā)時間,而是通過提高可重用性、可維護性,進行擴充和修改的容易程度等,從長遠角度改進了軟件的質(zhì)量。OOM與Prototyping結(jié)合使用效果好。,迭代是軟件開發(fā)過程中普遍存在的一種內(nèi)在屬性。經(jīng)驗表明,軟件過程各個階段之間的迭代或一個階段內(nèi)各個工作步驟之間的迭代,在面向?qū)ο蠓缎椭斜仍诮Y(jié)構(gòu)化范型中更常見。,4 噴泉模型,使用面向?qū)ο蠓椒▽W開發(fā)軟件時,工作重點應該放在生命周期中的分析階段。 早期階段定義了一系列面向問題的對象,并且在整個開發(fā)過程中不斷充實和擴充這些對象。 整個開發(fā)過程中都使用統(tǒng)一的軟件概念“對象”,所有其他概念(例如功能、關(guān)系、事件等)都是圍繞對象組成的,分析階段得到的
10、對象模型也適用于設(shè)計階段和實現(xiàn)階段。,各個開發(fā)步驟的多次反復迭代,達到認識的逐步深化。 每次反復都會增加或明確一些目標系統(tǒng)的性質(zhì),但卻不是對先前工作結(jié)果的本質(zhì)性改動,這樣就減少了不一致性,降低了出錯的可能性。 噴泉模型,是典型的面向?qū)ο蟮能浖^程模型。,噴泉模型,“噴泉”這個詞體現(xiàn)了面向?qū)ο筌浖_發(fā)過程迭代和無縫的特性。 代表不同階段的圓圈相互重疊,這明確表示兩個活動之間存在交迭; 用面向?qū)ο蠓椒ㄩ_發(fā)軟件時,在分析、設(shè)計和編碼等項開發(fā)活動之間并不存在明顯的邊界。 在一個階段內(nèi)的向下箭頭代表該階段內(nèi)的迭代(或求精)。圖中較小的圓圈代表維護,圓圈較小象征著采用了面向?qū)ο蠓缎椭缶S護時間縮短了。,為
11、避免使用噴泉模型開發(fā)軟件時開發(fā)過程過分無序,應該把一個線性過程(例如,快速原型模型或圖9.1中的中心垂線)作為總目標。 面向?qū)ο蠓缎捅旧硪蠼?jīng)常對開發(fā)活動進行迭代或求精。,2. 基本概念,1. 對象 (Object),與要解決問題有關(guān)的任何事物都可以作為對象,對象是由描述該對象屬性的數(shù)據(jù)以及可以對數(shù)據(jù)施加的所有操作封裝在一起構(gòu)成的統(tǒng)一體,通常把對象的操作稱為服務或方法,一個對象很像一臺錄音機,f1,f2,f3,fi,fn,fi(X),S,gi(X,S),S,輸出,輸出,2.基本概念,Object : = ID + Method + Attribute + Message,對象的幾個定義: (1
12、) 定義1: 對象是具有相同狀態(tài)的一組操作的集合。主要是從面向?qū)ο蟪绦蛟O(shè)計的角度看“對象”。,(2) 定義2: 對象是對問題域中某個東西的抽象,這種抽象反映了系統(tǒng)保存有關(guān)這個東西的信息或與它交互的能力。也就是說,對象是對屬性值和操作的封裝。 這個定義著重從信息模擬的角度看待“對象”。 (3) 定義3: 對象=ID,MS,DS,MI。其中,ID是對象的標識或名字,MS是對象中的操作集合,DS是對象的數(shù)據(jù)結(jié)構(gòu),MI是對象受理的消息名集合(即對外接口)。 這個定義是一個形式化的定義。,對象是封裝了數(shù)據(jù)結(jié)構(gòu)及可以施加在這些數(shù)據(jù)結(jié)構(gòu)上的操作的封裝體,這個封裝體有可以惟一地標識它的名字,而且向外界提供一組
13、服務(即公有的操作)。 對象中的數(shù)據(jù)表示對象的狀態(tài),一個對象的狀態(tài)只能由該對象的操作來改變。每當需要改變對象的狀態(tài)時,只能由其他對象向該對象發(fā)送消息。對象響應消息時,按照消息模式找出與之匹配的方法,并執(zhí)行該方法。,從動態(tài)角度或?qū)ο蟮膶崿F(xiàn)機制來看,對象是一臺自動機。 具有內(nèi)部狀態(tài)S, 操作fi(i=1,2,n) 狀態(tài)轉(zhuǎn)換函數(shù)為gi(i=1,2,n)的一個對象,2.基本概念,特點: 以數(shù)據(jù)為中心,不設(shè)與數(shù)據(jù)無關(guān)的操作; Object主動處理而不 被動地等待被處理,外部只能通過message請求操作; 具有黑盒性:外部操作時,無須知道該object內(nèi)部的數(shù)據(jù)結(jié)構(gòu)及算法; 具有并行性:不同object
14、各自獨立地處理自身數(shù)據(jù),彼此間僅通過傳遞message完成通信; 模塊獨立性好:內(nèi)聚強( )、耦合松( ),3、實例(Instance):某個class描述的具體對象; 4、消息(Message): object_ID. method_ID (parameter(s); 5、方法(Method): object能做的操作,亦稱為服務、響應, 在 class 中須定義相應的代碼; 6、屬性(Attribute) :object 的固有數(shù)據(jù);,2基本概念,7、繼承(Inheritance):子類自動共享父類的attributes 和methods ,而不必重復定義。,2、類(Class):具有相同
15、數(shù)據(jù)和相同操作的一組對象;,2.基本概念,例:,特點: 若杭州人的 methods中有與中國人的同名,則李士執(zhí)行該 method 時以杭州人為準,不執(zhí)行中國人中定義的同名 method。,2.基本概念,講官話,這叫做“低層性質(zhì)override高層性質(zhì)” 講土話,這叫做“縣官不如現(xiàn)管”, 傳遞性(transitivity):類C繼承類B、類B繼承類A、則類C繼承類A, 一個 類繼承了上層全部 類的一切性質(zhì)。, 一個子類只 有 一 個父類稱為單 繼 承 (single inheritance), 一個子類可有多個父類稱為多重繼承(multiple inheritance).,注意:multiple
16、 inheritance 在定義中應避免二義性(ambiguity),即二個父類中定義重名,但各具不同性質(zhì)。,2.基本概念,例:,修改與擴充可以很容易地通過派生子類來完成,2.基本概念,8、Polymorphism(多態(tài)性): 不同層次的 classes 可共享一個method,但按各自的方式來實現(xiàn)這種 method。,C+ 中定義了虛函數(shù)(virtual function)來實現(xiàn)這一功能。在類層次不同中可以說明名字、參數(shù)特征和返回值類型都相同的虛函數(shù),即一個method有多個版本,運行時才決定執(zhí)行哪一個。故亦稱為動態(tài)聯(lián)編(dynamic binding)或滯后聯(lián)編(late binding)
17、,double avg (const double a , int size) ; double avg (const int a , int size) ; double avg (const double a , int size) ; double sum = 0.0 ; for ( int i = 0; i size; +i ) sum += ai ; return ( sum / size ) ; double avg (const int a , int size) ; int sum = 0 ; for ( int i = 0; i size; +i ) sum += ai ;
18、return ( (double) sum / size ) ; main() int k3 = 1, 2, 3 ; double x3 = 1.1, 2.2, 3.3 ; cout avg(k, 3) “ int average n” ; cout avg(x, 3) “ double average n” ; ,2.基本概念,9、Overloading, Function (or parameter) overloading : 不同函數(shù)共用一個名字,而調(diào)用參數(shù)的特征不同。 例:, Operator overloading : 同一運算符 (operator)作用于不同類型的操作數(shù) (operand) 上面。,2.基本概念,在編譯(compile)階段就決定了使用類型及執(zhí)行代碼,故意亦稱為靜態(tài)聯(lián)編 (static binding)或先前聯(lián)編 (early binding) 。,3. Object Modeling Technique (OMT)Rambaugh et al (1991),建立三種模型: 描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的對象模型(object model). 描述系統(tǒng)控制結(jié)構(gòu)的動態(tài)模型(dynamic mo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026云南昭通市永善縣審計局招聘編外人員1人備考題庫及一套完整答案詳解
- 2025四川綿陽市鹽亭發(fā)展投資集團有限公司招聘職能部門及所屬子公司人員7人備考題庫及答案詳解參考
- 2026江蘇南京大學招聘備考題庫XZ2025-428醫(yī)學院專業(yè)、技術(shù)人員備考題庫及一套參考答案詳解
- 2026年金融科技解決方案合同協(xié)議
- 企業(yè)培訓計劃與實施方案編寫標準模板
- 國有企業(yè)合規(guī)法律風險管理方案
- 小學生分級閱讀教學設(shè)計方案
- 啄木鳥培訓課件
- 公司質(zhì)量提升方案落實承諾書范文6篇
- 工廠廢棄物處理與環(huán)保合規(guī)方案
- 《電力建設(shè)安全工作規(guī)程》-第1部分火力發(fā)電廠
- 歌曲《我會等》歌詞
- 干部因私出國(境)管理有關(guān)要求
- 八年級物理上冊期末測試試卷-附帶答案
- 小學英語五年級上冊Unit 5 Part B Let's talk 教學設(shè)計
- 老年癡呆科普課件整理
- 學生校服供應服務實施方案
- 2022年鈷資源產(chǎn)業(yè)鏈全景圖鑒
- GB/T 22900-2022科學技術(shù)研究項目評價通則
- 自動控制系統(tǒng)的類型和組成
- GB/T 15171-1994軟包裝件密封性能試驗方法
評論
0/150
提交評論