隨著大數(shù)據(jù)、智能化應用不斷深入人們的工作和生活,軟件變得無處不在。為滿足國家一流專業(yè)建設和應用型本科人才培養(yǎng)需要,以從計算到編程為主線編寫了《C/C 程序設計導論從計算到編程(微課視頻版)》(ISBN: 9787302592020),以從抽象到編程為主線編寫了本書。本書按照面向對象思想組織程序設計的內容,內容的組織思路和主要范圍如圖0.1所示。
圖0.1本書內容的組織思路和主要范圍
編程具有較強的科學性和系統(tǒng)性。本書針對我國學生基礎知識好但應用知識訓練不足的特點,以概念抽象和數(shù)學抽象為基礎,融入計算理論、程序理論和計算機系統(tǒng)等基本原理,強調抽象思維的培養(yǎng),旨在塑造能夠理解軟件模型和數(shù)學模型的優(yōu)秀編程人才。
編程具有很強的工程性,涉及分析、設計、編碼、測試等各個階段的工作。本書按照模型及模型轉換的思想將各個階段內容整合在一起,先介紹面向對象分析設計的思想和方法,然后討論編程知識、編程技術和編程方法,使用圖形語言和計算機語言進行描述,突出編程的思路和方法,避免讀者迷失在編程的細節(jié)中。
編程是一種能力,需要通過大量訓練來獲得。本書從實際應用和基礎計算兩個層次選擇經典案例,針對目前的主流應用場景由淺入深地設計了大量的示例代碼,難易區(qū)分度明顯。本書的示例代碼全部選擇C 語言編寫,大部分示例可改寫為Java等其他語言,可供不同層次讀者學習。
本書主要內容
本書共有8章,每章先介紹面向對象分析設計的基本知識和基本原理,再討論相應的編程方法和實現(xiàn)技術。各章之間的關系如圖0.2所示。
圖0.2各章之間的關系
第1章類與對象。以認識和理解客觀事物中形成的概念為基礎,主要從抽象視角介紹抽象類及對象的基本原理,聲明類和定義對象的編程方法,從計算視角介紹成員函數(shù)調用的實現(xiàn)原理,創(chuàng)建和刪除對象的實現(xiàn)過程,最后討論程序設計思想和描述工具。
第2章封裝與職責。從客觀事物的邊界和作用引入封裝和職責兩個概念,主要介紹根據(jù)職責封裝類的基本原理和編程方法,最后介紹自定義日期數(shù)據(jù)類型和管理員工信息兩個應用案例。
第3章關聯(lián)與連接。從客觀事物之間的關系引入關聯(lián)及連接的概念,主要介紹使用關聯(lián)及連接描述客觀事物之間關系的基本原理,介紹一般關聯(lián)、組合關聯(lián)和聚合關聯(lián)的編程實現(xiàn)技術和方法,重點介紹使用組合關聯(lián)描述客觀事物的內部結構,最后介紹字符串和鏈表兩個應用案例。
第4章繼承與多態(tài)。從客觀事物的分類和抽象引入繼承及其相關概念,主要介紹使用繼承描述事物之間層次關系的基本原理,以及繼承、多態(tài)、多重繼承的實現(xiàn)技術和編程方法,最后介紹銀行賬戶案例。
第5章設計與實現(xiàn)。主要介紹綜合運用編程知識和技術解決實際問題的步驟和方法。以Josephus游戲為例介紹分析設計、編碼實現(xiàn)和程序維護階段的主要工作及其基本方法,以矩陣乘法為例介紹根據(jù)數(shù)學模型編程的技術和方法,最后介紹異常處理技術及其編程方法。
第6章運算與重載。以自然數(shù)的基數(shù)理論為基礎,主要介紹使用自然數(shù)進行計數(shù)和度量的基本原理,以及抽象和定義運算的方法,重點介紹定義運算的基本思路和重載運算的編程技術,最后介紹貨幣和R進制計算機兩個應用案例。
第7章模板與模板庫。主要介紹類模板和模板類的概念,以及使用類模板編程的主要技術和基本方法。介紹標準模板庫,重點介紹容器類和流類的使用方法,最后介紹持久化對象應用案例。
第8章課程成績管理應用案例。以課程成績管理為例,主要介紹綜合運用面向對象的知識、原理和技術開發(fā)實際應用程序的主要步驟和基本方法。本案例可作為編程訓練的項目,也可作為后續(xù)學習的案例。
本書特色
(1) 抽象思維與計算思維有機融合。將語文、數(shù)學課程中培養(yǎng)抽象思維、計算思維及其表達方式有機融合起來,用于解決軟件開發(fā)過程中有關抽象和計算的問題,從而降低學習編程的門檻和難度。
(2) 分析設計與編程實現(xiàn)有機融合。按照模型轉換思想,以分析設計中建立的模型作為編程實現(xiàn)的背景和前提,將編程實現(xiàn)的代碼作為模型轉換的結果,有機融合了分析設計與編程實現(xiàn)兩個階段的內容,更加明確編程的學習重點和方向。
(3) 圖形語言與計算機語言有機融合。本書按照元模型表示模型的思想,把UML圖形語言作為描述語義的通用工具,便于讀者能夠直觀地理解代碼和將C 代碼修改為Java、C#等其他計算機語言的代碼,從而適應混合式語言編程的要求。
配套資源
為便于教與學,本書配有微課視頻、源代碼、數(shù)據(jù)集、教學課件、教學大綱、教學日歷、習題答案、期末試卷及參考答案。
(1) 獲取微課視頻方式: 先刮開并用手機版微信App掃描本書封底的文泉云盤防盜碼,授權后再掃描書中相應的視頻二維碼,觀看教學視頻。
(2) 獲取源代碼、數(shù)據(jù)集方式:先刮開并用手機版微信App掃描本書封底的文泉云盤防盜碼,授權后再掃描下方二維碼,即可獲取。
源代碼
數(shù)據(jù)集
(3) 其他配套資源可以掃描本書封底的書圈二維碼,關注后回復本書書號,即可下載。
讀者對象
本書適合作為全國高等學校計算機及相關專業(yè)的教材,也可供有意向學習C 語言或從事軟件開發(fā)的讀者自學使用。
在本書的編寫過程中,作者結合多年的教學經驗和學生反饋的學習心得,參考了諸多相關資料,在此表示衷心的感謝。限于個人水平和時間有限,書中難免存在疏漏之處,歡迎讀者批評指正。
作者
2023年5月
第1章類與對象
1.1抽象
1.1.1語文中的抽象
1.1.2數(shù)學中的抽象
1.2類和對象的概念
1.2.1屬性與屬性值
1.2.2行為與函數(shù)
1.2.3類的結構及其表示方法
1.2.4對象的結構及其表示方法
1.3類的聲明和對象的定義
1.3.1類的聲明
1.3.2定義對象
1.3.3訪問對象的成員變量
1.4成員函數(shù)的定義和調用
1.4.1定義成員函數(shù)
1.4.2調用成員函數(shù)
1.4.3成員函數(shù)與普通函數(shù)的區(qū)別
1.4.4成員函數(shù)調用的內部實現(xiàn)
1.5創(chuàng)建和刪除對象
1.5.1構造對象
1.5.2全局對象和靜態(tài)對象
1.5.3堆對象和對象數(shù)組
1.5.4語義的實現(xiàn)和優(yōu)化
1.6程序設計思想和描述工具
1.6.1程序設計思想的變遷
1.6.2UML圖形語言
1.6.3面向對象程序設計語言
小結
練習
第2章封裝與職責
2.1類的封裝
2.1.1事物的邊界
2.1.2封裝的概念
2.1.3接口的聲明
2.1.4接口與實現(xiàn)分離
2.2封裝的作用
2.2.1保護內部數(shù)據(jù)
2.2.2屏蔽內部計算
2.3對象的職責
2.3.1管理自己的數(shù)據(jù)
2.3.2完成特定的任務
2.3.3參與計算的能力
2.3.4與其他對象共存的能力
2.4自定義數(shù)據(jù)類型
2.4.1定義數(shù)據(jù)類型Tdate
2.4.2Tdate的對象作為成員對象
2.5應用舉例: 員工信息管理
2.5.1分析設計
2.5.2編碼實現(xiàn)
小結
練習
第3章關聯(lián)與連接
3.1關聯(lián)與連接的概念
3.2關聯(lián)的實現(xiàn)
3.2.1使用指針實現(xiàn)多對一關聯(lián)
3.2.2使用指針數(shù)組實現(xiàn)多對多關聯(lián)
3.3組合與聚合關聯(lián)
3.3.1使用對象實現(xiàn)組合關聯(lián)
3.3.2使用指針實現(xiàn)組合關聯(lián)
3.3.3使用代碼實現(xiàn)聚合關聯(lián)
3.4深入理解類及其對象
3.5字符串
3.5.1數(shù)組中的概念及其關系
3.5.2字符數(shù)組的語義
3.5.3自定義字符串類myString
3.6應用舉例: 鏈表
小結
練習
第4章繼承與多態(tài)
4.1分類與抽象
4.2繼承
4.2.1繼承的概念
4.2.2繼承的編程實現(xiàn)
4.2.3描述類之間的層次
4.2.4保護繼承與私有繼承
4.3多態(tài)
4.3.1多態(tài)的概念
4.3.2多態(tài)的編程技術
4.3.3按照多態(tài)思維編寫代碼
4.4多重繼承
4.4.1多重繼承導致的問題
4.4.2多重繼承的實現(xiàn)原理
4.4.3多重繼承的編程方法
4.5應用舉例: 銀行賬戶
4.5.1分析應用場景
4.5.2軟件設計
4.5.3編碼實現(xiàn)
4.5.4從實現(xiàn)角度進一步優(yōu)化
小結
練習
第5章設計與實現(xiàn)
5.1Josephus游戲
5.1.1分析設計
5.1.2編碼實現(xiàn)
5.1.3程序維護
5.2矩陣計算
5.2.1矩陣和向量的乘法
5.2.2使用友元提高運行速度
5.3異常處理
5.3.1異常分類和錯誤定義
5.3.2識別異常和拋出錯誤
5.3.3捕獲異常并處理錯誤
小結
練習
第6章運算與重載
6.1自然數(shù)與度量
6.1.1自然數(shù)的定義
6.1.2對事物計數(shù)
6.1.3度量事物的特征
6.2自然數(shù)的運算及其含義
6.3定義和重載運算
6.4重載常用運算
6.4.1重載賦值運算
6.4.2重載類型轉換運算
6.4.3重載增量運算符
6.4.4重載插入和提取運算
6.5應用舉例: 貨幣
6.5.1基類Currency
6.5.2派生RMB
6.5.3派生其他貨幣
6.6應用舉例: R進制計算機
6.6.1自然數(shù)及運算的編程實現(xiàn)
6.6.2整數(shù)及其運算的編程實現(xiàn)
6.6.3實數(shù)及其運算的編程實現(xiàn)
小結
練習
第7章模板與模板庫
7.1類模板
7.1.1類模板的概念
7.1.2類模板的聲明
7.1.3類模板的具體化和實例化
7.1.4類模板的代碼重用
7.1.5類模板的繼承和關聯(lián)
7.2使用模板編程的方法
7.2.1動態(tài)數(shù)組類模板
7.2.2冒泡排序模板
7.2.3編程中需要注意的問題
7.3標準模板庫
7.3.1容器類
7.3.2流類
7.4應用舉例: 持久化對象
7.4.1輸入/輸出對象中的數(shù)據(jù)
7.4.2以文本方式持久化對象
7.4.3以二進制方式持久化對象
小結
練習
第8章課程成績管理應用案例
8.1場景分析
8.2教師錄入成績的視圖
8.3屬性的抽象和關聯(lián)的表示
8.4多對一關聯(lián)的邏輯實現(xiàn)
8.5一對多關聯(lián)的邏輯實現(xiàn)
8.6錄入成績的實現(xiàn)
8.7學生查詢成績
8.8進一步努力方向
8.8.1數(shù)據(jù)準備
8.8.2持久化對象的標準
8.8.3設計模式和基于框架的開發(fā)
8.8.4代碼自動化
8.8.5分析統(tǒng)計
8.9程序員的成才之路
小結
練習
附錄A運算符表
參考文獻