
✦
課程教學大綱
✦
課程名稱
中文名稱
C++面向對象程序設計
英文名稱
C++ Object-Oriented Programming
教學目標
本課程的目標是促進學生理解和建立面向對象的程序設計思想,並使得學生掌握採用C++面向對象程序設計方法來求解實際問題,培養學生問題分析、對象模型建立、代碼編寫、程序驗證,和程序調試的能力,提高程序編寫效率和運行效率,提高代碼的可復用性和可維護性。
課程負責人
雍俊海
學分學時
學分
2
學時安排
(課內外學時比為1:2)
32/64
(教學學時/課外學時)
課程分類
本科
課程類型
2:本科學科基礎課
授課語種
中文
考核方式
考試
教材
雍俊海. C++程序設計從入門到精通. 北京: 清華大學出版社.書號(ISBN):978-7-302-59237-2.
先修要求
程序設計基礎或者C語言程序設計。
適用院系及
專業
軟件工程或計算機專業
課程設立依據
(本課程與培養方案的關係,與同類課程的比較分析等):
應學校的大類招生培養要求設立本課程,本課程是軟件工程與計算機學科的基礎課程,將為本學科的後續學習建立必要的基礎。
國內外軟件工程與計算機科學與技術專業的院系均大多設立同類課程。與校內外大學的同類課程相比,符合清華大學學生的特點,採用最新的C++標準,並將面向對象與程序復用性和擴展性相結合,具有新穎性和實用性等特色。
1
課程內容簡介
面向對象已成為計算機和軟件工程領域的主流技術之一,C++語言有效支持面向對象設計思想,應用十分廣泛。本課程講解面向對象的思維模式和程序設計方法,涵蓋類、對象、封裝、繼承、多態、模板、編程規範、設計模式、程序測試和程序調試等內容。本課程的目標是促進學生理解和建立面向對象的程序設計思想,並使得學生掌握採用面向對象程序設計方法來求解實際問題,培養學生問題分析、對象模型建立、代碼編寫、程序驗證,和程序調試的能力,提高程序編寫效率和運行效率,提高代碼的可復用性和可維護性。
Object-oriented technique is one of the main techniques in the fields of computers and software engineering. C++ programming can well support the object-oriented design idea, and is widely used. This course introduces the object-oriented thinking model and the object-oriented program design method. The contents cover classes, objects, encapsulation, inheritance, polymorphism, templates coding standards, design patterns, program testing and debugging programs. This course aims to help students to understand and build the object- oriented programming design idea. Students are required to master the object- oriented programming design method to solve some practical problems. This course will train the abilities of students including problems analysis, building object models, coding, program testing, and debugging programs such that the efficiency of coding and running programs will be improved. Moreover, reusability and maintainability of programs will be enhanced as well.
2
成績評定標準
所占比例%
作業30%、期末考試40 %、項目30%
3
教學安排
✦
配套參考教材
✦

