




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、課程總結(jié)第1章 從過程抽象到數(shù)據(jù)抽象1. 面向過程程序設(shè)計過程抽象。過程抽象的基礎(chǔ)是把軟件視為處理流,并把處理流定義成由一系列步驟構(gòu)成的算法。每一步驟都是帶有預(yù)定輸入和特定輸出的一個過程,把這些步驟串聯(lián)在一起可產(chǎn)生貫通于整個程序的控制流,最終產(chǎn)生一個具有靜態(tài)結(jié)構(gòu)的體系結(jié)構(gòu)。主要問題主要問題1:是只能做到信息隱藏,而不能做到信息保護(hù)。主要問題主要問題2:數(shù)據(jù)表示和函數(shù)是分開的。這在概念上和實際使用中都有缺陷2. 面向?qū)ο蟪绦蛟O(shè)計n基本思想:面向?qū)ο蟮某绦蚴怯蓪ο蠛蛯ο箝g的相互作用構(gòu)成的。面向?qū)ο蟮某绦蚴菍ο蟮挠袡C(jī)結(jié)合。n基本方法:面向?qū)ο蟪绦蛟O(shè)計方法模擬人類習(xí)慣的解題方法,用取代功能分解。對象分
2、解就是把程序分解成許多對象,不同對象之間通過發(fā)消息向?qū)Ψ教岢龇?wù)要求,接受消息的對象主動完成指定功能(顧客所要求的服務(wù)),程序中的所有對象分工協(xié)作,共同完成整個程序的功能。n特點(diǎn)/機(jī)制:封裝、繼承、多態(tài)。nCoad & Yourdon給出的面向?qū)ο蠓椒▽W(xué)方程式: OO=對象 + 類 + 繼承 + 消息 封裝、繼承、多態(tài)是如何實現(xiàn)的?類、定義派生類、重載封裝、繼承、多態(tài)是如何實現(xiàn)的?類、定義派生類、重載- -模板模板- -虛函虛函數(shù)數(shù)+ +繼承繼承 封裝、繼承、多態(tài)各起的作用?封裝、繼承、多態(tài)各起的作用?信息隱蔽信息隱蔽,代碼重用,靈活、重用,代碼重用,靈活、重用2. C+多文件程序設(shè)計
3、n 頭文件:.h o 要加#ifndef語句防止重復(fù)定義、編譯n 類的實現(xiàn)部分:.cppo 要#include“頭.hn 類的使用部分:.cppo 要#include“頭.h第2章 類和對象(C+)1. 類:1) 定義:分為說明和實現(xiàn)兩個部分。2) 類的成員:數(shù)據(jù)成員和成員函數(shù)。3) 訪問控制符:private(缺省), protected, public。2. 對象:1) 定義方法:Mycls obj; Mycls obj(8); Mycls *p=new Mycls(8); Date &DateRef=MyBirthday;2) 使用方法( 3種):對象名. 成員;對象指針- 成員
4、;對象引用- 成員;3) 自引用指針this:每當(dāng)創(chuàng)建一個類的對象時,系統(tǒng)就會自動地創(chuàng)建this指針并把this指針的值初始化為該對象本身(即把this指向該對象)。靜態(tài)成員函數(shù)中沒有this指針3. 構(gòu)造函數(shù)1) 作用和性質(zhì);沒有返回值3) 缺省參數(shù)的構(gòu)造函數(shù);避免沖突4) 構(gòu)造函數(shù)的重載;5) 拷貝構(gòu)造函數(shù)。4. 析構(gòu)函數(shù)(作用和性質(zhì))5. 成員對象的構(gòu)造和析構(gòu)(方法和順序)6. 對象數(shù)組(定義方法和數(shù)組的初始化方法)7. 對象指針(動態(tài)建立對象的方法:new和delete)8. 靜態(tài)(static)成員:分為靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)。9. 友元(friend)分為友元函數(shù)和友元類。10
5、.常類型(const)有常對象、常數(shù)據(jù)成員和常成員函數(shù)。特征。注意事項o 類的定義n格式n數(shù)據(jù)成員的定義的注意事項(p177-178):類中不能直接賦初值、類中不能定義本類對象、但是可以定義本類指針n成員函數(shù)的定義的注意事項:類體外:,默認(rèn)參數(shù),重載沖突o 對象定義和使用n對象定義n對象使用:. -、引用n成員訪問控制權(quán)限o對象不能訪問private、protected,能訪問基類的public;o派生類不能訪問private、能訪問基類的protected、publico 要在一個類的外部訪問該類的私有成員,可以通過該類的 public 函數(shù)(公開接口)實現(xiàn)。nthis指針:非靜態(tài)成員函數(shù)才
6、有o 根據(jù)main()設(shè)計類:類似p212例題1o o課件ppt:o 構(gòu)造函數(shù):格式,數(shù)據(jù)成員初始化,默認(rèn)的構(gòu)造函數(shù)默認(rèn)的構(gòu)造函數(shù)【何時何時自動產(chǎn)生,何時不會自動產(chǎn)生自動產(chǎn)生,何時不會自動產(chǎn)生】,可重載,不可為虛函數(shù)o Copy構(gòu)造函數(shù):作用,參數(shù)形式,何時調(diào)用,淺復(fù)制帶來的問題,默認(rèn)的Copy構(gòu)造函數(shù)【何時自動產(chǎn)生,何時不會何時自動產(chǎn)生,何時不會自動產(chǎn)生自動產(chǎn)生】o 析構(gòu)函數(shù):格式,不可重載,可為虛函數(shù)(甚至是純虛的)o 成員對象:構(gòu)造、析構(gòu)的順序注意點(diǎn):構(gòu)造函數(shù)、析構(gòu)函數(shù)沒有返回值 Copy構(gòu)造函數(shù)使用的情況(創(chuàng)建新對象,函數(shù)調(diào)用時參數(shù)虛實對應(yīng),返回值為對象或引用) 成員對象的定義和初始化
7、、析構(gòu)順序 初始化串的書寫方法特別:上述函數(shù)的使用定義分析、使用分析,運(yùn)行結(jié)果分析調(diào)用構(gòu)造析構(gòu)函數(shù)Copy構(gòu)造函數(shù)分析: MyClass p1, p210, *p3【p1不會調(diào)用構(gòu)造函數(shù)】, MyClass *p3=new MyClass(10,20) ,p5(p1); 無法繼承的函數(shù):構(gòu)造析構(gòu)Copy構(gòu)造賦值o 對象數(shù)組:n對象數(shù)組定義,執(zhí)行構(gòu)造函數(shù)次數(shù);注意:對象數(shù)組指針定義,不執(zhí)行構(gòu)造函數(shù)n賦初值方法(執(zhí)行哪一個構(gòu)造函數(shù)):mycls x2;等o 對象指針nnew和delete 的使用和含義o 靜態(tài)(static)成員:o靜態(tài)數(shù)據(jù)成員作用:為實現(xiàn)類的多個對象之間的數(shù)據(jù)共享而引進(jìn)的。o靜態(tài)
8、成員函數(shù)的作用:n要實現(xiàn)一個類在不生成對象的情況下通過類來訪問某成員函數(shù)n為了能在不生成對象的情況下處理private、protected的靜態(tài)數(shù)據(jù)成員。o靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)的使用(類:),靜態(tài)成員函數(shù)調(diào)用非靜態(tài)成員的方法(類中的非靜態(tài)數(shù)據(jù)成員,可以通過該類的對象間接引用。)o 友元(friend)o好處、壞處o如何定義o 常類型(const)n有常對象、常數(shù)據(jù)成員和常成員函數(shù)。n常成員函數(shù)如何訪問數(shù)據(jù)成員的規(guī)則oconst對象只能訪問const成員函數(shù), const成員函數(shù)不能調(diào)用非const成員函數(shù),例p210,exam8-16。void print() void print()
9、const Mycls a;a.print(); const Mycls b;b.print();第3章 繼承和派生1. 派生類:定義方法、生成過程和構(gòu)造函數(shù)。2. 訪問控制:公有繼承、私有繼承和保護(hù)繼承。3. 虛基類(virtual):多重繼承的二義性問題及解決方法、虛基類的概念和構(gòu)造函數(shù)。4. 基類與派生類之間的轉(zhuǎn)換:轉(zhuǎn)換條件、4種形式。注意事項o 派生定義方法o 派生時,成員的權(quán)限變化,訪問繼承的成員的問題【出錯分析,二義性,派生類支配性原則,解決二義性的方法】o 構(gòu)造函數(shù)的執(zhí)行順序及初始化串的書寫方法書寫方法o 方法(有二義性在成員函數(shù)名前加上范圍(類名:) )注意事項o 虛基類與普通
10、基類的區(qū)別概念、虛基類構(gòu)造函數(shù)的書寫、執(zhí)行:構(gòu)造函數(shù)順序:先父母先父母 先虛后非虛先虛后非虛再客人再客人后后自己自己o 分析方法:注意事項o 賦值兼容性條件(public繼承)多態(tài)必須要public繼承o Subclass d;o Base *p=d;o 派生類調(diào)用基類的成員函數(shù)的方法(有二義性在成員函數(shù)名前加上范圍(類名:) )第4章 多態(tài)性1.靜態(tài)聯(lián)編(編譯時多態(tài)性)通過函數(shù)重載和模板體現(xiàn)。何時靜態(tài)聯(lián)編,分析程序2.動態(tài)聯(lián)編(運(yùn)行時多態(tài)性)通過public繼承和虛函數(shù)體現(xiàn)。何時動態(tài)聯(lián)編(三要素),分析程序3.運(yùn)算符重載方法和實現(xiàn)方法;2種形式:成員函數(shù)和友元函數(shù),參數(shù)個數(shù)的特點(diǎn),參數(shù)何時需
11、要加&重載規(guī)則。 4.虛函數(shù)定義、使用三要素和使用限制;純虛函數(shù)和抽象類。概念、特點(diǎn)、使用。抽象類沒有完整的實現(xiàn),故不能實例化不能實例化。抽象類只能作為其他類的基類,不能聲明抽象類的實例,不能創(chuàng)建它的對象;但可以定義它的指針變量。注意事項o 何時靜態(tài)聯(lián)編、動態(tài)聯(lián)編:n 例exam10.2:動態(tài)聯(lián)編n 例exam10.2改造(WHO()去掉去掉virtual):靜態(tài)聯(lián)編o 動態(tài)聯(lián)編三要素:o 純虛函數(shù)和抽象類o 運(yùn)算符重載ooperrator=o賦值運(yùn)算符必須使用成員函數(shù)重載第5章 模板1.模板的概念:是實現(xiàn)代碼重用機(jī)制的一種工具,它可以實現(xiàn)類型參數(shù)化,即把類型定義為參數(shù),從而實現(xiàn)代碼的
12、可重用性。2.模板的分類:函數(shù)模板和類模板3.函數(shù)模板和模板函數(shù)函數(shù)模板的定義和使用方法;函數(shù)模板的重載。函數(shù)模板使用分析、不正確使用分析。函數(shù)模板與模板函數(shù)的區(qū)別。4.類模板和模板類類模板的定義和使用方法。類模板使用分析。類模板與模板類的區(qū)別;類模板的派生(3種形式)。特別:類模板-類模板,類模板-類類模板的設(shè)計與使用注意事項:o根據(jù)main()寫模板n例exec11-1 不同數(shù)據(jù)類型數(shù)組中的元素求和,涉及特化template char* sum(char* str, int len) char* s = NULL;int length = 0;for(int i=0; inumb; +i)
13、 length += strlen(stri);s = new charlength+1; /給s分配內(nèi)存空間s0 = 0;for(int i=0; i(istream &in, user-type &obj) inobj.item1; inobj.itemn; return in; n第一個參數(shù)是:對istream對象的引用。這意味著in必須是輸入流,它可以是其它任何合法的標(biāo)識符,但必須與return后面的標(biāo)識符相同;n第二個參數(shù)是:接收數(shù)據(jù)的對象。其中user_type是用戶自定義類型名,obj為該類型的對象名。幾點(diǎn)注意事項: (1)該重載函數(shù)的返回類型是istream類對
14、象的引用【 istream & operator】,返回引用的目的在于,把幾個輸入運(yùn)算符放在同一條輸入語句中時,該重載函數(shù)仍能正確工作。cinxyz; (cinx返回cin,再ciny,這兩個cin必需是同一個對象,才能確保輸入緩沖區(qū)的連續(xù)讀取) (2)該運(yùn)算符函數(shù)有兩個參數(shù),第一個參數(shù)是對istream類對象的引用,它出現(xiàn)在運(yùn)算符的左邊,第二個參數(shù)是出現(xiàn)在運(yùn)算符右邊的自定義類型對象。(3)重載運(yùn)算符函數(shù)operator的第二個參數(shù)必須是一個引用(因為輸入的值要保存在該對象中)。 用友元函數(shù)重載輸出運(yùn)算符來實現(xiàn)用戶自定義類型對象的輸出。定義運(yùn)算符函數(shù)的格式如下: ostream &am
15、p;operator (ostream &out, user-type &obj) outobj.item1; 。 outobj.itemn; return out; n與重載輸出運(yùn)算符函數(shù)一樣,重載輸出運(yùn)算符也不能是成員函數(shù)法,但可以是該類的友元函數(shù)或獨(dú)立函數(shù)。nuser-type &obj 或user-type obj ,因為輸出,不會改變obj例exam12-64 輸入輸出運(yùn)算符的重載#include class Pointpublic:Point(int i=0,int j=0) x=i;y=j;/必須友元重載 friend istream &operator(istream &in,Point &a); friend ostream &operator(istream &
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖南大學(xué)中期檢查報告
- 2025年無縫管熱連軋機(jī)項目發(fā)展計劃
- 2025年P(guān)CR診斷試劑項目發(fā)展計劃
- 中國電視桌項目投資可行性研究報告
- 全國中圖版高中信息技術(shù)必修一第二單元有效獲取信息第一節(jié)《獲取信息的渠道》教學(xué)設(shè)計
- ppp項目執(zhí)行合同范本
- 建筑鋼管合同范本
- 2025年洋娃娃家具項目可行性研究報告
- 物資營銷合同范本
- 中國西餐廳行業(yè)市場深度評估及投資戰(zhàn)略規(guī)劃報告
- 醫(yī)療垃圾轉(zhuǎn)運(yùn)流程
- 礦棉板模板施工合同
- DB31∕T 1148-2019 水量計量差錯的退補(bǔ)水量核算方法
- 2025蛇年元旦晚會
- 延長石油社招筆試題庫
- 《傳媒法的原則》課件
- 工地早班會活動記錄表(普工、塔司、信號工)
- 絕句遲日江山麗說課稿
- 高中化學(xué)教材(人教版)課本實驗(回歸課本)
- DB41T 2542-2023 燃?xì)忮仩t煙氣余熱回收利用技術(shù)規(guī)范
- DB11∕T 1847-2021 電梯井道作業(yè)平臺技術(shù)規(guī)程
評論
0/150
提交評論