freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

清華c語言程序設(shè)計:第11章類和對象-展示頁

2024-10-27 17:13本頁面
  

【正文】 ? 類的靜態(tài)成員 ? 類的對象 ? 類的構(gòu)造函數(shù)和析構(gòu)函數(shù) 數(shù)據(jù)抽象的概念 (1/4) ? 對象 ——描述問題空間的實(shí)體 ? 程序設(shè)計的角度: 對數(shù)據(jù)和操作的封裝 ? 真實(shí)世界 的角度:問 題空間的實(shí)體 ? 問題空間的哪些實(shí)體需要描述? ? 對于一個實(shí)體,對象需要描述該實(shí)體的哪些方面? 數(shù)據(jù)抽象的概念 (2/4) ? 用面向?qū)ο蟮姆椒枋鲆粋€系統(tǒng) ? 設(shè)計的系統(tǒng)中的對象必須能很好地描述問題空間的實(shí)體 ? 讀者 Reader怎么描述? ? 對象之間必須能互操作或互通消息 ? 讀者 Reader和圖書館管理員 librarian之間如何互操作 ? 對象之間必須允許存在某種關(guān)系,如包含關(guān)系等 數(shù)據(jù)抽象的概念 (3/4) ? 數(shù)據(jù)抽象 ——忽略一個主題中與當(dāng)前問題無關(guān)的方面,以便更充分地注意與當(dāng)前問題有關(guān)的方面 ? 不是去了解和描述問題的全部 ? 只是選擇其中相關(guān)的一部分 數(shù)據(jù)抽象的概念 (4/4) ? 數(shù)據(jù)抽象的步驟 ? 確定問題空間,明確要解決的問題 ? 圖書館管理系統(tǒng)要解決的問題是什么? ? 確定問題空間的實(shí)體 ? 哪些實(shí)體和要解決的問題相關(guān) ? 對實(shí)體進(jìn)行抽象 ? 對于每一個實(shí)體,確定要描述的東西 ? 用數(shù)據(jù)結(jié)構(gòu)和函數(shù)描述上面的結(jié)果 抽象數(shù)據(jù)類型 (1/13) ? 對問題空間的實(shí)體進(jìn)行抽象 ? 包含哪些屬性(數(shù)據(jù))和功能(函數(shù)) ? 抽象的結(jié)果 ——對數(shù)據(jù)和函數(shù)的封裝 ? 類 (class)——抽象數(shù)據(jù)類型,實(shí)現(xiàn)對數(shù)據(jù)和函數(shù)的封裝 ? 自定義類是一種新的數(shù)據(jù)類型 抽象數(shù)據(jù)類型 (2/13) ? 結(jié)構(gòu)化程序設(shè)計 ? 全局?jǐn)?shù)據(jù) (變量、數(shù)組、結(jié)構(gòu)等 )具有文件作用域 ? 任何函數(shù)都可以訪問他們 ? 程序可維護(hù)性差 抽象數(shù)據(jù)類型 (3/13) ? 類和對象的封裝和訪問控制 ? 封裝是面向?qū)ο蟮闹匾卣髦? ? 類封裝了數(shù)據(jù)和函數(shù) ? 類定義了函數(shù)和數(shù)據(jù)的訪問控制屬性 ? 哪些成員可被外界直接訪問 ? 哪些成員只能被自己的成員函數(shù)訪問 ? 提高了程序的可維護(hù)性 ? 類的數(shù)據(jù)成員最好都是私有的 抽象數(shù)據(jù)類型 (4/13) ? 接口與實(shí)現(xiàn)的分離 ? 類的使用者關(guān)心類的接口 ——類的公有數(shù)據(jù)成員和函數(shù),即他能訪問的部分 ? 類的設(shè)計者關(guān)心類的實(shí)現(xiàn) ? 接口與實(shí)現(xiàn)的分離使程序員能將精力集中到自己關(guān)心的部分 ? 接口與實(shí)現(xiàn)的分離有利于多人(方)合作 例子 1:用結(jié)構(gòu)實(shí)現(xiàn)棧 (1/5) // include struct Stack { //結(jié)構(gòu)定義 int *data。 //棧數(shù)據(jù)存儲 int memNum。 //棧大小 }。s, int size)。s)。s, int amp。 //函數(shù)原型 int pushStack(Stack amp。 //函數(shù)原型 例子 1:用結(jié)構(gòu)實(shí)現(xiàn)棧 (2/5) //初始化棧 int initStack(Stack amp。 if ( == NULL) return 0。 = size。 } //釋放棧 void delStack(Stack amp。 } 例子 1:用結(jié)構(gòu)實(shí)現(xiàn)棧 (3/5) //彈棧 , 無數(shù)據(jù)時返回 0, 否則返回 1 int popStack(Stack amp。num) { if ( == 0) return 0。 return 1。s, int mem) { if ( == ) return 0。 return 1。 Stack newStack。 coutPush integers to stack :endl。i10。 pushStack(newStack, i)。 coutFrom function popStack :endl。 i10。 } coutendlendl。i20。 } coutReading from struct newStack :endl。i10。 } coutendl。i20。 } coutendl。 return 0。 ~Stack()。num)。 //函數(shù)原型 private: int *data。 //棧元素個數(shù) int size。 例子 2:用類實(shí)現(xiàn)抽象數(shù)據(jù)類型:棧 (2/5) //文件 //類 Stack的實(shí)現(xiàn) include Stack::Stack(int s) { data = new int[s]。 memNum = 0。 } 例子 2:用類實(shí)現(xiàn)抽象數(shù)據(jù)類型:棧 (3/5) //彈棧函數(shù) , 不成功返回 0, 成功則返回 1, 棧元素由參數(shù)返回 int Stack::pop(int amp。 num = data[memNum]。 } //壓棧函數(shù) , 不成功返回 0, 成功則返回 1 int Stack::push(int mem) { if (memNum == size) return 0。 return 1。 Stack myStack(10)。 for (i=0。 i++) { if (!(i)) coutendlPush i failed.endl。 } 例子 2:用類實(shí)現(xiàn)抽象數(shù)據(jù)類型:棧 (5/5) cout Pop: 。 i11。 else coutendlPop failed.。 return 0。 //Stack類型的對象 Stack arrayOfStack[10]。 //Stack類型的指針 Stack amp。 // 引用一個 Stack對象 抽象數(shù)據(jù)類型 (10/13) ? 類的定義和實(shí)現(xiàn)一般在不同的文件中 ? 類的定義一般放在一個頭文件中,供其它需要使用該類的文件包含 ? 類的實(shí)現(xiàn)部分一般在一個源文件中,該文件需要包含定義類的頭文件 ? 類的定義和實(shí)現(xiàn)可以放在一個文件里,但不提倡,因為結(jié)構(gòu)不清晰 抽象數(shù)據(jù)類型 (11/13) ? 類成員函數(shù)的實(shí)現(xiàn)在類的定義外面時,
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1