面向對象的思考過程, 5/e (The Object-Oriented Thought Process, 5/e)

Matt Weisfeld 黃博文//馮冠軍//張軻

買這商品的人也買了...

商品描述

面向對象編程(OOP)是現代編程語言
(包括C++、Java、C#、Visual Basic.NET、Ruby、Objective-C和Swift)的基礎。
對像也構成了許多Web技術(如JavaScript、Python和PHP)的基礎。
在開始使用面向對象的開發環境之前,了解面向對象的基本概念至關重要。
OOP促進了良好的設計實踐、代碼可移植性和重用性,
但是需要轉變思維才能完全理解OOP。
剛接觸OOP的程序員應該抵制直接跳入特定編程語言或建模語言的誘惑,
首先花時間學習本書作者提出的“面向對象的思考過程”。
儘管編程技術多年來一直在變化和發展,但是無論平台如何演進,
面向對象仍然是一個不變的概念。
本書側重於在過去20年中倖存下來並保持其核心的OOP技術,
其中包括新的和擴展的設計模式、
避免依賴關係以及SOLID原則,以幫助開發人員使軟件設計易於理解、靈活和可維護。
通過閱讀本書,你將學到: 面向解決方案的方法;
繼承和組合的正確用法; 聚合和聯合之間以及接口和實現之間的重要區別。
第5版新增內容: 相比前幾版而言,作者對內容做了大量修改,刪除了一些與面向對像不太相關的章節,
突出了本書的主題,同時引入了設計模式、面向對象設計的SOLID準則等全新章節,
補全了面向對象設計思想的方方面面。
無論你是否有面向對象編程的經驗,本書都適合作為你面向對象思考的旅程的開端。

作者簡介

馮冠軍

花名煙嶼,曾任阿里巴巴雲效平台高級開發工程師,精通Java、Python、
JavaScript等語言,具有大型互聯網企業自動發布和部署以及持續集成等經驗。
目前專注於大數據開發,以及基於大數據的數據服務和產品的設計、開發等。
對大數據背景下數據服務的安全保障以及可視化數據ETL非常有興趣。

目錄大綱

譯者序
前言
致謝
關於作者
第1章面向對象的概念簡介1
1.1基本概念1
1.2對象及遺留系統2
1.3過程式編程與面向對象編程對比4
1.4由面向過程開發過渡到面向對像開發7
1.4.1過程式編程7
1.4.2面向對象編程8
1.5什麼是對象8
1.5.1對像數據8
1.5.2對象行為9
1.6什麼是類13
1.6.1創建對象13
1.6.2屬性15
1.6.3方法15
1.6 .4消息15
1.7使用類圖作為可視化工具16
1.8封裝和數據隱藏16
1.8.1接口17
1.8.2實現18
1.8.3接口/實現範式的一個真實示例18
1.8.4接口/實現範式的模型19
1.9繼承20
1.9.1超類和子類21
1.9.2抽象21
1.9.3 is-a關係23
1.10多態性24
1.11組合27
1.11.1抽象27
1.11.2 has-a關係28
1.12本章小結28

第2章如何以對象的方式進行思考29
2.1清楚接口和實現之間的區別30
2.1.1接口32
2.1.2實現32
2.1.3一個接口/實現示例33
2.2使用抽象思維設計接口37
2.3盡可能提供最小化的用戶接口39
2.3.1確定用戶39
2.3.2對象行為40
2.3.3環境約束40
2.3.4識別公共接口40
2.3.5識別實現41
2.4本章小結42
2.5參考文獻42

第3章更多面向對象概念43
3.1構造函數43
3.1.1什麼是構造函數調用44
3.1.2構造函數中包含什麼44
3.1.3默認構造函數45
3.1.4使用多個構造函數46
3.1.5設計構造函數49
3.2錯誤處理50
3.2.1忽略問題50
3.2.2檢查問題併中止應用程序50
3.2.3檢查問題並試圖恢復51
3.2.4拋出異常51
3.3作用域的重要性54
3.3.1局部屬性54
3.3.2對象屬性55
3.3.3類屬性57
3.4操作符重載58
3.5多重繼承59
3.6對像操作60
3.7本章小結62
3.8參考文獻62

第4章類的剖析63
4.1類名63
4.2註釋65
4.3屬性65
4.4構造函數67
4.5訪問器69
4.6公共接口方法71
4.7私有實現方法72
4.8本章小結72
4.9參考文獻73

第5章類設計指導75
5.1對現實世界系統建模75
5.2識別公共接口76
5.2.1最小化公共接口77
5.2.2隱藏實現78
5.3設計健壯的構造函數(以及析構函數)78
5.4在類中設計錯誤處理79
5.4.1記錄類並使用註釋80
5.4.2構建可以合作的對象80
5.5設計時請考慮重用81
5.6設計時請考慮可擴展性81
5.6.1保持命名具有描述性82
5.6.2抽像不可移植的代碼82
5.6.3提供一種方式來複製和比較對象83
5.6.4保持盡可能小的作用域83
5.7設計時請考慮可維護性84
5.7.1在開發過程中使用迭代85
5.7.2測試接口85
5.8使用對象持久化87
5.9本章小結89
5.10參考文獻89

第6章使用對象進行設計91
6.1設計指導91
6.1.1進行正確的分析95
6.1.2編寫工作陳述文檔95
6.1.3收集需求95
6.1.4開發系統原型96
6.1.5識別類96
6.1.6確定每個類的職責96
6.1.7確定類之間如何協作96
6.1.8創建類模型來描述系統97
6.1.9在代碼中創建用戶接口原型97
6.2對象包裝97
6.2.1結構化代碼98
6.2.2包裝結構化代碼99
6.2.3包裝不可移植的代碼101
6.2.4包裝已有類102
6.3本章小結103
6.4參考文獻103

第7章精通繼承和組合105
7.1重用對象105
7.2繼承107
7.2.1泛化和特化109
7.2.2設計決策110
7.3組合112
7.4為什麼封裝是面向對象的本質115
7.4.1繼承如何減弱封裝115
7.4.2關於多態性的一個具體例子118
7.4.3對象職責118
7.4.4抽像類、虛方法和協議122
7.5本章小結123
7.6參考文獻124

第8章框架和重用:使用接口和抽像類進行設計125
8.1代碼:重用還是不重用125
8.2什麼是框架126
8.3什麼是契約128
8.3.1抽像類129
8.3.2接口131
8.3.3綜合運用133
8.3.4編譯器佐證136
8.3.5創建契約137
8.3.6系統插件139
8.4一個電子商務示例139
8.4.1一個電子商務問題140
8.4.2非重用方式141
8.4.3電子商務解決方案143
8.4.4 UML對像模型143
8.5本章小結147
8.6參考文獻148

第9章創建對象及面向對象設計149
9.1組合關係150
9.2分階段構建151
9.3組合類型153
9.3.1聚合153
9.3.2聯合154
9.3.3同時使用聯合和聚合155
9.4避免依賴156
9.5基數157
9.5.1多個對象聯合158
9.5.2可選的聯合160
9.6一個綜合性示例160
9.7本章小結161
9.8參考文獻162

第10章設計模式163
10.1為什麼使用設計模式164
10.2 Smalltalk的模型/視圖/控制器165
10.3設計模式類型167
10.3.1創建型模式167
10.3.2結構型模式171
10.3.3行為型模式174
10.4反模式175
10.5本章小結176
10.6參考文獻177

第11章避免依賴和高度耦合的類179
11.1繼承、組合和依賴注入181
11.1.1繼承182
11.1.2組合183
11.1.3依賴注入186
11.2本章小結189
11.3參考文獻189

第12章面向對象設計的SOLID原則191
12.1面向對象設計的SOLID原則概述192
12.1.1 SRP:單一職責原則192
12.1.2 OCP:開閉原則196
12.1.3 LSP:里氏替換原則198
12.1.4 ISP:接口隔離原則201
12.1.5 DIP:依賴倒置原則202
12.2本章小結208
12.3參考文獻208