清華大學計算機基礎教育課程系列教材:C++程序設計基礎教程
定 價:33 元
- 作者:鄭莉 ,董淵 著
- 出版時間:2010/8/1
- ISBN:9787302233619
- 出 版 社:清華大學出版社
- 中圖法分類:TP312C
- 頁碼:336
- 紙張:膠版紙
- 版次:1
- 開本:16開
《C++程序設計基礎教程》針對程序設計的初學者,以面向對象的程序設計思想為主線,以通俗易懂的方法介紹C++語言,引導讀者以最自然的方式,將人類習慣的面向對象的思維方法運用到程序設計中。主要內容包括程序設計基礎知識、類與對象的基本概念、繼承與多態(tài)以及輸入輸出流。整套教材語言生動、流暢,深入淺出。適用于各類學校的C++語言程序設計課程。
《C++程序設計基礎教程》是《C++語言程序設計》系列教材之一,根據(jù)《C++語言程序設計(第3版)》修訂而成,針對程序設計的初學者,以面向對象的程序設計思想為主線,以通俗易懂的方法介紹C++語言,引導讀者以最自然的方式,將人類習慣的面向對象的思維方法運用到程序設計中。全書以面向對象的程序設計方法貫穿始終,每一章都是首先闡述面向對象的程序設計思想和方法,由實際問題入手,然后引出必要的語法知識,在講解語法時著重從程序設計方法學的角度講述其意義和用途!禖++程序設計基礎教程》的宗旨是,不僅要使讀者掌握C++語言本身,而且要能夠對現(xiàn)實世界中較簡單的問題及其解決方法用計算機語言進行描述。 《C++語言程序設計》系列教材提供了全面和細致的學習輔助資源,可以為不同讀者提供個性化的學習輔導。
一、 版本說明
本書是《C++語言程序設計(第4版)》的姊妹篇!禖++語言程序設計》第1版于1999年出版,第2版于2001年出版,第3版于2003年出版。在前三版基礎上,廣泛聽取了讀者和同行的建議,參考了最新的資料,并根據(jù)作者本人在授課過程中的經驗,針對不同的教學要求,將這本書分成了兩個不同的版本: 《C++程序設計基礎教程》和《C++語言程序設計(第四版)》。本書適合用于程序設計課程學時較少的學校和專業(yè)。
與《C++語言程序設計(第3版)》相比,本書主要在以下方面作了修訂:
1. 去掉了原來的第9、10、12、13章。
2. 從第4章開始,每章編寫了新的綜合實例“個人銀行賬戶管理程序”.
3. 部分例題有更新。
與《C++語言程序設計(第4版)》相比,去年了第9、10、12章,去掉了每章的“深度探索”一節(jié)。
二、 本書的編寫背景
C++是從C語言發(fā)展演變而來的一種面向對象的程序設計語言。C++語言的主要特點表現(xiàn)在兩個方面: 一是兼容C,二是支持面向對象的方法。
面向對象的程序設計(OOP)方法將數(shù)據(jù)及對數(shù)據(jù)的操作方法封裝在一起,作為一個相互依存、不可分離的整體--對象。對同類型對象抽象出其共性,形成類。類中的大多數(shù)數(shù)據(jù),只能用本類的方法進行處理。類通過一個簡單的外部接口,與外界發(fā)生關系,對象與對象之間通過消息進行通訊。這樣,程序模塊間的關系簡單,程序模塊的獨立性、數(shù)據(jù)的安全性具有良好的保障,通過繼承與多態(tài)性,使程序具有很高的可重用性,使得軟件的開發(fā)和維護都更為方便。
由于面向對象方法的突出優(yōu)點,目前它已經成為開發(fā)大型軟件時所采用的主要方法。而C++語言是應用最廣泛的面向對象的程序設計語言之一。
長期以來,C++語言被認為是較難使用的專業(yè)開發(fā)語言,特別是對于程序設計類課程學時較少的學校和專業(yè),很難開設C++程序設計課程。
實際上面向對象方法的出現(xiàn),是程序設計方法發(fā)展的一個返樸歸真過程。軟件開發(fā)從本質上講,就是對軟件所要處理的問題域進行正確的認識,并把這種認識正確地描述出來。面向對象方法所強調的基本原則,就是直接面對客觀存在的事物來進行軟件開發(fā),將人們在日常生活中習慣的思維方式和表達方式應用在軟件開發(fā)中,使軟件開發(fā)從過分專業(yè)化的方法、規(guī)則和技巧中回到客觀世界,回到人們通常的思維。
雖然C++語言是從C語言發(fā)展而來的,但是學習C++可以不必從C語言開始,C++本身是一個完整的程序設計語言,是可以作為入門的程序設計語言來學習的。
本書就是針對初學者的入門教程,適合用于開設一門學時不多的C++課程。
三、 本書的特色
本書的特色是涵蓋了C++語言的主要語法、面向對象的程序設計方法,內容深入淺出、立體配套。
全書以面向對象的程序設計方法貫穿始終,每一章都是首先闡述面向對象的程序設計思想和方法,由實際問題入手,然后引出必要的語法知識,在講解語法時著重從程序設計方法學的角度講述其意義和用途。本書的宗旨是,不僅要使讀者掌握C++語言本身,而且要能夠對現(xiàn)實世界中較簡單的問題及其解決方法用計算機語言進行描述。當然,要達到能夠描述較復雜的問題域還需要學習面向對象的軟件工程課等其他課程。
針對初學者和自學者的特點,本書力求做到深入淺出,將復雜的概念用簡潔淺顯的語言娓娓道來。
本書建議的講課學時數(shù)為24學時。建議講課學時數(shù)分配如下:
第1章2學時,第2章4學時,第3章2學時,第4章4學時,第5章2學時,第6章4學時,第7章2學時,第8章2學時,第9章2學時。
實驗學時數(shù)的分配請參考配套的《C++程序設計基礎教程學生用書》.
學生可以通過配套的《C++程序設計基礎教程學生用書》,在實踐中達到對內容的深入理解和熟練掌握。為了方便教師備課,本書還配有電子教案(PPT文件).
四、 內容摘要
第1章 緒論: 從發(fā)展的角度概要介紹了面向對象程序設計語言的產生和特點,面向對象方法的由來和主要的基本概念,并簡單介紹了什么是面向對象的軟件工程。最后介紹了信息在計算機中的表示和存儲以及程序的開發(fā)過程。
第2章 C++簡單程序設計: 講述C++程序設計的基礎知識。首先簡要介紹C++語言的發(fā)展歷史及其特點;接著學習構成C++語句的基本部分,包括字符集、關鍵字、標識符、操作符等;還有C++的基本數(shù)據(jù)類型和自定義數(shù)據(jù)類型以及算法的控制結構,包括順序、選擇和循環(huán)結構!吧疃忍剿鳌苯榻B變量的實現(xiàn)機制和C++表達式的執(zhí)行原理。
第3章 函數(shù): 講述C++語言的函數(shù)。在面向對象的程序設計中,函數(shù)對處理問題過程的基本抽象單元,是對功能的抽象。同時,使用函數(shù)也為代碼的重用提供了技術上的支持。我們主要從應用的角度講述各種函數(shù)的定義和使用方法。“深度探索”介紹運行棧與函數(shù)調用的執(zhí)行、函數(shù)聲明與類型安全。
第4章 類與對象: 首先介紹面向對象程序設計的基本思想及其主要特點,包括抽象、封裝、繼承和多態(tài);接著圍繞數(shù)據(jù)封裝這一特點,著重講解面向對象設計方法的核心概念-類,其中包括類的定義、實現(xiàn)以及如何利用類來解決具體問題;最后,簡單介紹了如何用UML語言描述類的特性!吧疃忍剿鳌苯榻B位域、用構造函數(shù)定義類型轉換,以及對象作為函數(shù)參數(shù)和返回值的傳遞方式。
第5章 數(shù)據(jù)的共享與保護: 講述標識符的作用域和可見性及變量、對象的生存期;使用局部變量、全局變量、類的數(shù)據(jù)成員、類的靜態(tài)成員和友元來實現(xiàn)數(shù)據(jù)共享,共享數(shù)據(jù)的保護,以及使用多文件結構來組織和編寫程序解決較為復雜的問題!吧疃忍剿鳌苯榻B常成員函數(shù)的聲明原則、代碼的編譯連接與執(zhí)行過程。
第6章 數(shù)組、指針與字符串: 討論數(shù)組、指針與字符串。數(shù)組和指針是C++語言中最常用的復合(構造)類型數(shù)據(jù),是數(shù)據(jù)和對象組織、表示的最主要手段,也是組織運算的有力工具。本章首先介紹數(shù)組、指針的基本概念動態(tài)存儲分配以及動態(tài)數(shù)組對象。接著圍繞數(shù)據(jù)和對象組織這一問題,著重講解如何通過使用數(shù)組和指針解決數(shù)據(jù)、函數(shù)以及對象之間的聯(lián)系和協(xié)調。對于字符串及其處理,本章重點介紹string類!吧疃忍剿鳌苯榻B指針與引用的聯(lián)系、指針的安全性隱患及其應對方案,以及const_cast的應用。
第7章 繼承與派生: 講述類的繼承特性。圍繞派生過程,著重討論不同繼承方式下的基類成員的訪問控制問題、添加構造函數(shù)和析構函數(shù)。接著討論在較為復雜的繼承關系中,類成員的唯一標識和訪問問題!吧疃忍剿鳌苯榻B組合與繼承的區(qū)別與聯(lián)系、派生類對象的內存布局,以及基類向派生類的轉換及其安全性問題。
第8章 多態(tài)性: 講述類的另一個重要特性-多態(tài)性。多態(tài)是指同樣的消息被不同類型的對象接收時導致完全不同的行為,是對類的特定成員函數(shù)的再抽象。C++語言支持的多態(tài)有多種類型,重載(包括函數(shù)重載和運算符重載)和虛函數(shù)是其中主要的方式!吧疃忍剿鳌苯榻B多態(tài)類型與非多態(tài)類型的區(qū)別、運行時類型識別機制,以及虛函數(shù)動態(tài)綁定的實現(xiàn)原理。
第9章 流類庫與輸入輸出: 講述流的概念,然后介紹流類庫的結構和使用。就像C語言一樣,C++語言中也沒有輸入輸出語句。但C++編譯系統(tǒng)帶有一個面向對象的I/O軟件包,它就是I/O流類庫。“深度探索”介紹寬字符、寬字符串與寬流,以及對象的串行化問題。
第10章 異常處理.
感謝讀者選擇使用本書,歡迎您對本書內容提出意見和建議,我們將不勝感激。作者的電子郵件地址: zhengli@mail.tsinghua.edu.cn,來信標題請包含“C++book" .
作 者2010年5月于清華大學
第1章 緒論
1.1 計算機程序設計語言的發(fā)展
1.1.1 機器語言與匯編語言
1.1.2 高級語言
1.1.3 面向對象的語言
1.2 面向對象的方法
1.2.1 面向對象方法的由來
1.2.2 面向對象的基本概念
1.3 面向對象的軟件開發(fā)
1.3.1 分析
1.3.2 設計
1.3.3 編程
1.3.4 測試
1.3.5 維護
1.4 信息的表示與存儲
1.4.1 計算機的數(shù)字系統(tǒng)
1.4 J2,L種進位記數(shù)制之間的轉換
1.4.3 信息的存儲單位
1.4.4 二進制數(shù)的編碼表示
1.4.5 定點數(shù)和浮點數(shù)
1.4.6 數(shù)的表示范圍
1.4.7 非數(shù)值信息的表示
1.5 程序開發(fā)的基本概念
1.5.1 基本術語
1.5.2 完整的程序過程
1.6 小結
習題
第2章 C++簡單程序設計
2.1 C++語言概述
2.1.1 C++的產生
2.1.2 C++的特點
2.1.3 C++程序實例
2.1.4 字符集
2.1.5 詞法記號
2.2 基本數(shù)據(jù)類型和表達式
2.2.1 基本數(shù)據(jù)類型
2.2.2 常量
2.2.3 變量
2.2.4 符號常量
2.2.5 運算符與表達式
2.2.6 語句
2.3 數(shù)據(jù)的輸入與輸出
2.3.1 I/O流
2.3.2 預定義的插入符和提取符
2.3.3 簡單的I/O格式控制
2.4 算法的基本控制結構
2.4.1 用if語句實現(xiàn)選擇結構
2.4.2 多重選擇結構
2.4.3 循環(huán)結構
2.4.4 循環(huán)結構與選擇結構的嵌套
2.4.5 其他控制語句
2.5 自定義數(shù)據(jù)類型
2.5.1 typedef聲明
2.5.2 枚舉類型enum
2.6 小結
習題
第3章 函數(shù)
3.1 函數(shù)的定義與使用
3.1.1 函數(shù)的定義
3.1.2 函數(shù)的調用
3.1.3 函數(shù)的參數(shù)傳遞
3.2 內聯(lián)函數(shù)
3.3 帶默認形參值的函數(shù)
3.4 函數(shù)重載
3.5 C++系統(tǒng)函數(shù)
3.6 小結
習題
第4章 類與對象
4.1 面向對象程序設計的基本特點
4.1.1 抽象
4.1.2 封裝
4.1.3 繼承
4.1.4 多態(tài)
4.2 類和對象
4.2.1 類的定義
4.2.2 類成員的訪問控制
4.2.3 對象
4.2.4 類的成員函數(shù)
4.2.5 程序實例
4.3 構造函數(shù)和析構函數(shù)
4.3.1 構造函數(shù)
4.3.2 復制構造函數(shù)
4.3.3 析構函數(shù)
4.3.4 程序實例
4.4 類的組合
4.4.1 組合
4.4.2 前向引用聲明
4.5 UML圖形標識
4.5.1 UML簡介
4.5.2 UML類圖
4.6 結構體和聯(lián)合體
4.6.1 結構體
4.6.2 聯(lián)合體
4.7 綜合實例——個人銀行賬戶管理程序
4.7.1 類的設計
4.7.2 源程序及說明
4.8 小結
習題
第5章 數(shù)據(jù)的共享與保護
5.1 標識符的作用域與可見性
5.1.1 作用域
5.1.2 可見性
5.2 對象的生存期
5.2.1 靜態(tài)生存期
5.2.2 動態(tài)生存期
5.3 類的靜態(tài)成員
5.3.1 靜態(tài)數(shù)據(jù)成員
5.3.2 靜態(tài)函數(shù)成員
5.4 類的友元
5.4.1 友元函數(shù)
5.4.2 友元類
5.5 共享數(shù)據(jù)的保護
5.5.1 常對象
5.5.2 用const修飾的類成員
5.5.3 常引用
5.6 多文件結構和編譯預處理命令
5.6.1 C++程序的一般組織結構
5.6.2 外部變量與外部函數(shù)
5.6.3 標準C++庫
5.6.4 編譯預處理
5.7 綜合實例——個人銀行賬戶管理程序
5.8 小結
習題
第6章 數(shù)組、指針與字符串
6.1 數(shù)組
6.1.1 數(shù)組的聲明與使用
6.1.2 數(shù)組的存儲與初始化
6.1.3 數(shù)組作為函數(shù)參數(shù)
6.1.4 對象數(shù)組
6.1.5 程序實例
6.2 指針
6.2.1 內存空間的訪問方式
6.2.2 指針變量的聲明
6.2.3 與地址相關的運算“*”和“&”
6.2.4 指針的賦值
6.2.5 指針運算
6.2.6 用指針處理數(shù)組元素
6.2.7 指針數(shù)組
6.2.8 用指針作為函數(shù)參數(shù)
6.2.9 指針型函數(shù)
6.2.10 指向函數(shù)的指針
……
第7章 繼承與派生
第8章 多態(tài)性
第9章 流類庫與輸入輸出
第10章 異常處理
在面向對象的方法出現(xiàn)以前,我們都是采用面向過程的程序設計方法。早期的計算機是用于數(shù)學計算的工具,例如,用于計算炮彈的飛行軌跡。為了完成計算,就必須設計出一個計算方法或解決問題的過程。因此,軟件設計的主要工作就是設計求解問題的過程。
隨著計算機硬件系統(tǒng)的高速發(fā)展,計算機的性能越來越強,用途也更加廣泛,不再僅限于數(shù)學計算。由于所處理的問題日益復雜,程序也就越來越復雜和龐大。20世紀60年代產生的結構化程序設計思想,為使用面向過程的方法解決復雜問題提供了有力的手段。因而,在20世紀70年代到80年代,結構化程序設計方法成為所有軟件開發(fā)設計領域及每個程序員都采用的方法。結構化程序設計的思路是:自頂向下、逐步求精;其程序結構是按功能劃分為若干個基本模塊,這些模塊形成一個樹狀結構;各模塊之間的關系盡可能簡單,在功能上相對獨立;每一模塊內部均是由順序、選擇和循環(huán)3種基本結構組成;其模塊化實現(xiàn)的具體方法是使用子程序。結構化程序設計由于采用了模塊分解與功能抽象以及自頂向下、分而治之的方法,從而有效地將一個較復雜的程序系統(tǒng)設計任務分解成許多易于控制和處理的子任務,便于開發(fā)和維護。
雖然結構化程序設計方法具有很多優(yōu)點,但它仍是一種面向過程的程序設計方法。它把數(shù)據(jù)和處理數(shù)據(jù)的過程分離為相互獨立的實體,當數(shù)據(jù)結構改變時,所有相關的處理過程都要進行相應的修改,每一種相對于老問題的新方法都要帶來額外的開銷,程序的可重用性差。另外,由于圖形用戶界面的應用,使得軟件使用起來越來越方便,但開發(fā)起來卻越來越困難。一個好的軟件,應該隨時響應用戶的任何操作,而不是請用戶按照既定的步驟循規(guī)蹈矩地使用。例如,我們都熟悉文字處理程序的使用,一個好的文字處理程序使用起來非常方便,幾乎可以隨心所欲,軟件說明書中絕不會規(guī)定任何固定的操作順序,因此對這種軟件的功能很難用過程來描述和實現(xiàn),如果仍使用面向過程的方法,開發(fā)和維護都將很困難。