第10章 面向?qū)ο蟪绦蛟O(shè)計基本概念.ppt_第1頁
第10章 面向?qū)ο蟪绦蛟O(shè)計基本概念.ppt_第2頁
第10章 面向?qū)ο蟪绦蛟O(shè)計基本概念.ppt_第3頁
第10章 面向?qū)ο蟪绦蛟O(shè)計基本概念.ppt_第4頁
第10章 面向?qū)ο蟪绦蛟O(shè)計基本概念.ppt_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第10章 面向?qū)ο蟪绦蛟O(shè)計基本概念,李姍姍,本章內(nèi)容,面向?qū)ο蟪绦蛟O(shè)計的特點,面向?qū)ο蟪绦虻慕Y(jié)構(gòu),3,4,類、對象和消息,2,面向?qū)ο笳Z言和方法,10.1 面向?qū)ο笳Z言和方法,簡單的例子圖書館管理系統(tǒng) 包含reader(讀者)對象、librarian(圖書管理員)對象、bookshelf(書架)對象等 所有的操作由各對象協(xié)作完成 借書 reader對象向librarian對象提出借書請求 librarian對象向bookshelf對象提出查書和取書請求 然后逐步響應(yīng),逐步返回,共同完成借書操作,10.1 面向?qū)ο笳Z言和方法,結(jié)構(gòu)化程序設(shè)計 自頂向下,逐步求精 對小規(guī)模的問題非常有效 但無法很好

2、地支持越來越復(fù)雜、龐大的系統(tǒng)需求 面向?qū)ο蠓椒?直接將問題的求解映射到問題本身上 將問題分解為一系列的實體(對象) 對象之間通過相互協(xié)作來完成功能 方便設(shè)計,可維護性、可擴充性好,10.1 面向?qū)ο笳Z言和方法,六十年代末期Simula 67(面向?qū)ο笳Z言的鼻祖) 包含了類和繼承的概念 類描述特性相同或相近的一組對象的結(jié)構(gòu)和行為 繼承將多個類組織成層次結(jié)構(gòu),實現(xiàn)數(shù)據(jù)和操作的共享,10.1 面向?qū)ο笳Z言和方法,面向?qū)ο笳Z言被分為兩大陣營 純粹的面向?qū)ο笳Z言:Smalltalk、Eiffel、Java 混合型面向?qū)ο笳Z言:C+和CLOS,10.1 面向?qū)ο笳Z言和方法,面向?qū)ο蠓椒ǖ囊恍┨匦?程序由對

3、象組成 對象之間通過相互協(xié)作來完成功能 函數(shù)與相關(guān)的數(shù)據(jù)緊密結(jié)合 數(shù)據(jù)可以被隱藏 很容易擴充新的數(shù)據(jù)和函數(shù),本章內(nèi)容,面向?qū)ο蟪绦蛟O(shè)計的特點,面向?qū)ο蟪绦虻慕Y(jié)構(gòu),3,4,類、對象和消息,2,面向?qū)ο笳Z言和方法,10.2 類、對象和消息,萬物皆對象 每個學生、每個班級、每個學校、每個國家、每棵樹、每本書、每部汽車具體的實體 “張三”、“李四”都是對象,但“人”不是 “人”不是具體的實體,是類,是抽象概念 類是某些對象共同特征的表示 類是創(chuàng)建對象的模板,對象是類的實例,10.2 類、對象和消息,如何區(qū)分類和對象以“人”和“張三”為例 “人”描述了所有人(包括“張三” )都具有的屬性和行為,如有姓名

4、、身高、體重,有鼻子、眼睛、四肢,能交流、能思維等等 類(“人”)描述的概念是抽象的 “人”的姓名是什么? “人”的身高是什么? 對象(“張三”)是具體的 “張三”的姓名是“張三” “張三”的身高是185CM,10.2 類、對象和消息,還有哪些類和對象的例子 教室305-206教室 國家中國 學校南方醫(yī)科大學 ,10.2 類、對象和消息,面向?qū)ο蟪绦蛟O(shè)計的一般步驟 分析實際問題,分辨并抽取其中的類和對象 設(shè)計相應(yīng)的類,并根據(jù)這些類創(chuàng)建各種對象 協(xié)調(diào)這些對象完成程序功能(消息),例子:讀者類Reader,class Reader public: Reader();/構(gòu)造函數(shù) int regist

