面向對象是怎樣工作的, 3/e

[日]平澤章

  • 出版商: 人民郵電
  • 出版日期: 2022-09-01
  • 售價: $419
  • 貴賓價: 9.5$398
  • 語言: 簡體中文
  • 頁數: 282
  • ISBN: 711559581X
  • ISBN-13: 9787115595812
  • 相關分類: UMLAgile Software
  • 立即出貨 (庫存 < 4)

  • 面向對象是怎樣工作的, 3/e-preview-1
  • 面向對象是怎樣工作的, 3/e-preview-2
面向對象是怎樣工作的, 3/e-preview-1

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

相關主題

商品描述

本書以圖配文的形式,直觀易懂地介紹了面向對象的全貌及其包含的各項技術,包括面向對象編程、框架、設計模式、UML、建模、面向對象設計和敏捷開發方法等。對於各項技術是如何使用的(How),書中只進行簡要的說明,而重點介紹這些技術是什麽(What),以及為什麽需要這些技術(Why)。另外,“編程往事”專欄介紹了作者年輕時的一些經歷;“對象的另一面”專欄以與正文不同的視角講解面向對象這一概念普及的背景和原因,通俗有趣;“當今的OOP”專欄介紹了Java、Python、Ruby、JavaScript等當今流行的編程語言的新動向。

作者簡介

平泽章(作者)

从使用大型机的金融系统到使用微机的控制系统,系统开发经验丰富。曾从事技术咨询工作,2001年至今就职于日本UL System公司。著有《UML建模教程》,是Working Effectively With Legace Code、Refactoring:Improving the Design of Existing Code日文版译者之一。

 

侯振龙(译者)

管理科学与工程专业硕士,日语一级,软件开发工程师,具有十年以上对日软件开发经验,现就职于某日本独资企业。

目錄大綱

第 1章 面向對象:讓軟件開發變輕松的技術 1

1.1 面向對象是軟件開發的綜合技術 3

1.2 以對象為中心編寫軟件的開發方法 4

1.3 從編程語言演化為綜合技術 4

1.4 面向對象難的原因 5

1.5 原因之一:OOP結構復雜 6

1.6 原因之二:濫用比喻引起混亂 6

1.7 原因之三:面向對象的概念是抽象的 7

1.8 重點講解“是什麽”和“為什麽” 9

1.9 本書的構成 9

專欄 當的OOP

易上手、有深度的Python 11

第 2章 似是而非:面向對象與現實世界 13

2.1 對照現實世界介紹面向對象 15

2.2 類指類型,實例指具體的物 15

2.3 多態讓消息的發送方法變得通用 17

2.4 繼承對共同點和不同點進行系統的分類和整理 20

2.5 使用比喻進行講解容易造成混亂 22

2.6 面向對象和現實世界是似是而非的 22

2.7 明確定義為編程結構 23

2.8 軟件並不會直接表示現實世界 24

2.9 與現實世界的相似增大了可能性 24

專欄 對象的另一面

成為潮詞的面向對象 25

 

第3章 理解OOP:編程語言的歷史 27

3.1 OOP的出現具有必然性 29

3.2 最初使用機器語言編寫程序 29

3.3 編程語言的第 一步是匯編語言 30

3.4 高級語言使程序更加接近人類語言 31

3.5 重視易懂性的結構化編程 32

3.6 提高子程序的獨立性,強化可維護性 33

3.7 實現無 GOTO編程的結構化語言 36

3.8 進化方向演變為重視可維護性和可重用性 37

3.9 沒有解決全局變量問題和可重用性差的問題 39

專欄 編程往事

COBOL編譯器的“雞和蛋”問題 43

第4章 面向對象編程技術:去除冗餘、進行整理 45

4.1 OOP具有結構化語言所沒有的三種結構 47

4.2 OOP的結構會根據編程語言的不同而略有差異 49

4.3 三大要素之一:具有三種功能的類 49

4.4 類的功能之一:匯總 50

4.5 類的功能之二:隱藏 53

4.6 類的功能之三:創建很多個 56

4.7 實例變量是限定訪問範圍的全局變量 59

4.8 三大要素之二:實現調用端公用化的多態 61

4.9 三大要素之三:去除類的重復定義的繼承 65

4.10 對三大要素的總結 67

4.11 通過嵌入類型使程序員的工作變輕松 68

4.12 將類作為類型使用 69

4.13 編程語言“退化”了嗎 72

4.14 更先進的OOP結構 72

4.15 進化的OOP結構之一:包 72

4.16 進化的OOP結構之二:異常 74

4.17 進化的OOP結構之三:垃圾回收 76

4.18 對進化的 OOP結構的總結 78

4.19 決心決定OOP的生死 79

專欄 當今的OOP

從網頁工具進化而來的PHP 81

 

第5章 理解內存結構:程序員的基本素養 83

5.1 理解OOP程序的運行機制 85

5.2 兩種運行方式:編譯器與解釋器 85

5.3 解釋、運行中間代碼的虛擬機 88

5.4 CPU 同時運行多個線程 89

5.5 使用靜態區、堆區和棧區進行管理 91

5.6 OOP 的特徵在於內存的用法 94

5.7 每個類只加載一個類信息 95

5.8 每次創建實例都會使用堆區 96

5.9 在變量中存儲實例的指針 97

5.10 復制存儲實例的變量時要多加註意 99

5.11 多態讓不同的類看起來一樣 103

5.12 根據繼承的信息類型的不同,內存配置也不同 105

5.13 孤立的實例由垃圾回收處理 107

專欄 編程往事

OOP中dump看起來很費勁? 113

 

第6章 重用:OOP帶來的軟件重用和思想重用 115

6.1 OOP的優秀結構能夠促進重用 117

