《高等教育計算機(jī)學(xué)科“應(yīng)用型”規(guī)劃教材·C/C++程序設(shè)計教程:面向?qū)ο蠓謨裕ǖ?版)》分為面向過程和面向?qū)ο髢蓚分冊。面向?qū)ο蠓謨栽敿?xì)闡述了C++語言中面向?qū)ο蟪绦蛟O(shè)計的語法和思想。主要內(nèi)容包括類和對象、繼承與派生、多態(tài)性、輸入/輸出流、異常處理及命名空間、模板、標(biāo)準(zhǔn)模板庫STL介紹及應(yīng)用,以及面向?qū)ο蟪绦蛟O(shè)計實(shí)例。書中通過流行的UML工具描述C++類,內(nèi)容講解清晰、實(shí)例豐富,力避代碼復(fù)雜冗長,注重程序設(shè)計思想。簡短的實(shí)例和UML圖特別有助于初學(xué)者更好地理解、把握解決問題的精髓,幫助讀者快速掌握面向?qū)ο蟪绦蛟O(shè)計的基本方法。
本書的特點(diǎn)是實(shí)例豐富,重點(diǎn)突出,敘述深入淺出,分析問題透徹,既有完整的語法,又有大量的實(shí)例,突出程序設(shè)計的思想和方法,將C語言程序設(shè)計和C++程序設(shè)計有機(jī)地統(tǒng)一。特別適合作為計算機(jī)學(xué)科各應(yīng)用型本科、專科的C語言程序設(shè)計和C++程序設(shè)計的教材,也可作為其他理工科各專業(yè)的教材及相關(guān)技術(shù)人員的自學(xué)參考書。
前言
本書的主要作者都是有著豐富教學(xué)經(jīng)驗的一線教師,從事C/C++程序設(shè)計課程教學(xué)多年,深知學(xué)生在學(xué)習(xí)C++程序設(shè)計這門課程后,對程序設(shè)計方法、算法設(shè)計、調(diào)試程序、習(xí)題解答的茫然和問題,因此本書在介紹理論知識、相關(guān)概念和語言語法時,始終強(qiáng)調(diào)其在程序設(shè)計中的作用,使語言語法與程序設(shè)計相結(jié)合。同類書籍大部分偏重于對語言語法和概念的介紹,雖然在書中有針對語法和知識點(diǎn)的程序?qū)嵗珜W(xué)生對每章內(nèi)容在實(shí)際程序設(shè)計中的作用缺乏了解,而本書每章后都附有針對性較強(qiáng)的應(yīng)用實(shí)例分析,盡可能使初學(xué)者在學(xué)習(xí)每章的內(nèi)容后,即能夠獨(dú)立設(shè)計程序、解決實(shí)際問題,而不至于無從下手。本書有以下五個鮮明特點(diǎn):
第一,改變了傳統(tǒng)的教學(xué)模式。先講C語言程序設(shè)計,再講C++對C語言的擴(kuò)展、面向?qū)ο蟮某绦蛟O(shè)計。本教材將C/C++語言的學(xué)習(xí)很好地融在一起,讓讀者把面向過程和面向?qū)ο蟮某绦蛟O(shè)計方法有機(jī)地結(jié)合在一起。面向過程和面向?qū)ο髢煞謨远冀y(tǒng)一使用Visual C++ 6.0編譯器。
第二,改變了傳統(tǒng)教材以語言、語法學(xué)習(xí)為重點(diǎn)的缺陷,本教材從基本的語言、語法學(xué)習(xí)上升到程序的“設(shè)計、算法、編程、調(diào)試”層次。為了讓學(xué)生更好地掌握程序開發(fā)思想、方法和算法,書中提供了大量簡短精辟的代碼,有助于初學(xué)者學(xué)習(xí)解決問題的精髓。在每章后都有一節(jié)關(guān)于程序綜合設(shè)計的內(nèi)容,有一個或多個較大的程序,以幫助學(xué)生更好地掌握程序設(shè)計方法和解決實(shí)際問題的能力。
第三,教材強(qiáng)調(diào)程序的設(shè)計方法,大量例題配有流程圖、N-S圖和UML圖,即突出程序的算法和設(shè)計,而不僅是語法和編程,培養(yǎng)學(xué)生程序設(shè)計能力和程序調(diào)試技能,養(yǎng)成好的編程習(xí)慣,為專業(yè)程序員的培養(yǎng)打下良好的基礎(chǔ)。
第四,培養(yǎng)學(xué)生面向?qū)ο蟪绦蛟O(shè)計的能力,引導(dǎo)學(xué)生建立程序設(shè)計的大局觀,幫助學(xué)生掌握從客觀事物中抽象出C++類的方法。通過系統(tǒng)的學(xué)習(xí),使學(xué)生的編程能力上一個臺階,具備解決復(fù)雜問題的程序設(shè)計能力。
第五,根據(jù)當(dāng)前實(shí)際大型軟件項目開發(fā)的需要,加大了異常處理、模板等內(nèi)容,新增STL標(biāo)準(zhǔn)模板庫,并通過流行的UML工具設(shè)計C++類。
本教材編寫充分考慮了目前應(yīng)用型本科C/C++程序設(shè)計課程教學(xué)的實(shí)際情況和存在的問題。第一,學(xué)生在大一階段的基礎(chǔ)課程較多,不可能投入過多的精力來學(xué)習(xí)本門課程;第二,學(xué)生對這門課學(xué)習(xí)的期望值很高,但對學(xué)習(xí)時可能遇到的困難估計不足;第三,學(xué)生現(xiàn)有的上機(jī)實(shí)踐條件大大改善,特別有利于貫徹先進(jìn)的精講多練的教學(xué)思想;第四,學(xué)生學(xué)會了語言的語法,仍不具備解決實(shí)際問題的能力,學(xué)生的程序設(shè)計、算法設(shè)計、編程、調(diào)試的能力相對較差。本教材作者正是考慮了學(xué)生的這些實(shí)際問題,從而精心編寫了這一套面向應(yīng)用型本科的C/C++程序設(shè)計教程,特別適合于分兩個學(xué)期系統(tǒng)講授C/C++程序設(shè)計。第1學(xué)期講授面向過程分冊,第2學(xué)期講授面向?qū)ο蠓謨浴?br /> 本面向?qū)ο蠓謨怨卜?章,第1章到第3章主要闡述面向?qū)ο蟪绦蛟O(shè)計的重要概念,包括類和對象、繼承與派生、多態(tài)性;第4章介紹輸入/輸出流技術(shù);第5章主要介紹異常的概念、異常的產(chǎn)生及異常的處理機(jī)制;第6章和第7章介紹模板和STL標(biāo)準(zhǔn)模板庫;第8章主要講述面向?qū)ο蟮姆治雠c設(shè)計方法,以實(shí)例的形式詳細(xì)介紹如何用C++進(jìn)行程序設(shè)計。
為了方便使用本教材的教師備課,我們還提供了配套的電子教案,公開放在網(wǎng)站上,供任課教師自由下載使用。相信我們多年的教學(xué)經(jīng)驗會對廣大師生的教和學(xué)有所幫助。建議本分冊的教學(xué)學(xué)時為60學(xué)時,其中理論教學(xué)為44學(xué)時,課內(nèi)上機(jī)實(shí)踐為16學(xué)時,課外上機(jī)不少于32學(xué)時。
本教材的編寫得到了河南省計算機(jī)學(xué)會的大力支持,組織了河南多所高校編寫了高等教育計算機(jī)學(xué)科“應(yīng)用型”系列教材。參編本教材的高校有中原工學(xué)院、鄭州大學(xué)、河南科技大學(xué)、鄭州輕工業(yè)學(xué)院。
本書由鄭秋生任主編,第1章和附錄由王海龍和夏敏捷編寫,第2章由羅菁和潘惠勇編寫,第3章由李曉宇編寫,第4章由冀治航編寫,第5章由鄭秋生編寫,第6章和第7章由王文奇編寫,第8章由劉鳳華編寫。全書最終由鄭秋生修改并統(tǒng)稿。鄭州大學(xué)王黎明老師為本書提出改進(jìn)意見,在此謹(jǐn)向他們表示衷心的感謝。
由于編者水平有限,時間倉促,書中難免有錯,敬請廣大讀者批評指正,在此表示感謝。作者E-mail:zqs@zzti.edu.cn。
編 者
2011年9月
第1章 類和對象
1.1 面向?qū)ο蟪绦蛟O(shè)計概述
1.2 面向?qū)ο蟪绦蛟O(shè)計的基本概念
1.2.1 類
1.2.2 對象
1.2.3 封裝與數(shù)據(jù)隱藏
1.2.4 繼承
1.2.5 多態(tài)性
1.2.6 消息
1.3 類和對象的定義
1.3.1 類的定義
1.3.2 成員函數(shù)的定義
1.3.3 類對象的定義
1.3.4 對象成員的訪問
1.3.5 類對象的內(nèi)存分配
1.3.6 this指針
1.4 構(gòu)造函數(shù)和析構(gòu)函數(shù)
1.4.1 構(gòu)造函數(shù)的定義
1.4.2 構(gòu)造函數(shù)的重載
1.4.3 帶默認(rèn)參數(shù)的構(gòu)造函數(shù)
1.4.4 析構(gòu)函數(shù)
1.4.5 拷貝構(gòu)造函數(shù)和默認(rèn)拷貝構(gòu)造函數(shù)
1.5 類和對象的進(jìn)一步應(yīng)用
1.5.1 堆對象
1.5.2 對象數(shù)組
1.5.3 類對象作為成員
1.5.4 面向?qū)ο蟪绦蛑械某A?br />1.6 靜態(tài)成員
1.6.1 靜態(tài)數(shù)據(jù)成員
1.6.2 靜態(tài)成員函數(shù)
1.7 友元函數(shù)和友元類
1.7.1 友元函數(shù)
1.7.2 友元類
1.8 string類
1.8.1 char型字符串
1.8.2 string型字符串定義
1.8.3 string類構(gòu)造函數(shù)
1.8.4 string類成員函數(shù)
1.9 綜合應(yīng)用實(shí)例
習(xí)題一
第2章 繼承與派生
2.1 繼承與派生的基礎(chǔ)知識
2.1.1 繼承與派生的基本概念
2.1.2 派生類的定義
2.1.3 派生類的生成
2.2 類的繼承方式
2.2.1 公有繼承
2.2.2 私有繼承
2.2.3 保護(hù)繼承
2.2.4 繼承方式的總結(jié)和比較
2.3 派生類的構(gòu)造函數(shù)與析構(gòu)函數(shù)
2.3.1 簡單派生類的構(gòu)造函數(shù)
2.3.2 析構(gòu)函數(shù)
2.3.3 復(fù)雜派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)
2.3.4 派生友元類
2.4 基類與派生類的轉(zhuǎn)換
2.5 多重繼承
2.5.1 多重繼承的定義
2.5.2 多重繼承中的二義性問題
2.6 虛繼承和虛基類
2.6.1 虛繼承和虛基類的定義
2.6.2 虛基類及其派生類構(gòu)造函數(shù)執(zhí)行順序
2.7 綜合應(yīng)用實(shí)例
習(xí)題二
第3章 多態(tài)性
3.1 多態(tài)性的概念
3.2 運(yùn)算符重載
3.2.1 運(yùn)算符重載概述
3.2.2 雙目運(yùn)算符重載
3.2.3 賦值運(yùn)算符重載
3.2.4 單目運(yùn)算符重載
3.2.5 下標(biāo)運(yùn)算符重載
3.2.6 類型轉(zhuǎn)換運(yùn)算符重載
3.3 聯(lián)編和虛函數(shù)
3.3.1 靜態(tài)聯(lián)編和動態(tài)聯(lián)編
3.3.2 虛函數(shù)的引入
3.3.3 虛函數(shù)的定義和多態(tài)性
3.3.4 使用引用變量的多態(tài)性
3.3.5 動態(tài)聯(lián)編的要素——指針(引用)變量
3.3.6 動態(tài)聯(lián)編的工作機(jī)制
3.3.7 虛析構(gòu)函數(shù)
3.4 純虛函數(shù)和抽象類
3.4.1 純虛函數(shù)
3.4.2 抽象類
3.5 綜合應(yīng)用實(shí)例
習(xí)題三
第4章 輸入/輸出流
4.1 輸入/輸出流的基本概念
4.2 輸入/輸出流類體系
4.2.1 流類庫
4.2.2 標(biāo)準(zhǔn)流對象
4.3 輸入/輸出流的操作
4.3.1 輸入/輸出流的格式化
4.3.2 用流成員函數(shù)實(shí)現(xiàn)輸入/輸出
4.4 文件流和文件的輸入/輸出
4.4.1 文件流類與文件流對象
4.4.2 定義文件流對象
4.4.3 文件的打開和關(guān)閉
4.4.4 文本文件的輸入/輸出(讀/寫)
4.4.5 二進(jìn)制文件的輸入/輸出(讀/寫)
4.4.6 文件的隨機(jī)訪問
4.5 字符串流
4.6 重載插入和提取運(yùn)算符
4.7 綜合應(yīng)用實(shí)例
習(xí)題四
第5章 異常處理及命名空間
5.1 異常處理
5.1.1 異常的概念
5.1.2 異常處理機(jī)制
5.1.3 異常函數(shù)
5.1.4 標(biāo)準(zhǔn)C++庫中的異常類
5.2 命名空間
5.2.1 命名空間的定義
5.2.2 命名空間的使用
5.2.3 標(biāo)準(zhǔn)命名空間std
5.2.4 無名空間
5.3 綜合應(yīng)用實(shí)例
習(xí)題五
第6章 模板
6.1 函數(shù)模板
6.1.1 函數(shù)模板語法
6.1.2 函數(shù)模板實(shí)例化
6.1.3 使用函數(shù)模板實(shí)例
6.2 類模板
6.2.1 類模板的語法
6.2.2 類模板實(shí)例化
6.2.3 派生類和類模板
6.3 綜合應(yīng)用實(shí)例
習(xí)題六
第7章 標(biāo)準(zhǔn)模板庫STL介紹及應(yīng)用
7.1 標(biāo)準(zhǔn)模板庫STL的概念
7.1.1 什么是STL
7.1.2 STL組成部分
7.1.3 STL對C++的影響
7.2 容器(Container)
7.2.1 容器簡介
7.2.2 容器的結(jié)構(gòu)
7.2.3 容器的使用
7.3 迭代器(Iterator)
7.3.1 輸入迭代器
7.3.2 輸出迭代器
7.3.3 前向迭代器
7.3.4 雙向迭代器
7.3.5 隨機(jī)存取迭代器
7.3.6 迭代器的使用
7.4 算法(Algorithm)
7.4.1 算法和函數(shù)對象
7.4.2 算法分類介紹
7.5 綜合應(yīng)用實(shí)例
習(xí)題七
第8章 面向?qū)ο蟪绦蛟O(shè)計實(shí)例
8.1 圖書管理系統(tǒng)需求分析
8.1.1 需求分析的任務(wù)
8.1.2 圖書管理系統(tǒng)需求描述
8.1.3 圖書管理系統(tǒng)需求
8.2 圖書管理系統(tǒng)需求模型
8.2.1 圖書管理系統(tǒng)用例圖
8.2.2 圖書管理系統(tǒng)用例規(guī)約
8.3 圖書管理系統(tǒng)設(shè)計
8.3.1 分析類
8.3.2 順序圖
8.3.3 設(shè)計類圖
8.3.4 系統(tǒng)結(jié)構(gòu)設(shè)計
8.4 圖書管理系統(tǒng)實(shí)現(xiàn)
8.4.1 類的定義
8.4.2 類的實(shí)現(xiàn)
8.4.3 用戶界面設(shè)計
8.4.4 系統(tǒng)主函數(shù)
8.4.5 系統(tǒng)管理員功能模塊
8.4.6 普通管理員功能
習(xí)題八
附錄A 常用容器與算法介紹
附錄B 統(tǒng)一建模語言(UML)
參考文獻(xiàn)