5、ration(char *name);/注冊 int borrowBook(int bookNo);/借書 int returnBook(int bookNo);/還書 private: char *name;/姓名 char *certifNo;/借書證號 ;,類的定義以關(guān)鍵字class開頭,類名,類名后面花括號擴起來 的部分是類的體,類的定義以分號結(jié)尾,10.2 類、對象和消息,內(nèi)容說明 類的定義可以包含數(shù)據(jù)和函數(shù) 關(guān)鍵字public后面定義了類的公有成員 類Reader有四個公有成員函數(shù):Reader、registration(注冊)、borrowBook(借書)和returnBook(

6、還書) 關(guān)鍵字private后面定義的是類的私有成員 類Reader包含兩個私有數(shù)據(jù)成員,姓名(name)和借書證號(certifNo) 數(shù)據(jù)成員和成員函數(shù)都可以是私有的或公有的,10.2 類、對象和消息,自定義類是一種新的自定義類型,可以聲明變量、指針、數(shù)組等 對象各自擁有自己的數(shù)據(jù)空間,互不干擾 Reader zhang;/聲明Reader類的對象zhang Reader reader1000;/聲明Reader類的數(shù)組 Reader *rptr = /聲明Reader類型的引用,10.2 類、對象和消息,對象可以響應(yīng)消息 調(diào)用對象的成員函數(shù)想當于向?qū)ο蟀l(fā)消息 對象zhang可以響應(yīng)三種消

7、息 registration(注冊)、borrowBook(借書)和returnBook(還書) 要對象zhang借書可以向?qū)ο髗hang發(fā)borrowBook消息 對象zhang則通過執(zhí)行成員borrowBook來響應(yīng)消息,10.2 類、對象和消息,C+將“向?qū)ο蟀l(fā)消息”處理成“調(diào)用對象的某個成員函數(shù)” 調(diào)用對象zhang的成員函數(shù)borrowBook zhang.borrowBook(12); rptborrowBook(12); ref.borrowBook(12);,10.2 類、對象和消息,消息機制的特性 同一對象可以接收不同的消息,并有不同的響應(yīng),如對象zhang可接收注冊、借書、

8、還書三種消息 對象之間是平等的,每個對象都可以向其它對象發(fā)消息,讓其為自己服務(wù),本章內(nèi)容,面向?qū)ο蟪绦蛟O(shè)計的特點,面向?qū)ο蟪绦虻慕Y(jié)構(gòu),3,4,類、對象和消息,2,面向?qū)ο笳Z言和方法,10.3 面向?qū)ο蟪绦蛟O(shè)計特點,抽象和封裝 抽象提取和表現(xiàn)事物的核心特性,不描述背景細節(jié) 類的定義是對實體的抽象和描述(定義類Reader時,要描述哪些特性?) 封裝把數(shù)據(jù)及與數(shù)據(jù)相關(guān)的操作組織在對象中 結(jié)構(gòu)清晰,對象之間的獨立性好,可擴充性和可維護性好,10.3 面向?qū)ο蟪绦蛟O(shè)計特點,數(shù)據(jù)隱藏和訪問機制 對象對內(nèi)部數(shù)據(jù)提供了不同級別的保護 對象私有的代碼和數(shù)據(jù)不能被外界直接訪問 外界只能訪問公有數(shù)據(jù),通過公有成員

9、函數(shù)和對象交互 有效地保護數(shù)據(jù),提高程序的可維護性,10.3 面向?qū)ο蟪绦蛟O(shè)計特點,繼承 繼承允許從現(xiàn)有的類(基類)建立新類(派生類) 派生類繼承了基類的屬性和行為 派生類可以修改和擴充這些屬性和行為 派生類可以增加新的數(shù)據(jù)成員和函數(shù)成員 派生類對象被認為是基類的對象方便統(tǒng)一管理 提高軟件開發(fā)的效率和軟件質(zhì)量,10.3 面向?qū)ο蟪绦蛟O(shè)計特點,多態(tài)性 程序設(shè)計中很多類可以通過繼承的關(guān)系構(gòu)成樹形結(jié)構(gòu) 多態(tài)性使程序員可以通過統(tǒng)一的接口操縱這些類的對象 對于同一條函數(shù)調(diào)用語句不同的對象會執(zhí)行不同的操作,10.3 面向?qū)ο蟪绦蛟O(shè)計特點,面向?qū)ο蠹夹g(shù)的優(yōu)點 易于建模 易于維護 可擴展性好 代碼重用,本章內(nèi)

10、容,面向?qū)ο蟪绦蛟O(shè)計的特點,面向?qū)ο蟪绦虻慕Y(jié)構(gòu),3,4,類、對象和消息,2,面向?qū)ο笳Z言和方法,10.4 面向?qū)ο蟪绦虻慕Y(jié)構(gòu),面向?qū)ο蟪绦蛉匀恍枰粋€入口:main函數(shù) 面向?qū)ο蟪绦蛟O(shè)計的任務(wù) 設(shè)計類 以類為模板創(chuàng)建不同的對象 通過消息機制協(xié)調(diào)這些對象共同工作,例子1:音像資料類Media,#include #include using namespace std; #define ISAUDIO 1 #define ISVIDEO 2 class Media public: Media(char *n) name = new charstrlen(n)+1; strcpy(name, n); type = 0; ,Media() delete name; void setType(int t) type = t; void showInfo() coutname is a ; if(type = ISAUDIO) coutaudio disc.endl; else if(type = ISVIDEO) coutvideo disc.endl; else coutunclassified disc.endl; ,private: char *name; int type; ; int main() Media discDion(The Colou

溫馨提示

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

評論

0/150

提交評論