6.2 類庫是OOP的軟件構件群 118

6.3 標準類庫是語言規範的一部分 120

6.4 將Object類作為祖先類的繼承結構 120

6.5 框架存在各種含義 121

6.6 框架是應用程序的半成品 122

6.7 世界上可重用的軟件構件群 124

6.8 獨立性較高的構件:組件 124

6.9 設計模式是優秀的設計思想集 125

6.10 設計模式是類庫探險的路標 128

6.11 擴展到各個領域的思想的重用 129

6.12 通過類庫和模式發現的重用的好處 130

專欄 當今的OOP

因Rails框架而走紅的Ruby 133

 

第7章 化為通用的歸納整理法的面向對象 135

7.1 軟件不會直接表示現實世界 137

7.2 應用於集合論和職責分配 139

7.3 在上游工程中化為通用的歸納整理法 142

7.4 兩種含義引起混亂 142

7.5 分為編程技術和歸納整理法進行思考 143

7.6 為何化為了通用的歸納整理法 144

專欄 對象的另一面

語言在先,還是概念在先? 145

第8章 UML:查看無形軟件的工具 147

8.1 UML是表示軟件功能和結構的圖形的繪制方法 149

8.2 UML有13種圖形 150

8.3 UML的使用方法大致分為三種 152

8.4 UML的使用方法之一:表示程序結構和動作 153

8.5 類圖表示OOP程序的結構 153

8.6 使用時序圖和通信圖表示動作 156

8.7 UML的使用方法之二:表示歸納整理法的成果 158

8.8 使用類圖表示根據集合論進行整理的結果 159

8.9 表示職責分配的時序圖和通信圖 162

8.10 UML的使用方法之三:表示非面向對象的信息 165

8.11 使用用例圖表示交給電腦的工作 165

8.12 使用活動圖表示工作流程 166

8.13 使用狀態機圖表示狀態的變化 167

8.14 彌補自然語言和電腦語言缺點的“語言” 168

第9章 建模:填補現實世界和軟件之間的溝壑 173

9.1 現實世界和軟件之間存在溝壑 175

9.2 電腦擅長固定工作和記憶工作 176

9.3 通過業務分析、需求定義和設計來填補溝壑 177

9.4 建模是順利推進這三個階段的工作的技術 178

9.5 應用程序不同,建模的內容也不一樣 179

9.6 業務應用程序記錄現實中的事情 180

9.7 對圖書館的借閱業務進行建模 181

9.8 使用用例圖來表示圖書館業務 183

9.9 用概念模型表示圖書館系統的信息 185

9.10 在業務應用程序中,數據結構反映現實世界 186

9.11 嵌入式軟件替代現實世界的工作 188

9.12 嵌入式軟件中設備的研究開發很重要 189

9.13 使用狀態機圖表示全自動工作的情形 191

9.14 嵌入式軟件一直執行單調的工作 192

9.15 建模蘊含著軟件開發的樂趣 192

第 10章 面向對象設計:擬人化和職責分配 195

10.1 設計的目標範圍很廣 197

10.2 相比運行效率,現在更重視可維護性和可重用性 198

10.3 設計目標之一:去除重復 199

10.4 設計目標之二:提高構件的獨立性 200

10.5 提高構件獨立性的訣竅 202

10.6 設計目標之三:避免依賴關系發生循環 203

10.7 面向對象設計的“感覺”是擬人化和職責分配 205

10.8 進行了職責分配的軟件創建的奇妙世界 206

專欄 當今的OOP

執行時不受類約束的JavaScript 210

 

第 11章衍生:敏捷開發 213

11.1 僅靠技術和技術竅門,軟件開發並不會成功 215

11.2 系統地匯總了作業步驟和成果的開發流程 216

11.3 限制修改的瀑布式開發流程 216

11.4 瀑布式開發流程的極限 217

11.5 靈活響應變化的迭代式開發流程 218

11.6 打破諸多限制的 XP 219

11.7 確定團隊工作推進方式的框架的Scrum 221

11.8 快速編寫優秀軟件的敏捷宣言 222

11.9 支持敏捷開發的實踐 223

11.10 先編寫測試代碼,一邊運行一邊開發的測試驅動開發 224

11.11 在程序完成後改善運行代碼的重構 225

11.12 經常進行系統整合的持續集成 227

11.13 實踐敏捷宣言理念的方法 227

11.14 敏捷開發源於面向對象 228

11.15 不存在最好的開發流程 229

專欄 編程往事

過去不被允許的XP 233

 

第 12章 熟練掌握面向對象 235

12.1 面向對象這一強大概念是原動力 237

12.2 時代追上了面向對象 238

12.3 面向對象的熱潮不會結束 239

12.4 將面向對象作為工具熟練掌握 240

12.5 享受需要動腦的軟件開發 241

 

附章 函數式語言是怎樣工作的 243

A.1 面向對象編程語言和函數式語言混合占據主流的時代 245

A.2 函數式語言的7個特徵 246

A.3 特徵1:使用函數編寫程序 246

A.4 特徵2:所有表達式都返回值 248

A.5 特徵3:將函數作為值進行處理 252

A.6 特徵4:可以靈活組合函數和參數 254

A.7 特徵5:沒有副作用 259

A.8 特徵6:使用模式匹配和遞歸來編寫循環處理 264

A.9 特徵7:編譯器自動進行類型推斷 268

A.10 對7個特徵的總結 272

A.11 函數式語言的分類 273

A.12 函數式語言的優勢 274

A.13 函數式語言的課題 275

A.14 函數式語言和麵向對象的關系 275

A.15 掌握函數式編程 277

專欄 當今的OOP

打造了函數式語言的箱庭的Java 279

 

後記 281

致謝 282