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