本書以面向對象的設計方法為主線,通過大量實用的設計實例,由淺入深地介紹了對象基本概念、對象分類與設計、對象關系與復雜對象、多態性及其應用方法、軟件建模和結構設計、設計模式及其應用等面向對象的方法與技術。本書采用C++語言作為程序設計語言,隨著各種設計方法的講述,逐步介紹了對象、類、繼承、類模板、常用基本類庫等語言功能的使用方法。
全書共6章:第1章介紹面向對象技術的由來、面向對象的軟件開發方法、程序設計方法、程序設計語言及發展趨勢;第2章闡述對象的基本概念,舉例介紹了4種分類設計方法;第3章基于4個設計案例深入討論對象關系和復雜對象的分析與設計方法;第4章介紹多態性的基本概念,通過三個設計案例深入分析了多態性的應用方法;第5章基于三個設計案例介紹了面向對象的軟件建模和結構設計方法;第6章介紹常用的各種設計模式,提供了兩個基于設計模式的軟件設計案例。
本書可作為計算機相關專業“面向對象程序設計”等本科課程以及“面向對象方法與技術”等研究生課程的教材,也可以作為專業技術人員的參考書或培訓教材。同時,本書提供的應用案例及其設計方法可以作為“軟件工程”、“軟件開發與體系結構”等課程的教學參考資料。
●本書從對象概念、對象設計、對象關聯、多態性與繼承講起,逐步深入到面向對象的系統建模、設計模式及其應用方法,由淺入深地介紹面向對象的程序設計方法及典型應用案例。
●提供大量實用型設計案例,用于展示各種設計方法;為多態性和設計模式等軟件技術的應用提供經典案例,可以作為應用軟件開發的范例。
●對于每個設計案例,依次介紹問題陳述、案例分析、解題思路、對象設計、算法設計、程序實現、測試案例、技術小結等內容,強化了分析方法和設計方法的訓練。
●通過程序案例,由易到難地逐步介紹主要的C++語言功能,且涵蓋了UML語言、MFC和STL等基本類庫的核心功能。
●本書可作為高等學校計算機與軟件工程相關專業的教材,適用于面向對象程序設計、C++語言程序設計等課程;也可以作為軟件工程相關專業的教材或教輔材料,適用于面向對象方法與技術、軟件開發方法、軟件構造與體系結構等研究生課程。
第1章面向對象技術概述1
1.1面向對象技術的由來1
1.1.1軟件危機1
1.1.2軟件工程原則2
1.1.3面向對象技術的特征3
1.2程序設計方法的發展4
1.2.1結構化程序設計4
1.2.2邏輯型程序設計和函數式程序設計5
1.2.3抽象數據類型和面向對象程序設計7
1.3程序設計語言的發展8
1.3.1過程型程序設計語言8
1.3.2說明型程序設計語言9
1.3.3面向對象程序設計語言10
1.4面向對象的軟件開發方法10
1.4.1面向對象分析11
1.4.2面向對象設計11
1.4.3面向對象軟件的測試12
1.5面向對象技術的發展13
1.5.1軟件構件技術13
1.5.2UML語言15
1.5.3設計模式16
本章小結18
習題18第2章對象的概念與應用19
2.1對象的概念與封裝性19
2.1.1基于對象的抽象方法20
2.1.2C++語言支持的對象描述22
2.1.3對象的封裝性262.2實體型對象29
2.2.1實體型對象的分析與設計29
2.2.2應用案例: 有理數30
2.3管理型對象35
2.3.1管理型對象的分析與設計35
2.3.2應用案例: 圖書訂單36
2.4加工型對象41
2.4.1加工型對象的分析與設計41
2.4.2應用案例: 文本最長行提取43
2.5事務型對象47
2.5.1事務型對象的分析與設計47
2.5.2應用案例: 大獎賽評分管理48
本章小結55
習題56第3章對象關系與復雜對象58
3.1一般與特殊關系59
3.1.1對象之間的繼承機制60
3.1.2層次化的繼承關系65
3.1.3應用案例: 二維圖元對象67
3.2整體與部分關系78
3.2.1整體與部分關系的識別與分類78
3.2.2基于C++語言的整體與部分關系實現79
3.2.3應用案例: 駕駛證管理82
3.3對象關聯的設計89
3.3.1對象關聯與對象依賴90
3.3.2基于C++語言的對象關聯實現91
3.3.3應用案例: 行車路線監視模擬程序94
3.4可復用類庫100
3.4.1基本類庫與軟件復用101
3.4.2MFC類庫103
3.4.3應用案例: 學院班級管理系統106
本章小結116
習題117第4章多態性及其應用方法119
4.1多態性的概念與語言支持119
4.1.1多態性和虛函數120
4.1.2C++語言對多態性的支持123
4.1.3抽象數據類型與軟件接口126
4.1.4應用案例: 數據庫查詢接口129
4.2數據容器的多態性132
4.2.1異質鏈表及應用實例133
4.2.2通用異質容器與C++模板139
4.2.3應用案例: 廣義表142
4.3多態性與通用算法151
4.3.1通用算法的程序實現方法151
4.3.2應用案例: 通用的冒泡排序程序152
4.3.3STL數據容器模板與函數模板158
本章小結162
習題163第5章軟件系統的設計方法164
5.1軟件系統的建模165
5.1.1功能劃分和對象設計165
5.1.2交互過程分析和方法設計168
5.1.3應用案例: 網上書店171
5.2軟件模塊與接口的設計182
5.2.1軟件模塊的抽象描述182
5.2.2軟件功能接口的設計183
5.2.3C++語言描述的接口185
5.2.4應用案例: 機票預訂系統188
5.3軟件結構的組織與設計198
5.3.1控制邏輯的分解198
5.3.2復雜數據集的處理200
5.3.3應用案例: XML語法分析201
本章小結222
習題222第6章設計模式及其應用224
6.1設計模式概述225
6.1.1設計模式與軟件復用225
6.1.2設計模式的描述226
6.2創建型模式228
6.2.1抽象工廠模式228
6.2.2生成器模式230
6.2.3工廠方法模式和原型模式230
6.2.4單件模式233
6.3結構型模式233
6.3.1代理模式和適配器模式233
6.3.2組合模式238
6.3.3外觀模式和橋接模式240
6.4行為模式242
6.4.1觀察者模式243
6.4.2訪問者模式和解釋器模式244
6.4.3命令模式和裝飾模式248
6.5設計模式的綜合應用255
6.5.1圖形編輯程序255
6.5.2程序設計語言處理框架277
本章小結293
習題293參考文獻295