《C#軟件項目開發基礎》從.NET技術出發,結合軟件項目開發的思想,從登錄模塊開始上手,培養學生興趣,錘煉調試功底。本書直接介紹數據庫的登錄模塊,引入ADO.NET;在代碼不多的基礎上,強化軟件分層思想,引入三層架構,講授了Web服務的使用,并結合單元測試、委托等技術,使讀者可以邊學習C#技術邊進行軟件項目模塊的開發。通過學習本書,讀者不僅可以了解常用的控件典型的框架,還能認識運行機制、理解框架類庫、品味設計架構。
本書體系新穎、內容豐富、結構合理、文句精練,不僅可以作為高等院校計算機專業大學生計算機C#編程技術課程的教材,也可以作為培訓教材,為企業招聘人員進行入職培訓提供指導。
前 言
目前大多數高校計算機專業都開設有計算機編程類課程,這類課程肩負著講授計算機程序設計的任務,但側重面多有不同。\"C#軟件項目開發基礎\"不同于一般的計算機編程類課程,它是計算機科學與技術及相關專業的一門重要專業特色課,主要講授.NET框架下的程序設計,使學生對.NET技術有深入的了解,并能深刻認識C#軟件項目開發。同時,該門課程也必須注重計算機應用能力的培養和計算機素質的全面提高,因此在理論教學的同時,應配套一定的實驗環節。
本教材的編寫本著與時俱進的原則,針對計算機科學及相關專業的教學特點和需求,在內容上力求反映教學改革的最新成果,指導學生進一步掌握C#軟件項目開發的方法,學習軟件分層、委托事件、Web服務以及設計模式等技術。
本書特別強調了軟件項目的思想、軟件分層的思想、三層架構的思想、單元測試能力、設計模式的引入,只有掌握一定的軟件項目經驗、一定的大型程序的開發思路,才能站得高、看得遠。對于閱讀本書的讀者而言,帶著思考進行基礎和本質的探索,同時也能體驗技術學習的有效方法。作者在論述大部分的知識要點時,會總結和歸納其重要的規律和注意事項,這些歸納為實際的編程提供了良好的執行法則,讀者應該花費必要的精力熟練掌握所有的歸納內容。
.NET技術正是一個大花園的集合,每個程序開發者必須經歷一次深入的磨煉,在基本認識的水平上前進一步,才能發現更多。就像練武之人,除了研習一招一式(了解常用的控件,了解典型的框架),還得修煉內功(認識運行機制,理解框架類庫,品味設計架構)。
這些正是本書呈現于讀者的內容,也體現了不同于其他.NET專著的風格。
本書由蘇前敏擔任主編,楊孜茁、張輝擔任副主編,具體分工如下:蘇前敏編寫了第2、3、4、5、7章,楊孜茁編寫了第1章、第9章以及附錄,張輝編寫了第6、8、10章。本書是集體智慧的結晶,在此對清華大學出版社的編輯對本書的編輯和出版所做的努力表示感謝。本書還得到了上海工程技術大學教材建設項目的資助,一并感謝。
由于作者水平有限,加之計算機科學與技術發展迅速、內容覆蓋面廣,書中錯誤和不妥之處在所難免,懇請讀者批評指正。
編 者
第1章 C#與.NET Framework1
1.1 C#的歷史1
1.1.1 從C到C++1
1.1.2 Java的出現2
1.1.3 C#的誕生3
1.1.4 C#的發展歷程5
1.2 .NET Framework6
1.2.1 什么是 .NET Framework6
1.2.2 .NET Framework的工作原理7
1.2.3 公共語言運行時9
1.2.4 .NET Framework類庫10
1.2.5 用C#創建.NET應用程序11
1.3 C#軟件項目開發14
1.3.1 需求分析14
1.3.2 概要設計15
1.3.3 詳細設計15
1.3.4 編碼15
1.3.5 測試15
1.3.6 軟件交付16
1.3.7 維護16
本章小結16
習題16
第2章 登錄功能18
2.1 登錄界面設計18
2.1.1 簡化的用戶登錄界面18
2.1.2 新建項目19
2.1.3 界面設計20
2.2 登錄模塊23
2.2.1 模塊和模塊化23
2.2.2 登錄IPO23
2.2.3 登錄模塊代碼實現24
2.3 界面邏輯24
2.3.1 事件和事件驅動24
2.3.2 單擊事件處理過程25
2.3.3 消息對話框顯示25
2.3.4 界面跳轉25
2.3.5 啟動窗體設置26
2.4 詳細代碼和程序運行26
2.4.1 詳細代碼26
2.4.2 程序運行界面27
2.5 調試28
2.5.1 調試概述28
2.5.2 Visual Studio調試28
2.6 打字小游戲實例31
2.6.1 Timer控件31
2.6.2 鍵盤事件32
2.6.3 隨機數32
2.6.4 實現打字小游戲33
2.7 四則運算器實例35
2.7.1 四則運算器要求35
2.7.2 操作步驟36
本章小結39
習題39
第3章 用數據庫實現操作模塊40
3.1 數據準備40
3.1.1 數據庫、數據表及測試數據40
3.1.2 結構化查詢語言SQL41
3.2 ADO.NET42
3.2.1 ADO.NET概述42
3.2.2 ADO.NET核心組成43
3.2.3 ADO.NET通俗理解44
3.2.4 ADO.NET命名空間44
3.3 登錄模塊45
3.3.1 程序步驟45
3.3.2 關鍵代碼說明47
3.4 用戶注冊、刪除和修改任務47
3.4.1 界面設計48
3.4.2 增刪改模塊48
3.5 用戶表顯示50
3.5.1 DataGridView控件50
3.5.2 DataSet和DataTable50
3.5.3 數據綁定過程51
3.6 運行界面和詳細代碼52
3.6.1 用戶運行界面52
3.6.2 完整代碼54
本章小結57
習題57
第4章 軟件分層和三層架構58
4.1 軟件分層58
4.1.1 分層原理58
4.1.2 分層開發的特點和優勢59
4.1.3 分層開發的缺點60
4.1.4 常用的軟件分層技術60
4.2 三層架構63
4.2.1 基本原理63
4.2.2 三層架構的演變64
4.2.3 三層架構的形象對比65
4.3 搭建三層結構66
4.3.1 程序集66
4.3.2 搭建數據訪問層67
4.3.3 搭建業務邏輯層69
4.3.4 搭建表示層69
4.3.5 添加各層之間的依賴關系69
4.4 登錄案例70
4.4.1 編寫實體類User.cs71
4.4.2 編寫數據訪問類UserService71
4.4.3 編寫業務邏輯類
UserManager72
4.4.4 編寫表示層72
本章小結74
習題74
第5章 Web服務75
5.1 Web服務的概念和用途75
5.1.1 Web服務的基本概念75
5.1.2 Web服務的優點75
5.1.3 Web服務的應用77
5.1.4 Web服務的調用原理78
5.1.5 支付寶Web服務接口79
5.2 Web服務實現80
5.2.1 用Visual Studio.NET建立
Web服務80
5.2.2 自定義Web服務82
5.2.3 WinForm項目調用84
5.2.4 Web項目調用86
5.2.5 Web服務常用接口88
本章小結88
習題88
第6章 C#面向對象程序設計89
6.1 類和對象概念89
6.1.1 對象89
6.1.2 類90
6.1.3 屬性和字段90
6.1.4 方法91
6.1.5 對象的生命周期91
6.1.6 靜態成員92
6.2 定義類92
6.3 定義類成員93
6.3.1 定義字段94
6.3.2 定義方法94
6.3.3 定義屬性95
6.3.4 定義構造函數和析構函數96
6.3.5 重載97
6.3.6 類定義示例99
6.3.7 聰明豬實例100
6.4 繼承、接口和抽象類103
6.4.1 繼承103
6.4.2 接口定義103
6.4.3 接口和抽象類104
6.4.4 接口和抽象類示例104
6.5 常用字符串類String108
6.5.1 字符串與System.String108
6.5.2 字符串對象的不可變性109
6.5.3 正則字符串和原義字符串110
6.5.4 字符串轉義序列110
6.5.5 格式字符串111
6.5.6 子字符串112
6.5.7 null字符串和空字符串113
6.5.8 使用 StringBuilder 快速創建
字符串115
本章小結115
習題116
第7章 委托與事件117
7.1 委托117
7.1.1 委托的引入117
7.1.2 委托使用方法120
7.1.3 定義和使用委托實例120
7.1.4 組合委托121
7.2 事件122
7.2.1 事件的概念122
7.2.2 創建步驟123
7.3 實例125
7.3.1 委托租房125
7.3.2 清晨雞叫128
本章小結130
習題130
第8章 圖形編程和Bitmap處理基礎131
8.1 GDI+繪圖基礎131
8.1.1 GDI+概述131
8.1.2 Graphics類132
8.1.3 常用畫圖對象133
8.1.4 繪圖程序示例137
8.2 Bitmap類141
8.2.1 Bitmap類支持的圖像類型141
8.2.2 Bitmap類的方法141
8.2.3 圖片處理實例142
本章小結144
習題144
第9章 異常處理和單元測試145
9.1 異常處理概述145
9.1.1 為何要用異常處理145
9.1.2 .NET異常處理機制146
9.2 異常處理148
9.2.1 基本格式148
9.2.2 異常的順序和嵌套151
9.2.3 throw語句和自定義
異常類152
9.3 單元測試153
9.3.1 單元測試概述153
9.3.2 測試用例154
9.4 單元測試實例155
9.4.1 項目準備155
9.4.2 單元測試向導建立測試
項目156
9.4.3 建立測試用例159
9.4.4 Assert斷言162
本章小結163
習題163
第10章 設計模式164
10.1 設計模式概述164
10.1.1 為什么要用設計模式164
10.1.2 設計模式的概念164
10.1.3 設計模式的基本要素165
10.1.4 常見設計模式165
10.2 簡單工廠模式167
10.2.1 簡單工廠模式的概念167
10.2.2 實例168
10.3 單例模式171
10.3.1 單例模式的概念171
10.3.2 為什么要用單例模式171
10.3.3 剖析單例模式的實現
思路171
10.3.4 代碼實現172
本章小結174
習題174
附錄A C#代碼規范175
A.1 編程風格175
A.1.1 統一編程風格的意義175
A.1.2 變量命名規則175
A.1.3 函數命名規則176
A.1.4 類命名規則177
A.1.5 常見語句書寫規則177
A.1.6 注釋風格178
A.2 代碼組織179
A.3 代碼優化179
A.3.1 代碼優化的意義179
A.3.2 函數內的代碼優化180
A.3.3 類內的代碼優化181
A.3.4 類之間的代碼優化181
A.4 調試技巧182
A.4.1 編譯時的錯誤182
A.4.2 運行時的錯誤182
A.4.3 C#常見問題182
附錄B C#基本語法183
B.1 變量和常量183
B.1.1 變量183
B.1.2 常量184
B.2 值類型和引用類型185
B.2.1 值類型186
B.2.2 引用類型188
B.3 裝箱和拆箱190
B.4 類型轉換190
B.5 流程控制191
B.5.1 條件語句191
B.5.2 循環195
B.5.3 跳轉語句199
B.6 數組和集合200
B.6.1 數組200
B.6.2 集合201
參考文獻212