《面向?qū)ο蟪绦蛟O(shè)計(jì)》教案.doc
《《面向?qū)ο蟪绦蛟O(shè)計(jì)》教案.doc》由會員分享,可在線閱讀,更多相關(guān)《《面向?qū)ο蟪绦蛟O(shè)計(jì)》教案.doc(104頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
教 案 分 院 (部) 信息學(xué)院 教 研 室 計(jì)算機(jī)科學(xué)與技術(shù) 課 程 名 稱 面向?qū)ο蟪绦蛟O(shè)計(jì) 教 師 姓 名 金淑娟 職 稱 講 師 使 用 教 材 C++語言程序設(shè)計(jì) 教 務(wù) 處 制 授課內(nèi)容: 第一章 面向?qū)ο蟪绦蛟O(shè)計(jì)概念 授課時數(shù) 6 教學(xué)目的及要求: 了解:程序設(shè)計(jì)方法的發(fā)展過程,面向?qū)ο笳Z言的特點(diǎn)。 掌握:面向?qū)ο蟮母拍睿嫦驅(qū)ο蟮某绦蜷_發(fā)過程。 教學(xué)基本內(nèi)容: 程序設(shè)計(jì)方法的發(fā)展過程;面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思想及概念,面向?qū)ο蟪绦蛟O(shè)計(jì)的要點(diǎn)及開發(fā)過程。 重點(diǎn)及難點(diǎn): 面向?qū)ο蟮母拍睿嫦驅(qū)ο蟮某绦蜷_發(fā)過程。 教學(xué)方法:□講授法√ □討論法√ □自學(xué)指導(dǎo)法 □其他√ 教學(xué)手段:□多媒體√ □實(shí)物 □模型 □掛圖 □音像 □其他 板書設(shè)計(jì): 討論、思考題、作業(yè): 1. 敘述面向?qū)ο蠡舅枷氲奶攸c(diǎn)。 2. 敘述面向?qū)ο蟮某绦蛟O(shè)計(jì)方法與傳統(tǒng)面向過程的程序設(shè)計(jì)方法有何不同。 3. 什么是類,什么是對象,類和對象是怎樣的關(guān)系? 4. 抽象包括哪兩方面的含義? 5. 什么是封裝,它具有怎樣的特點(diǎn)? 6. 什么是多態(tài)?多態(tài)的實(shí)現(xiàn)方式及作用有哪些? 7. 什么叫對象的封裝性?什么叫信息隱藏?C++語言是怎樣實(shí)現(xiàn)信息隱藏的? 8. 什么叫繼承?什么叫派生? 9. 什么叫多態(tài)性?多態(tài)性主要有哪幾種? 10. 什么叫運(yùn)行時的多態(tài)性?C++語言中是怎樣實(shí)現(xiàn)運(yùn)行時的多態(tài)性的? 參考資料(含參考書目、文獻(xiàn)等): 1、Harvey M.Deitel及Paul James Deitel著,C++大學(xué)教程(第三版),電子工業(yè)出版社。 2、劉正林,面向?qū)ο蟪绦蛟O(shè)計(jì),華中科技大學(xué)出版社。 3、周生炳等,面向?qū)ο蟪绦蛟O(shè)計(jì),清華大學(xué)出版社。 4、揣錦華,面向?qū)ο蟪绦蛟O(shè)計(jì)與VC++實(shí)踐,西安電子科技大學(xué)出版社。 5、王育堅(jiān)編,面向?qū)ο缶幊探坛? 清華大學(xué)出版社。 6、王萍編著,C++面向?qū)ο蟪绦蛟O(shè)計(jì), 清華大學(xué)出版社出版。 7、徐孝凱等編,面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn), 中央廣播電視大學(xué)出版社出版。 第一節(jié) 面向?qū)ο蟮姆椒? 一、面向?qū)ο蟮恼Z言 出發(fā)點(diǎn): 更直接地描述客觀世界中存在的事物(對象)以及它們之間的關(guān)系。 特點(diǎn): 是高級語言。 將客觀事物看作具有屬性和行為的對象。 通過抽象找出同一類對象的共同屬性和行為,形成類。 通過類的繼承與多態(tài)實(shí)現(xiàn)代碼重用。 優(yōu)點(diǎn): 使程序能夠比較直接地反問題域的本來面目,軟件開發(fā)人員能夠利用人類認(rèn)識事物所采用的一般思維方法來進(jìn)行軟件開發(fā)。 二、程序設(shè)計(jì)方法的發(fā)展歷程 1.面向過程的程序設(shè)計(jì)方法 程序的目的:用于數(shù)學(xué)計(jì)算。 主要工作:設(shè)計(jì)求解問題的過程。 缺點(diǎn):對于龐大、復(fù)雜的程序難以開發(fā)和維護(hù)。 2.面向過程的結(jié)構(gòu)化程序設(shè)計(jì)方法 設(shè)計(jì)思路: 自頂向下、逐步求精。采用模塊分解與功能抽象,自頂向下、分而治之。 程序結(jié)構(gòu): 按功能劃分為若干個基本模塊,形成一個樹狀結(jié)構(gòu)。各模塊間的關(guān)系盡可能簡 單,功能上相對獨(dú)立;每一模塊內(nèi)部均是由順序、選擇和循環(huán)三種基本結(jié)構(gòu)組 成。其模塊化實(shí)現(xiàn)的具體方法是使用子程序。 優(yōu)點(diǎn): 有效地將一個較復(fù)雜的程序系統(tǒng)設(shè)計(jì)任務(wù)分解成許多易于控制和處理的子任 務(wù),便于開發(fā)和維護(hù)。 缺點(diǎn): 可重用性差、數(shù)據(jù)安全性差、難以開發(fā)大型軟件和圖形界面的應(yīng)用軟件。具體有 以下幾點(diǎn): – 把數(shù)據(jù)和處理數(shù)據(jù)的過程分離為相互獨(dú)立的實(shí)體。 – 當(dāng)數(shù)據(jù)結(jié)構(gòu)改變時,所有相關(guān)的處理過程都要進(jìn)行相應(yīng)的修改。 – 每一種相對于老問題的新方法都要帶來額外的開銷,程序的可重用性差。 – 圖形用戶界面的應(yīng)用程序,很難用過程來描述和實(shí)現(xiàn),開發(fā)和維護(hù)也都很困難。 3.面向?qū)ο蟮姆椒? 方法: ? 將數(shù)據(jù)及對數(shù)據(jù)的操作方法封裝在一起,作為一個相互依存、不可分離 的整體——對象。 ? 對同類型對象抽象出其共性,形成類。 ? 類通過一個簡單的外部接口,與外界發(fā)生關(guān)系。 ? 對象與對象之間通過消息進(jìn)行通訊。 優(yōu)點(diǎn): ? 程序模塊間的關(guān)系更為簡單,程序模塊的獨(dú)立性、數(shù)據(jù)的安全性就有了 良好的保障。 ? 通過繼承與多態(tài)性,可以大大提高程序的可重用性,使得軟件的開發(fā)和 維護(hù)都更為方便。 三、面向?qū)ο蟮幕靖拍? 1.一般意義上的對象: ? 是現(xiàn)實(shí)世界中一個實(shí)際存在的事物。 ? 可以是有形的(比如一輛汽車),也可以是無形的(比如一項(xiàng)計(jì)劃)。 ? 是構(gòu)成世界的一個獨(dú)立單位,具有: ? 靜態(tài)特征--可以用某種數(shù)據(jù)來描述 ? 動態(tài)特征--對象所表現(xiàn)的行為或具有的功能 2. 面向?qū)ο蠓椒ㄖ械膶ο螅? ? 是系統(tǒng)中用來描述客觀事物的一個實(shí)體,它是用來構(gòu)成系統(tǒng)的一個基 本單位。對象由一組屬性和一組行為構(gòu)成。 ? 屬性--用來描述對象靜態(tài)特征的數(shù)據(jù)項(xiàng)。 ? 行為--用來描述對象動態(tài)特征的操作序列。 3.分類所依據(jù)的原則——抽象 ? 忽略事物的非本質(zhì)特征,只注意那些與當(dāng)前目標(biāo)有關(guān)的本質(zhì)特征,從而找出事物的共性,把具有共同性質(zhì)的事物劃分為一類,得出一個抽象的概念。 例如,石頭、樹木、汽車、分類——人類通常的思維方法。 ? 房屋等都是人們在長期的生產(chǎn)和生活實(shí)踐中抽象出的概念。 4.面向?qū)ο蠓椒ㄖ械?類" ? 具有相同屬性和服務(wù)的一組對象的集合。 ? 為屬于該類的全部對象提供了抽象的描述,包括屬性和行為兩個主要部分。 ? 類與對象的關(guān)系: 猶如模具與鑄件之間的關(guān)系,一個屬于某類的對象稱為該類的一個實(shí)例。 5. 面向?qū)ο蠓椒ㄖ械?封裝" ? 把對象的屬性和服務(wù)結(jié)合成一個獨(dú)立的系統(tǒng)單元。 ? 盡可能隱蔽對象的內(nèi)部細(xì)節(jié)。對外形成一個邊界(或者說一道屏障),只保 留有限的對外接口使之與外部發(fā)生聯(lián)系。 6.面向?qū)ο蠓椒ㄖ械?繼承" ? 繼承對于軟件復(fù)用有著重要意義,是面向?qū)ο蠹夹g(shù)能夠提高軟件開發(fā)效率 的重要原因之一。 ? 定義:特殊類的對象擁有其一般類的全部屬性與服務(wù),稱作特殊類對一般類 的繼承。 例如:將輪船作為一個一般類,客輪便是一個特殊類。 7. 面向?qū)ο蠓椒ㄖ械?多態(tài)性" ? 多態(tài)是指在一般類中定義的屬性或行為,被特殊類繼承之后,可以具有不 同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。這使得同一個屬性或行為在一般類及其 各個特殊類中具有不同的語義。 例如:數(shù)的加法->實(shí)數(shù)的加法->復(fù)數(shù)的加法 第二節(jié) 面向?qū)ο蟮能浖_發(fā) 面向?qū)ο蟮能浖こ蹋ㄜ浖_發(fā))是面向?qū)ο蠓椒ㄔ谲浖こ填I(lǐng)域的全面應(yīng)用。它包括: – 面向?qū)ο蟮姆治觯∣OA) – 面向?qū)ο蟮脑O(shè)計(jì)(OOD) – 面向?qū)ο蟮木幊蹋∣OP) – 面向?qū)ο蟮臏y試(OOT) – 面向?qū)ο蟮能浖S護(hù)(OOSM) 一、系統(tǒng)分析 ? 系統(tǒng)分析階段應(yīng)該扼要精確地抽象出系統(tǒng)必須做什么,但是不關(guān)心如何去實(shí) 現(xiàn)。 ? 面向?qū)ο蟮南到y(tǒng)分析,直接用問題域中客觀存在的事物建立模型中的對象,對 單個事物及事物之間的關(guān)系,都保留他們的原貌,不做轉(zhuǎn)換,也不打破原有界 限而重新組合,因此能夠很好地映射客觀事物。 二、設(shè)計(jì) ? 針對系統(tǒng)的一個具體實(shí)現(xiàn)運(yùn)用面向?qū)ο蟮姆椒?。其中包括兩方面的工作? – 把OOA模型直接搬到OOD,作為OOD的一部分。 – 針對具體實(shí)現(xiàn)中的人機(jī)界面、數(shù)據(jù)存儲、任務(wù)管理等因素補(bǔ)充一些與 實(shí)現(xiàn)有關(guān)的部分。 三、編程 OOP工作就是用一種面向?qū)ο蟮木幊陶Z言把OOD模型中的每個成分書寫出來,是面向?qū)ο蟮能浖_發(fā)最終落實(shí)的重要階段。 四、測試 ? 測試的任務(wù)是發(fā)現(xiàn)軟件中的錯誤。 ? 在面向?qū)ο蟮能浖y試中繼續(xù)運(yùn)用面向?qū)ο蟮母拍钆c原則來組織測試,以對象的 類作為基本測試單位,可以更準(zhǔn)確的發(fā)現(xiàn)程序錯誤并提高測試效率。 五、維護(hù) 將軟件交付使用后,工作并沒有完結(jié),還要根據(jù)軟件的運(yùn)行情況和用戶需求,不 斷改進(jìn)系統(tǒng)。 使用面向?qū)ο蟮姆椒ㄩ_發(fā)的軟件,其程序與問題域是一致的,因此,在維護(hù)階段運(yùn) 用面向?qū)ο蟮姆椒梢源蟠筇岣哕浖S護(hù)的效率。 授課內(nèi)容: 第二章 類與對象 授課時數(shù) 18 教學(xué)目的及要求: 掌握:類定義的方法和存取級別。 掌握:類的成員變量和成員函數(shù)的定義和使用,以及對象的定義。 了解:友元函數(shù)和友元類。 掌握:構(gòu)造函數(shù)和析構(gòu)函數(shù)。 掌握:靜態(tài)類成員變量和成員函數(shù)的定義和使用方法。 掌握:內(nèi)聯(lián)函數(shù)的定義和使用方法。 掌握:對象指針及對象引用的使用。 了解:容器類的定義。 掌握:在函數(shù)中對象傳遞的機(jī)制。 教學(xué)基本內(nèi)容: 類的聲明,對象的定義,構(gòu)造函數(shù)、析構(gòu)函數(shù),對象指針,對象引用,靜態(tài)成員,友元,標(biāo)識符的作用域,對象數(shù)組,成員對象,對象的存儲類等。 重點(diǎn)與難點(diǎn): 類及類對象的定義,構(gòu)造函數(shù)、析構(gòu)函數(shù)的定義,對象指針及對象引用的使用,容器類的定義。 教學(xué)方法:□講授法√ □討論法 √ □自學(xué)指導(dǎo)法 □其他√ 教學(xué)手段:□多媒體√ □實(shí)物 □模型 □掛圖 □音像 □其他 板書設(shè)計(jì): 討論、思考題: 1. 什么是類,什么是對象,類和對象是怎樣的關(guān)系? 2.?dāng)⑹鲮o態(tài)成員和一般成員的區(qū)別。 3.什么叫友元? 什么叫友元類?什么叫友元函數(shù)?什么叫友元成員函數(shù)? 4.?dāng)⑹鲇言c類的封裝性之間的關(guān)系。 5.友元方法有什么優(yōu)點(diǎn)?有什么缺點(diǎn)? 作業(yè):見書中第四章練習(xí) 參考資料(含參考書目、文獻(xiàn)等): 1、Harvey M.Deitel及Paul James Deitel著,C++大學(xué)教程(第三版),電子工業(yè)出版社。 2、劉正林,面向?qū)ο蟪绦蛟O(shè)計(jì),華中科技大學(xué)出版社。 3、周生炳等,面向?qū)ο蟪绦蛟O(shè)計(jì),清華大學(xué)出版社。 4、揣錦華,面向?qū)ο蟪绦蛟O(shè)計(jì)與VC++實(shí)踐,西安電子科技大學(xué)出版社。 5、王育堅(jiān)編,面向?qū)ο缶幊探坛? 清華大學(xué)出版社。 6、王萍編著,C++面向?qū)ο蟪绦蛟O(shè)計(jì), 清華大學(xué)出版社出版。 7、徐孝凱等編,面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn), 中央廣播電視大學(xué)出版社出版。 第一節(jié) C++的面向?qū)ο蟮母拍? 一、抽象的概念 抽象是對具體對象(問題)進(jìn)行概括,抽出這一類對象的公共性質(zhì)并加以描述的過程。 – 先注意問題的本質(zhì)及描述,其次是實(shí)現(xiàn)過程或細(xì)節(jié)。 – 數(shù)據(jù)抽象:描述某類對象的屬性或狀態(tài)(對象相互區(qū)別的物理量)。 – 代碼抽象:描述某類對象的共有的行為特征或具有的功能。 – 抽象的實(shí)現(xiàn):通過類的聲明。 二、抽象實(shí)例 1.日期 抽象實(shí)例 ? 數(shù)據(jù)抽象: int Year, int Month, int Day ? 代碼抽象: SetDate(), //設(shè)置年、月、日 IsLeapYear(),//計(jì)算某年是否為閏年 ShowDate(),//顯示年、月、日的值 抽象實(shí)例——日期類 class Date { public: void SetDate(int y, int m, int d); int IsLeapDate(); void ShowDate(); private: int Year,Month,Day; }; 2.鐘表 抽象實(shí)例-----鐘表 數(shù)據(jù)抽象: int Hour, int Minute, int Second 代碼抽象: SetTime(), ShowTime() 抽象實(shí)例——鐘表類 class Clock { public: void SetTime(int NewH, int New, int NewS); void ShowTime(); private: int Hour,Minute,Second; }; 3.抽象實(shí)例——人 數(shù)據(jù)抽象: char *name,char *gender,int age,int id 代碼抽象: 生物屬性角度: GetCloth(), Eat(), Step(),… 社會屬性角度: Work(), Promote() ,… 二、封裝 將抽象出的數(shù)據(jù)成員、代碼成員相結(jié)合,將它們視為一個整體。 – 目的是曾強(qiáng)安全性和簡化編程,使用者不必了解具體的實(shí)現(xiàn)細(xì)節(jié),而只需要通 過外部接口,以特定的訪問權(quán)限,來使用類的成員。 – 實(shí)現(xiàn)封裝:類聲明中的{} 實(shí)例: class Clock { public: void SetTime(int NewH, int NewM, int NewS); void ShowTime(); private: int Hour,Minute,Second; }; 三、繼承與派生 是C++中支持層次分類的一種機(jī)制,允許程序員在保持原有類特性的基礎(chǔ)上,進(jìn)行更具體的說明。 實(shí)現(xiàn):聲明派生類——第七章 四、多態(tài)性 ? 多態(tài):同一名稱,不同的功能實(shí)現(xiàn)方式。 ? 目的:達(dá)到行為標(biāo)識統(tǒng)一,減少程序中標(biāo)識符的個數(shù)。 ? 實(shí)現(xiàn):重載函數(shù)和虛函數(shù)——第八章 五、c++中的類 ? 類是具有相同屬性和行為的一組對象的集合,它為屬于該類的全部對象提供了 統(tǒng)一的抽象描述,其內(nèi)部包括屬性和行為兩個主要部分。 ? 利用類可以實(shí)現(xiàn)數(shù)據(jù)的封裝、隱藏、繼承與派生。 ? 利用類易于編寫大型復(fù)雜程序,其模塊化程度比C中采用函數(shù)更高。 第二節(jié) 類的定義格式 一、類的聲明 類是一種用戶自定義類型,聲明形式: class 類名稱 { public: 公有成員(外部接口) private: 私有成員 protected: 保護(hù)型成員 }; (1)類的定義格式分為說明部分和實(shí)現(xiàn)部分,說明部分用來描述該類中的成員,包括數(shù)據(jù)成員和成員函數(shù),成員函數(shù)使用來對數(shù)據(jù)成員進(jìn)行操作的即“方法”,實(shí)現(xiàn)部分用來定義各種成員函數(shù),描述這些成員函數(shù)如何實(shí)現(xiàn)隊(duì)數(shù)據(jù)成員的操作。 (2)類由類頭和類體兩部分組成。類頭由關(guān)鍵字class和類名組成,類名是由用戶定義的標(biāo)識符,類頭用來向便宜系統(tǒng)聲明定義了一個新的class類型;而類體是對類的組織形式進(jìn)行具體的描述,它由訪問限制符(private,protected,public)、數(shù)據(jù)成員和成員函數(shù)組成,整個類體用一對大括號括起來,完整地表達(dá)對類的描述。 (3)class允許隱藏內(nèi)部成員,它依靠類定義中的3個訪問限制符public\private\protected來確定隱藏的程度,它們將類體分成3 個大部分。 (4)類的定義只是定義了某種類的組織形式,類似于結(jié)構(gòu)體的定義,編譯系統(tǒng)并不給class類型的每個數(shù)據(jù)成員分配具體的內(nèi)存空間。 二、類成員的訪問控制 3個訪問限制符將類體分成3個大部分,每一部分都可以有數(shù)據(jù)成員和成員函數(shù),也可以只有數(shù)據(jù)成員或只有成員函數(shù),但不同的訪問限制符規(guī)定了該部分所具有的訪問權(quán)限。 1.Public(公有類型的成員) 在關(guān)鍵字public后面聲明,這一部分是透明的,它的數(shù)據(jù)成員和成員函數(shù)是開放的,即可以由本類的成員函數(shù)直接訪問,也可以由任何外部函數(shù)來訪問,它們是類與外部的接口。外部訪問是通過“對象名.公有成員名”進(jìn)行。 2.Private(私有類型的成員) 在關(guān)鍵字private后面聲明,這一部分象一個黑盒子,完全隱藏的。它只允許本類中的成員函數(shù)直接訪問(既在成員函數(shù)體內(nèi)直呼其名寫出成員名),象日期類Date的SetDate( )成員函數(shù)體內(nèi),可以直接寫“year=y;month=m,day=d;”等語句;而類外部的任何函數(shù)都不能訪問。如不允許編寫成”對象名.私有成員名“形式。 如果緊跟在類名稱的后面聲明私有成員,則關(guān)鍵字private可以省略。 3.Protected(保護(hù)類型成員) 這一部分是半透明的,與private類似,其差別表現(xiàn)在繼承與派生時對派生類的影響不同。它可由本類成員函數(shù)或它的派生類成員函數(shù)直接訪問,而其它的函數(shù)不允許訪問此部分。 三、數(shù)據(jù)成員 與一般的變量聲明相同,但需要將它放在類的聲明體中。 class Clock { public: void SetTime(int NewH, int NewM, int NewS);//聲明設(shè)置時鐘的成員函數(shù) void ShowTime();//聲明顯示時鐘的成員函數(shù) private: int Hour, Minute, Second; }; void Clock :: SetTime(int NewH, int NewM, int NewS) //設(shè)置時鐘的成員函數(shù)在類體外的實(shí)現(xiàn) { Hour=NewH; Minute=NewM; Second=NewS; } void Clock :: ShowTime() //顯示時鐘的成員函數(shù)在類體外的實(shí)現(xiàn) { cout<- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 面向?qū)ο蟪绦蛟O(shè)計(jì) 面向 對象 程序設(shè)計(jì) 教案
鏈接地址:http://www.3dchina-expo.com/p-8937831.html