面向?qū)ο蟪绦蛟O(shè)計教程(C++語言描述)(第3版)-微課版
定 價:49.5 元
叢書名:21世紀高等學校計算機類課程創(chuàng)新規(guī)劃教材·微課版
- 作者:馬石安、魏文平
- 出版時間:2018/9/1
- ISBN:9787302510628
- 出 版 社:清華大學出版社
- 中圖法分類:TP312C+
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書以面向?qū)ο蟪绦蛟O(shè)計(ObjectOriented Programming,OOP)方法為核心,并選用C 語言作為工具。
本書濃縮了作者多年來軟件開發(fā)經(jīng)驗和教學實踐體會,圍繞兩條主線進行編寫: 一條主線以通俗易懂的語言圍繞類與對象,介紹面向?qū)ο蟪绦驑?gòu)造的基本思想; 另一主線設(shè)計了豐富的實用程序,通過實踐引導讀者快速掌握使用C 語言開發(fā)面向?qū)ο蟪绦虻姆椒ê图记伞Aη笫棺x者不僅會使用C 語言編程,而且可以理解這些機制。本書共分10章,包括面向?qū)ο蟪绦蛟O(shè)計概論、從C到C 、類與對象、繼承機制、多態(tài)性和虛函數(shù)、運算符重載、模板、I/O流類庫、異常處理、綜合應用實例等內(nèi)容。
本書內(nèi)容安排循序漸進,講解深入淺出,列舉實例豐富、典型。每章提供的二維碼可觀看相應章節(jié)的視頻講解,練習題和實驗內(nèi)容與教學要求一致,并提供全方位的教學資源。
本書是為已有C語言的初步知識,準備進行面向?qū)ο蟪绦蛟O(shè)計的初學者編寫的,可作為高等院校計算機及相關(guān)專業(yè)學習面向?qū)ο蟪绦蛟O(shè)計和C 語言程序設(shè)計的教材或參考書,也可供自學者使用。
(1) 以循序漸進、深入淺出的方式引導讀者學習面向?qū)ο蟪绦蛟O(shè)計的基本思想。
(2) 以面向?qū)ο蟪绦蛟O(shè)計方法為核心,以C 語言為工具。
(3) 不需要先有扎實的C語言基礎(chǔ)。
(4) 類是構(gòu)造面向?qū)ο蟪绦虻幕締卧?br />(5) 每個關(guān)鍵概念都配以完整的C 測試實例。
(6) 每章后面配有與教學要求一致的練習題。
(7) 附錄配有與教學要求一致的實驗內(nèi)容。
前言
自從第一臺計算機誕生以來,程序設(shè)計方法與程序設(shè)計語言不斷發(fā)展。面向?qū)ο蟮某绦蛟O(shè)計使計算機解決問題的方式更符合人類的思維方式,更能直接地描述客觀世界,通過增加代碼的可重用性、可擴充性和程序自動生成功能來提高編程效率,并且大大減少軟件維護的開銷,從而被越來越多的軟件設(shè)計人員所接受。面向?qū)ο蟛辉偈擒浖_發(fā)中的一個時髦名詞,而是對軟件開發(fā)人員的基本要求。面向?qū)ο蟪绦蛟O(shè)計已經(jīng)成為程序設(shè)計領(lǐng)域的主流技術(shù)。
目前,在教學實踐中還很難找到一本合適面向?qū)ο蟪绦蛟O(shè)計的入門教材能夠兼顧到理論應用和編程實踐。我們編寫本書的目的是為了給面向?qū)ο蟪绦蛟O(shè)計初學者提供一本清晰的入門教材,該教材以面向?qū)ο蟪绦蛟O(shè)計(ObjectOriented Programming,OOP)方法為核心,并選用C 語言作為工具。本書圍繞兩條主線進行編寫: 一條主線以通俗易懂的語言圍繞類與對象,介紹面向?qū)ο蟪绦驑?gòu)造的基本思想; 另一條主線設(shè)計了豐富的實用程序,通過實踐引導學生快速掌握使用C 語言開發(fā)面向?qū)ο蟪绦虻姆椒ê图记伞?br />本書濃縮了作者多年來軟件開發(fā)和教學實踐的經(jīng)驗和體會,通過多次講授面向?qū)ο蟪绦蛟O(shè)計,作者能夠深刻理解面向?qū)ο蟪绦蛟O(shè)計編程的基本學習要求,與其他面向?qū)ο蟪绦蛟O(shè)計教材相比,本書有以下特色:
(1) 以循序漸進、深入淺出的方式引導讀者學習面向?qū)ο蟪绦蛟O(shè)計的基本思想。
本書在章節(jié)的安排上是由易到難。在講解每章的過程中,盡量用一個實例,從滿足基本要求開始,一步一步融入新的思想和方法。每章最后設(shè)計了一個應用實例,圍繞一個專用系統(tǒng)來開發(fā),重點對本章內(nèi)容進行綜合運用,同時與前面章節(jié)相呼應。
為了突出教學重點,本書實例中沒有用到C 語言的復雜結(jié)構(gòu),這樣既使程序具有可讀性,又避免了喧賓奪主。
(2) 以面向?qū)ο蟪绦蛟O(shè)計方法為核心,以C 語言為工具。
面向?qū)ο蟪绦蛟O(shè)計作為一種程序設(shè)計方法,應該是獨立于程序設(shè)計語言的。本書在講解面向?qū)ο蟪绦蛟O(shè)計的每一個新機制時,首先介紹為什么要引入這些機制,然后說明這些機制在C 內(nèi)部是如何實現(xiàn)的。我們力求使讀者不僅學會使用,而且可以理解這些機制。只有這樣讀者才可能很容易地轉(zhuǎn)向其他程序設(shè)計語言。
當然,在面向?qū)ο蟪绦蛟O(shè)計語言環(huán)境中進行程序設(shè)計,可以使面向?qū)ο笏枷氲玫礁玫闹С帧K,在學習面向?qū)ο蟪绦蛟O(shè)計的過程中,掌握程序設(shè)計語言的特征固然是重要的,但掌握面向?qū)ο蟪绦蛟O(shè)計思想?yún)s是更本質(zhì)的要求。
(3) 不需要先有扎實的C語言基礎(chǔ)。
一是C 語言對C語言最主要的擴充是引入了面向?qū)ο蟮母拍罴跋鄳奶幚頇C制。本書第2章介紹了C 語言的新特性,且重點介紹了它在后續(xù)章節(jié)中要用到的部分。二是沒有設(shè)計復雜的算法,這與本書的教學目標是一致的。
(4) 類是構(gòu)造面向?qū)ο蟪绦虻幕締卧?br />時下流行的一個觀點是,學習C 應該先從類學起。從第3章開始,書中的實例程序基本上都是由主函數(shù)加上類組成的,類是構(gòu)造面向?qū)ο蟪绦虻幕締卧。這樣有助于初學者采用面向?qū)ο笏季S方式而不是傳統(tǒng)結(jié)構(gòu)化的思維方式來解決實際問題,有助于構(gòu)造良好的程序結(jié)構(gòu),為日后處理大型程序打好基礎(chǔ)。
(5) 每個關(guān)鍵概念都配以完整的C 測試實例。
本書針對所講述的知識點提供便于理解的實例,避免枯燥無味的講解,給讀者以直觀的感受。每章后面提供一個綜合實例,如此環(huán)環(huán)緊扣,幫助讀者完成從了解、熟練到深入理解的學習過程。為了確保正確性,每個實例均已在Visual C 6.0環(huán)境下調(diào)試通過。
(6) 每章后面配有與教學要求一致的練習題。
每章后面的練習題內(nèi)容全面,形式多樣。包括問答題、選擇題、判斷題、分析程序輸出結(jié)果題和編程題等。通過這些練習題,讀者可以及時地檢查和考核對本章內(nèi)容學習和掌握的情況,教師也可以從中選出一些題作為作業(yè)題。
(7) 附錄配有與教學要求一致的實驗內(nèi)容。
安排并指導學生上機實習,對學好本課程具有重要意義。對初學者來說,理解面向?qū)ο蟪绦蛟O(shè)計的基本思想需要一個循序漸進的過程。所以本書提供的實驗內(nèi)容既有驗證性的,也有應用性的。每個實驗中除了給出實驗目的、實驗內(nèi)容外,還要求學生結(jié)合實驗結(jié)果進行分析和討論。
(8) 每章提供了教學視頻。
為了讓讀者更輕松地完成本書的學習,我們精心制作了20小時的微課教學視頻,全程語音講解,讓讀者一學就會。
為方便教師教學和學生學習,我們還編寫了配套的教學用書《面向?qū)ο蟪绦蛟O(shè)計(C 語言描述)題解及課程設(shè)計指導》,并提供書中所有源代碼和課堂教學的課件等資源,構(gòu)成一個完整的教學系列。
本書第3章~第10章由馬石安編寫,第1章~第2章以及附錄由魏文平編寫,全書由馬石安統(tǒng)一修改、整理和定稿。
本書介紹
在編寫過程中,本書參考和引用了大量書籍和文獻資料,在此,向被引用文獻的作者及給予本書幫助的所有人士表示衷心感謝,尤其感謝江漢大學領(lǐng)導和同事以及清華大學出版社領(lǐng)導和編輯的大力支持與幫助。
由于作者水平有限,加之時間倉促,書中難免存在缺點與疏漏之處,敬請讀者及同行予以批評指正。
編者
2018年3月
目錄
第1章面向?qū)ο蟪绦蛟O(shè)計概論
1.1程序設(shè)計方法
1.1.1結(jié)構(gòu)化程序設(shè)計方法
1.1.2面向?qū)ο蟪绦蛟O(shè)計方法
1.2面向?qū)ο蟪绦蛟O(shè)計的基本概念
1.2.1抽象
1.2.2封裝
1.2.3消息
1.2.4繼承
1.2.5多態(tài)
1.3面向?qū)ο蟪绦蛟O(shè)計語言
1.3.1混合型的面向?qū)ο蟪绦蛟O(shè)計語言C
1.3.2純面向?qū)ο蟪绦蛟O(shè)計語言Java
1.4C 對面向?qū)ο蟪绦蛟O(shè)計方法的支持
1.5C 程序的實現(xiàn)
1.5.1Visual C 6.0
1.5.2Visual Studio
習題
第2章從C到C
2.1C 程序基本組成
2.1.1C 程序基本結(jié)構(gòu)
2.1.2C 程序基本組成
2.2簡單的輸入輸出
2.2.1鍵盤輸入
2.2.2屏幕輸出
2.3指針與引用
2.3.1指針
2.3.2引用
2.4函數(shù)
2.4.1函數(shù)的定義與調(diào)用
2.4.2函數(shù)原型與帶默認參數(shù)的函數(shù)
2.4.3函數(shù)的參數(shù)傳遞
2.4.4內(nèi)聯(lián)函數(shù)與重載函數(shù)
2.4.5標準庫函數(shù)
2.5new和delete運算符
2.6其他若干重要的C 特性
2.6.1符號常量
2.6.2變量的定義
2.6.3強制類型轉(zhuǎn)換
2.6.4string類型
2.6.5結(jié)構(gòu)
2.7應用實例
2.7.1結(jié)構(gòu)體的定義
2.7.2主要函數(shù)的實現(xiàn)
2.7.3程序的主函數(shù)
習題
第3章類與對象
3.1類
3.1.1類的定義
3.1.2類成員的訪問控制
3.1.3成員函數(shù)的實現(xiàn)
3.2對象
3.2.1對象的聲明
3.2.2對象的創(chuàng)建和銷毀
3.2.3對象成員的訪問
3.3構(gòu)造函數(shù)與析構(gòu)函數(shù)
3.3.1構(gòu)造函數(shù)
3.3.2析構(gòu)函數(shù)
3.3.3拷貝構(gòu)造函數(shù)
3.4this指針
3.5子對象和堆對象
3.5.1子對象
3.5.2堆對象
3.6類的靜態(tài)成員
3.6.1靜態(tài)數(shù)據(jù)成員
3.6.2靜態(tài)成員函數(shù)
3.7類的友元
3.7.1友元函數(shù)
3.7.2友元類
3.8應用實例
3.8.1Student類的定義
3.8.2Student類中函數(shù)的實現(xiàn)
3.8.3靜態(tài)成員的初始化及程序的主函數(shù)
習題
第4章繼承機制
4.1基類和派生類
4.1.1繼承和派生的基本概念
4.1.2繼承的種類
4.2單繼承
4.3派生類的訪問控制
4.3.1公有繼承
4.3.2私有繼承
4.3.3保護繼承
4.4多繼承
4.4.1多繼承的定義格式
4.4.2二義性和支配規(guī)則
4.4.3虛基類
4.5繼承機制下的構(gòu)造函數(shù)與析構(gòu)函數(shù)
4.5.1繼承機制下構(gòu)造函數(shù)的調(diào)用順序
4.5.2派生類構(gòu)造函數(shù)的規(guī)則
4.5.3繼承機制下析構(gòu)函數(shù)的調(diào)用順序
4.6應用實例
4.6.1保護成員的作用
4.6.2私有繼承
習題
第5章多態(tài)性和虛函數(shù)
5.1靜態(tài)聯(lián)編與動態(tài)聯(lián)編
5.1.1靜態(tài)聯(lián)編
5.1.2動態(tài)聯(lián)編
5.2虛函數(shù)
5.2.1虛函數(shù)的作用
5.2.2虛函數(shù)與一般重載函數(shù)的區(qū)別
5.2.3繼承虛屬性
5.3成員函數(shù)中調(diào)用虛函數(shù)
5.4構(gòu)造函數(shù)和析構(gòu)函數(shù)中調(diào)用虛函數(shù)
5.5純虛函數(shù)和抽象類
5.5.1純虛函數(shù)
5.5.2抽象類
5.6虛析構(gòu)函數(shù)
5.6.1虛析構(gòu)函數(shù)的定義與使用
5.6.2虛析構(gòu)函數(shù)的必要性
5.7應用實例
5.7.1類的設(shè)計
5.7.2基類Employee的定義
5.7.3兼職技術(shù)人員類Technician的定義
5.7.4銷售員類Salesman的定義
5.7.5經(jīng)理類Manager的定義
5.7.6銷售經(jīng)理類Salesmanager的定義
5.7.7編號的初始化與主函數(shù)
習題
第6章運算符重載
6.1運算符重載的規(guī)則
6.1.1運算符重載的規(guī)則
6.1.2編譯程序選擇重載運算符的規(guī)則
6.2運算符重載的形式
6.2.1用成員函數(shù)重載運算符
6.2.2用友元函數(shù)重載運算符
6.2.3兩種運算符重載形式的比較
6.3單目運算符重載
6.4賦值運算符重載
6.4.1淺拷貝與深拷貝
6.4.2重載賦值運算符的格式
6.4.3重載賦值運算符函數(shù)的返回值
6.4.4賦值運算符重載函數(shù)與拷貝構(gòu)造函數(shù)的區(qū)別
6.5特殊運算符重載
6.5.1[]運算符重載
6.5.2()運算符重載
6.6類類型轉(zhuǎn)換運算符重載
6.6.1基本類型到類類型的轉(zhuǎn)換
6.6.2類類型到基本類型的轉(zhuǎn)換
6.7應用實例
習題
第7章模板
7.1模板的概念
7.1.1強類型的嚴格性與靈活性
7.1.2解決沖突的途徑
7.1.3模板的概念
7.2函數(shù)模板
7.2.1函數(shù)模板的定義
7.2.2函數(shù)模板的實例化
7.2.3函數(shù)模板的重載
7.3類模板
7.3.1類模板定義
7.3.2類模板的實例化
7.3.3使用函數(shù)類型參數(shù)的類模板
7.3.4使用默認參數(shù)的類模板
7.4標準模板庫STL
7.4.1容器
7.4.2迭代器
7.4.3算法
7.5應用實例
7.5.1通過自定義類模板對雙向鏈表進行基本操作
7.5.2通過STL對雙向鏈表進行基本操作
習題
第8章I/O流類庫
8.1概述
8.1.1流的概念
8.1.2流類庫
8.1.3支持文件的流類
8.2格式化輸入輸出
8.2.1使用ios類的成員函數(shù)進行格式控制
8.2.2使用控制符進行格式控制
8.3重載流的插入符和提取符
8.4I/O常用成員函數(shù)
8.4.1輸入流的常用成員函數(shù)
8.4.2輸出流的常用成員函數(shù)
8.5流的錯誤處理
8.5.1I/O流的錯誤狀態(tài)字
8.5.2I/O流的狀態(tài)函數(shù)
8.6文件流操作
8.6.1文件流
8.6.2文件的打開與關(guān)閉
8.6.3文件的讀寫
8.7應用實例
8.7.1定義類
8.7.2數(shù)據(jù)輸入函數(shù)
8.7.3數(shù)據(jù)顯示函數(shù)
8.7.4數(shù)據(jù)查找函數(shù)
8.7.5數(shù)據(jù)插入函數(shù)
8.7.6主函數(shù)
習題
第9章異常處理
9.1異常處理的基本思想
9.1.1異常處理的概念
9.1.2異常處理的基本思想
9.2異常處理的實現(xiàn)
9.2.1異常處理的語法
9.2.2異常處理的執(zhí)行過程
9.2.3異常接口聲明
9.2.4標準庫的異常處理
9.3定義自己的異常類
9.4異常的逐層傳遞
9.5異常處理中的構(gòu)造與析構(gòu)
9.6應用實例
9.6.1采用自定義異常類
9.6.2采用標準異常類
習題
第10章綜合應用實例
10.1設(shè)計任務與要求
10.2程序的總體結(jié)構(gòu)
10.3詳細設(shè)計
10.3.1分數(shù)類設(shè)計
10.3.2異常類設(shè)計
10.3.3測試函數(shù)設(shè)計
10.4程序清單
10.5實例輸出
附錄實驗
實驗1簡單的C 程序(2學時)
實驗2引用與函數(shù)(2學時)
實驗3構(gòu)造函數(shù)與析構(gòu)函數(shù)(2學時)
實驗4靜態(tài)成員與友元(4學時)
實驗5繼承與派生(4學時)
實驗6多態(tài)性與虛函數(shù)(4學時)
實驗7運算符重載(2學時)
實驗8模板(2學時)
實驗9I/O流(2學時)
實驗10異常處理(2學時)
參考文獻