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