面向?qū)ο蠓椒╛第1頁
面向?qū)ο蠓椒╛第2頁
面向?qū)ο蠓椒╛第3頁
面向?qū)ο蠓椒╛第4頁
面向?qū)ο蠓椒╛第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、清華大學計算機系 王 萍1999.11.面向?qū)ο蠓椒ū敬握n程內(nèi)容 面向?qū)ο蟮幕舅枷?面向?qū)ο蟮亩x 面向?qū)ο蟮幕靖拍?為什么要面向?qū)ο竺嫦驅(qū)ο蠡舅枷?從現(xiàn)實世界中客觀存在的事物(對象)出發(fā)來構(gòu)造系統(tǒng) 并在系統(tǒng)構(gòu)造中運用人類的自然思維方式面向?qū)ο蠡靖拍?對象對問題領(lǐng)域內(nèi)人、物、事情等的抽象運用的思維方式抽象分類組合 繼承 封裝面向?qū)ο蟮暮x 面向?qū)ο蟛粌H是一些具體的軟件開發(fā)技術(shù),它是一整套關(guān)于如何看待軟件系統(tǒng)與現(xiàn)實世界關(guān)系、以何種觀點來研究問題并進行求解、以及如何進行系統(tǒng)構(gòu)造的軟件方法學。 用面向?qū)ο笏枷霕?gòu)造軟件的主要內(nèi)容 對象是系統(tǒng)的基本單位 對象的屬性和操作組成一個完整的對象 具有共

2、同特征的對象抽象成 類 對對象的類進一步抽象, 形成類簇 對象之間存在靜態(tài)關(guān)系和動態(tài)關(guān)系 面向?qū)ο蠡舅枷?抽象 現(xiàn)實世界的物體抽象成對象 現(xiàn)實世界的物體之間的關(guān)系抽象成軟件系統(tǒng)中對象之間的關(guān)系 具有共同特征的對象抽象成類 具有共同特征的類抽象出基類和派生類面向?qū)ο蠡舅枷敕庋b 對象是屬性和操作的組合 對象的表現(xiàn)(服務(wù)、接口)和實現(xiàn)細節(jié)分開面向?qū)ο蠡締挝粚ο?構(gòu)成系統(tǒng)的基本單元是對象 對對象共同特征的提取形成了類 對象具有狀態(tài)和行為 對象(類)之間的關(guān)系:繼承、組合、消息等面向?qū)ο蠓椒ǖ亩x 面向?qū)ο蠓椒ㄊ抢贸橄?、封裝等機制,借助于對象、類、繼承、消息傳遞等概念進行軟件系統(tǒng)構(gòu)造的軟件開發(fā)方

3、法。面向?qū)ο蠡靖拍?對象 消息 類 繼承 多態(tài) 聚合對象 對象是對問題域中客觀存在的事物的抽象,它是一組屬性和在這些屬性上的操作的封裝體。 對象的兩大要素:屬性和操作 對象是對客觀事物的抽象描述 消 息 消息是向?qū)ο蟀l(fā)出的服務(wù)請求 是面向?qū)ο笙到y(tǒng)中對象之間交互的途徑 要素:發(fā)送者、接受者、服務(wù)、參數(shù) OOPL中的消息是對類的成員函數(shù)的調(diào)用 對消息的響應(yīng)取決于接受消息的對象 純粹的OOPL的消息的發(fā)送者和接受者都是對象類 類是具有相同屬性和操作的一組對象的集合,它為屬于該類的全部對象提供了統(tǒng)一的抽象描述。 類是對一類對象的抽象 類定義了這一類對象所共有的特征和行為 人類抽象思維的產(chǎn)物 OOPL