掃碼優惠購書
《C++程序設計從入門到精通》
ISBN:978-7-302-59237-2
雍俊海 編著
定價:128元
內容簡介
本書講解C++程序設計知識及其編程方法,包括結構化程序設計、面向對象程序設計、共用體、異常處理、模板與標準模板庫、字符串處理、標準輸入輸出與文件處理、MFC圖形界面程序設計、設計模式、編程規範、程序調試與測試等內容,並且每章都附有習題。本書的章節編排與內容以人們學習與認知過程為基礎,緊扣最新國際標準,與公司的實際需求相匹配。本書採用特殊字體突出中心詞,以期讀者在輕鬆和歡樂之中迅速了解與掌握C++程序設計的知識和方法,並應用到實踐中去。
本書內容豐富易學,而且提供豐富例程和例句,既可以作為計算機專業和非計算機專業的C++程序設計和面向對象程序設計等課程的基礎教材,也可以作為需要使用C++語言的工程人員和科技工作者的自學參考書。
本書特色
重點突出:本書不僅在內容上抓住並突出C++程序設計的重點和核心本質,而且在形式上通過加粗加框的方式突出各部分內容以及各個概念的中心詞。
準確嚴謹:本書努力去除現有C++相關文獻資料中的浮華與眾多的錯誤,內容準確嚴謹,並且詳細講解如何進行C++程序等價類劃分,提高程序測試的有效性。
內容新穎:本書內容緊扣最新國際標準和軟件產業最新實際需求,在C++面向對象程序設計、圖形界面程序設計、設計模式和編程規範等方面具有鮮明特色。
例程豐富:本書提供了109個例程和眾多的示例性代碼,採用簡明方式揭示C++程序設計本質之處,通過翔實例程和例句展現C++編程思想,方便入門與自學。
目錄
向上滑動閱覽
第1章 緒論1
1.1 C++語言簡介1
1.2 C++入門程序4
1.2.1 常規項目操作4
1.2.2 C++類C部分經典入門程序5
1.2.3 C++類C部分結構化入門程序11
1.2.4 C++面向對象部分入門程序15
1.3 本章小結17
1.4 習題17
1.4.1 練習題17
1.4.2 思考題18
第2章 結構化程序設計19
2.1 預備知識19
2.1.1 標識符19
2.1.2 關鍵字和保留字21
2.1.3 文件包含語句23
2.1.4 宏定義與條件編譯24
2.2 數據類型26
2.2.1 變量定義和聲明27
2.2.2 布爾類型28
2.2.3 整數系列類型28
2.2.4 字符系列類型30
2.2.5 浮點數類型32
2.2.6 枚舉類型34
2.2.7 數組類型和基於數組的字符串36
2.2.8 指針類型與動態數組39
2.2.9 左值引用與右值引用42
2.2.10 自動推斷類型auto43
2.2.11 類型別名定義typedef44
2.2.12 常量屬性const45
2.3 運算46
2.3.1 算術運算48
2.3.2 關係運算50
2.3.3 邏輯運算50
2.3.4 位運算50
2.3.5 賦值類運算53
2.3.6 條件運算53
2.3.7 其他運算54
2.4 控制結構54
2.4.1 if語句和if-else語句55
2.4.2 switch語句57
2.4.3 for語句60
2.4.4 while語句64
2.4.5 do-while語句65
2.4.6 continue語句65
2.4.7 break語句67
2.5 模塊劃分68
2.5.1 函數基礎68
2.5.2 主函數main77
2.5.3 函數遞歸調用78
2.5.4 函數指針類型81
2.5.5 關鍵字static83
2.5.6 模塊劃分的原則與過程85
2.6 本章小結89
2.7 習題89
2.7.1 練習題89
2.7.2 思考題92
第3章 面向對象程序設計基礎93
3.1 類與對象93
3.1.1 類聲明與類定義基礎94
3.1.2 成員變量94
3.1.3 位域96
3.1.4 類對象與實例對象97
3.1.5 構造函數101
3.1.6 析構函數108
3.1.7 成員函數111
3.2 繼承性114
3.2.1 基本定義114
3.2.2 父子類實例對象之間的兼容性121
3.2.3 基本原則124
3.2.4 虛擬繼承128
3.2.5 初始化單元和委託構造函數133
3.2.6 構造函數與析構函數的執行順序135
3.3 封裝性146
3.3.1 成員的訪問方式147
3.3.2 繼承方式和訪問方式152
3.3.3 在繼承中的全局類156
3.3.4 友元160
3.4 多態性169
3.4.1 函數重載(靜態多態性)169
3.4.2 默認函數參數值175
3.4.3 運算符重載177
3.4.4 函數覆蓋(動態多態性)183
3.5 關鍵字this193
3.6 函數調用和關鍵字const198
3.6.1 函數形式參數與調用參數198
3.6.2 非靜態成員函數本身的const常量屬性202
3.6.3 函數的返回數據類型204
3.7 面向對象程序設計的核心思路207
3.8 本章小結217
3.9 習題218
3.9.1 練習題218
3.9.2 思考題224
第4章 共用體225
4.1 共用體的定義與格式225
4.2 在共用體中調用成員變量的構造函數與析構函數228
4.3 本章小結235
4.4 習題235
4.4.1 練習題235
4.4.2 思考題235
第5章 異常處理236
5.1 異常的拋出與捕捉236
5.2 淺拷貝和深拷貝247
5.2.1 淺拷貝247
5.2.2 深拷貝251
5.3 避免內存泄漏254
5.3.1 含有內存泄漏的例程254
5.3.2 避開內存泄漏的方案256
5.4 本章小結259
5.5 習題259
5.5.1 練習題259
5.5.2 思考題261
第6章 模板與標準模板庫262
6.1 自定義函數模板262
6.2 自定義類模板267
6.3 向量類模板vector274
6.3.1 向量的構造函數、長度和容量274
6.3.2 向量的迭代器279
6.3.3 改變向量長度與容量282
6.3.4 插入與刪除元素283
6.3.5 向量賦值與比較287
6.4 集合類模板set292
6.4.1 仿函數292
6.4.2 集合的構造函數和迭代器294
6.4.3 修改集合內容的成員函數301
6.4.4 用於查詢的集合成員函數306
6.4.5 集合賦值與比較311
6.5 排序函數模板sort319
6.6 本章小結323
6.7 習題324
6.7.1 練習題324
6.7.2 思考題325
第7章 字符串處理326
7.1 輸出單個字符326
7.2 基於數組的窄與寬字符串轉換328
7.3 字符串類342
7.3.1 字符串的構造函數343
7.3.2 字符串的容量與長度346
7.3.3 獲取字符串的內容與子串350
7.3.4 字符串賦值與比較大小353
7.3.5 字符串迭代器360
7.3.6 插入與刪除366
7.3.7 查找與替換以及交換377
7.3.8 基於字符串類的超長整數案例406
7.4 本章小結412
7.5 習題413
7.5.1 練習題413
7.5.2 思考題415
第8章 標準輸入輸出與文件處理416
8.1 標準輸入輸出416
8.1.1 出入流類ios417
8.1.2 輸入流類istream422
8.1.3 輸出流類ostream436
8.1.4 格式控制443
8.2 文件流451
8.2.1 只讀文件流類ifstream452
8.2.2 只寫文件流類ofstream464
8.2.3 讀寫文件流類fstream469
8.3 習題478
8.3.1 練習題478
8.3.2 思考題480
第9章 MFC圖形界面程序設計482
9.1 MFC程序總述483
9.2 單文檔程序設計484
9.3 圖形繪製504
9.4 多文檔程序設計517
9.5 基於對話框的MFC程序設計539
9.6 基於功能區(Ribbon)的MFC程序設計548
9.7 本章小結562
9.8 習題563
9.8.1 練習題563
9.8.2 思考題566
第10章 設計模式567
10.1 單體模式568
10.1.1 傳統的單體模式解決方案568
10.1.2 無內存泄漏的單體模式解決方案571
10.2 適配器模式575
10.2.1 接口類和接口適配器類576
10.2.2 對象適配器模式578
10.2.3 類適配器模式582
10.3 策略模式586
10.4 工廠方法模式590
10.5 本章小結601
10.6 習題602
10.6.1 練習題602
10.6.2 思考題603
第11章 編程規範604
11.1 命名空間604
11.2 代碼組織規範610
11.2.1 文件組織規範610
11.2.2 頭文件內容規範611
11.2.3 源文件內容規範614
11.3 內聯函數617
11.4 命名規範627
11.4.1 文件名629
11.4.2 命名空間、類型命名和關鍵字typedef629
11.4.3 函數、函數模板和變量的命名630
11.4.4 枚舉成員、宏和只讀變量的命名631
11.4.5 本書所用的命名規範632
11.5 排版規範633
11.5.1 制表符與縮進634
11.5.2 空白行與空格636
11.5.3 行數與每行字符數636
11.6 語句規範638
11.6.1 函數相關的語句規範639
11.6.2 類型與變量相關的語句規範640
11.6.3 簡潔且無歧義的表達式642
11.6.4 循環語句與空語句646
11.6.5 給語句添加注釋646
11.7 本章小結647
11.8 習題648
11.8.1 練習題648
11.8.2 思考題650
第12章 程序調試與測試651
12.1 程序調試651
12.1.1 斷言651
12.1.2 設置斷點與查看即時信息653
12.1.3 查看函數堆棧656
12.1.4 編寫調試日誌文件程序658
12.2 程序測試662
12.2.1 程序測試基本概念663
12.2.2 窮舉測試664
12.2.3 黑盒測試674
12.2.4 白盒測試679
12.3 本章小結682
12.4 習題682
12.4.1 練習題682
12.4.2 思考題684
附錄A 例程的索引685
附錄B 函數、宏和運算符的索引688
參考文獻697
單擊頁面下方【閱讀原文】,訂閱【教學大綱】欄目