4、中的類相當于一種數(shù)據(jù)類型 類與對象的關(guān)系抽象與具體 類是對象的抽象描述,是對象的模板 對象是類的實例“”等價于“”繼承 特殊類與一般類 特殊類和一般類的關(guān)系是個性和共性的關(guān)系 特殊類擁有一般類所有的屬性和服務(wù) 特殊類具有自己特殊的屬性和服務(wù) 特殊類的對象包含一般類的對象繼承 特殊類(子類,派生類)的對象擁有一般類(父類,基類)對象的全部屬性與服務(wù),稱為特殊類對一般類的繼承繼承是描述類之間共同特性的機制繼承是類的一種組織方式繼承繼承的優(yōu)點 清晰體現(xiàn)相關(guān)類間的層次結(jié)構(gòu)關(guān)系 增強了模塊之間接口的一致性 降低了模塊之間接口的復雜性 減少代碼和數(shù)據(jù)的冗余,增加程序的復用能力 是形成面向?qū)ο筌浖_發(fā)環(huán)境的

5、基礎(chǔ)繼承 單繼承與多繼承 多繼承增加了軟件系統(tǒng)模擬現(xiàn)實世界的能力 單繼承是所有面向?qū)ο笳Z言都提供的機制 并非所有的語言都支持多繼承電話電話有線電話有線電話無線電話無線電話教師教師學生學生助教研究生助教研究生多態(tài) 運算符重載30 + 4035.35 + 40.21object1 + object2 函數(shù)重載print(20)print(“abcde”)print(a)print(3.45 * 9.2)面向?qū)ο蠡靖拍?多態(tài)小型汽油發(fā)動機小型汽油發(fā)動機virtual FillTank()除草機發(fā)動機除草機發(fā)動機輪船發(fā)動機輪船發(fā)動機virtual FillTank()鏈條鋸發(fā)動機鏈條鋸發(fā)動機virt

6、ual FillTank()多態(tài)/編譯器靜態(tài)確定所調(diào)用的函數(shù)SmallGasEngine guzzler;ChainSawEngine buz;TillerEngine roto;LawnMowerEngine briggs;guzzler.FillTank(); buz.FillTank();roto.FillTank();briggs.FillTank();多態(tài)/運行時動態(tài)確定所調(diào)用的函數(shù)SmallGasEngine *engine;switch(rand() % 4) case 0: engine = &guzzler;case 1: engine = &buzcase 2: engin

7、e = &rotocase 3: engine = &briggsengine-FillTank(); /通過動態(tài)聯(lián)編調(diào)用合適的函數(shù)從程序設(shè)計的角度看 類 是一種抽象數(shù)據(jù)類型,它封裝了屬性和方法 對象 ( 實例) 是類的一個變量,具有數(shù)據(jù)成員和方法 繼承 派生類可以從基類繼承屬性和方法 通信 是對象之間方法的相互調(diào)用對象 - 對問題領(lǐng)域內(nèi)人、物、事情等的抽象類- 對具有共同特征和共同行為的對象集的抽象繼承- 描述類之間共同特性的機制通信- 對象之間通過通信來協(xié)作面向?qū)ο髴?yīng)用=對象類繼承通信為什么要面向?qū)ο?面向?qū)ο蠓椒ㄊ擒浖碚摰姆磋睔w真面向過程面向數(shù)據(jù)面向功能面向應(yīng)用面向數(shù)據(jù)流程序員的智慧和

8、技巧面向?qū)ο鬄槭裁匆嫦驅(qū)ο?研究各種軟件開發(fā)方法的目的 如何開發(fā)出高質(zhì)量的軟件 如何在保證質(zhì)量的基礎(chǔ)上快速開發(fā) 為什么要面向?qū)ο?軟件的外部質(zhì)量 正確性 健壯性 可擴充性 可復用性 兼容性 其他(效率、可移植性、易使用性)為什么要面向?qū)ο?外部質(zhì)量靠內(nèi)部質(zhì)量支持模塊化 信息隱藏 控制分散 模塊易于復用 模塊易于維護 模塊要求:高內(nèi)聚,低耦合為什么要面向?qū)ο?復用軟件快速開發(fā)的必由之路 分析結(jié)果的復用 設(shè)計結(jié)果的復用 類簇的復用 類的復用結(jié)構(gòu)化程序設(shè)計 優(yōu)點 自頂向下,逐步求精 模塊化 復用 結(jié)構(gòu)化程序設(shè)計 缺點 面向功能,易于變化 復雜系統(tǒng)的行為難以用頂層功能描述 數(shù)據(jù)和過程分開 本質(zhì)上不利

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論