倉頡語言面向對象程序設計

栗青生、羅欣、鄭珺

  • 倉頡語言面向對象程序設計-preview-1
  • 倉頡語言面向對象程序設計-preview-2
  • 倉頡語言面向對象程序設計-preview-3
  • 倉頡語言面向對象程序設計-preview-4
  • 倉頡語言面向對象程序設計-preview-5
  • 倉頡語言面向對象程序設計-preview-6
  • 倉頡語言面向對象程序設計-preview-7
倉頡語言面向對象程序設計-preview-1

商品描述

"本書從現代軟件工程的實際需求出發,系統地介紹面向對象程序設計的原理、方法和實踐技巧。通過對倉頡編程語言的深度解析,全面闡述了面向對象程序設計的核心特征,包括數據封裝、繼承機制和多態性等關鍵概念。本書註重理論與實踐相結合,重點突出,敘述清晰,深入淺出,論述詳盡,旨在幫助讀者既能深刻理解面向對象程序設計的思想精髓,又能熟練掌握倉頡語言的面向對象編程技術與實際應用。 全書共10章,主要內容包括:面向對象編程概述、倉頡語言基礎、函數編程、結構體與枚舉及模式匹配、類和對象、類繼承和接口繼承、子類型關系和多態性、集合與包、I/O操作與異常處理、網絡與並發編程。在每章的知識講解後都配有相應的程序設計示例,這些示例既有助於讀者鞏固所學知識點,又能培養讀者的實踐能力和創新思維。 本書適合作為普通高等院校電子信息類、計算機類專業研究生和高年級本科生的教材,也可供對倉頡編程語言感興趣的軟件開發工程師、系統架構師及科研人員參考使用。同時,本書對從事人工智能、大數據處理等領域的開發者也具有重要的參考價值。 "

目錄大綱

目錄

第1章面向對象編程概述/1

1.1面向對象程序設計概述/1

1.1.1面向對象程序設計/2

1.1.2面向對象程序分析示例/3

1.1.3面向對象可視化建模工具/4

1.1.4面向對象的主要概念/5

1.2面向對象程序設計的特點/7

1.2.1面向過程的方法的局限性/7

1.2.2面向對象程序設計的主要優點/8

1.3面向對象的系統開發/9

1.3.1典型的面向對象程序設計語言/9

1.3.2面向對象程序設計工具及設計流程/11

1.4倉頡語言與C++語言的對比分析/14

1.4.1程序示例/14

1.4.2對比分析/15

本章小結/17

習題1/17

第2章倉頡語言基礎/19

2.1倉頡語言概述/20

2.1.1倉頡編程語言的特點/20

2.1.2第一個倉頡程序:“Hello,倉頡!”/21

2.2程序結構及設計環境/23

2.2.1函數結構與類結構/23

2.2.2倉頡程序的編程工具鏈/28

2.2.3倉頡程序集成化的IDE編程環境/30

2.3數據表示/32

2.3.1數據表示符/33

2.3.2操作運算符/36

2.3.3變量/40

2.3.4常量/42

2.3.5作用域/45

2.3.6表達式/47

2.4數據類型/51

2.4.1整數類型/52

2.4.2浮點類型/56

2.4.3布爾類型/57

2.4.4字符類型/57

2.4.5字符串類型/58

 2.4.6元組類型 /61

2.4.7數組類型/64

2.4.8區間類型 /67

2.4.9其他類型/68

2.5類型轉換/69

2.5.1數值類型轉換/69

2.5.2進位記數制的轉換/70

2.5.3Rune類型轉換/70

2.6程序示例/71

示例1: 用函數編程實現閏年判斷/71

示例2: 用插值字符串實現格式化輸出/72

示例3: 用for in雙循環輸出乘法口訣表/73

示例4: 用條件和循環表達式判斷素數/73

示例5: 字符串翻轉的實現/74

示例6: 用函數式和命令式編程方法求公約數和公倍數/74

示例7: 用U+十六進制的形式輸出漢字的Unicode碼/75

本章小結/76

習題2/76

第3章函數編程/78

3.1函數/78

3.1.1定義函數/78

3.1.2調用函數/84

3.2函數類型/86

3.2.1函數返回類型/86

3.2.2嵌套函數/90

3.2.3const 函數/91

3.3Lambda 表達式/92

3.3.1Lambda表達式的定義/92

3.3.2Lambda表達式的基本使用/92

3.3.3Lambda表達式的返回類型和調用/94

3.4閉包/94

3.4.1Lambda表達式中的變量捕獲/94

3.4.2閉包的變量初始化/95

3.4.3使用閉包時應註意的幾個問題/95

3.5函數調用語法/95

3.5.1尾隨 Lambda /96

3.5.2Flow 表達式/97

3.5.3變長參數/99

3.6函數重載/102

3.6.1函數重載的定義/102

3.6.2函數重載的規則/102

3.6.3函數重載決議/104

3.7操作符重載/104

3.8程序示例/106

示例1: 用高階函數,實現對數組的統一操作/106

示例2: 多文檔結構程序中的函數調用/108

示例3: 函數類型作為返回值,返回 Lambda 表達式/109

示例4: 嵌套函數使用閉包變量/109

示例5: Lambda 表達式推斷類型並立即調用/110

示例6: 漢字元數據解構函數/110

本章小結/111

習題3/111

第4章結構體、枚舉及模式匹配/113

4.1結構體數據類型/114

4.1.1結構體概述/114

4.1.2結構體的定義/115

4.1.3創建 struct 示例/120

4.1.4mut 函數/122

4.2枚舉類型/123

4.2.1enum 類型的定義/123

4.2.2enum的使用/125

4.3Option類型/126

4.3.1Option類型的定義/126

4.3.2Option類型的使用/126

4.3.3Option 類型的解構/127

4.4模式匹配/128

4.4.1常量模式/128

4.4.2通配符模式/129

4.4.3綁定模式/129

4.4.4tuple模式/131

4.4.5類模式/132

4.4.6enum 模式/132

4.5模式的組合及類型/133

4.5.1模式的嵌套組合/133

4.5.2模式匹配的兩種類型/133

4.5.3match表達式/136

4.5.4iflet 表達式/141

4.5.5whilelet 表達式/141

4.5.6其他模式的應用/142

4.6程序示例/144

示例1: 八面玲瓏機器人/144

示例2: 多點距離計算/146

示例3: 文本生成計算/146

示例4: 漢字結構計算/148

示例5: 冒泡排序算法/149

本章小結/150

習題4/150

第5章類和對象/155

5.1類/156

5.1.1從結構體到類/156

5.1.2類的定義/157

5.2類的數據成員/159

5.2.1成員變量/159

5.2.2成員函數/161

5.3類的構造函數/163

5.3.1普通構造函數/164

5.3.2主構造函數/165

5.4類的成員函數/168

5.4.1實例成員函數/168

5.4.2靜態成員函數/169

5.4.3抽象成員函數/169

5.5函數和操作符重載/170

5.5.1構造函數重載/170

5.5.2操作符重載/170

5.6類的終結器/171

5.7類成員及訪問/172

5.7.1訪問運算符/172

5.7.2訪問修飾符/173

5.7.3訪問屬性/173

5.8對象/175

5.8.1創建對象/175

5.8.2 創建對象數組/177

5.8.3對象數據成員/178

5.8.4對象賦值語句/179

5.9類的作用域與自引用指針/180

5.9.1類的作用域/180

5.9.2自引用指針/181

5.10程序示例/182

示例1: 漢字類及生成計數器設計/182

示例2: 用對象作為成員確定類與類的關系/183

示例3: 使用對象數組管理點集並計算距離/184

示例4: 時間類Time設計/185

示例5: 利用枚舉和類確定笛卡兒坐標系中點的位置屬性/185

本章小結/186

習題5/187

第6章類繼承和接口繼承/189

6.1類繼承/189

6.1.1繼承與代碼重用/189

6.1.2基類與派生類/190

6.2抽象類與抽象方法/192

6.3類繼承中的對象賦值/194

6.4父類構造函數與super關鍵字/195

6.5覆蓋和重定義/198

6.6接口繼承/199

6.6.1接口定義/201

6.6.2接口繼承/203

6.6.3接口實現/208

6.6.4Any類型/209

6.6.5在結構體中實現接口/210

6.7屬性/214

6.7.1屬性定義/215

6.7.2屬性使用/218

6.8程序示例/220

示例1: 定義繼承關系並實現方法重寫/220

示例2: 使用抽象類與重寫方法/220

示例3: 類對象賦值與動態綁定/221

示例4: 一個類實現多個接口/222

示例5: 使用屬性(prop)封裝成員變量/223

實例6: 類模式匹配與圖形描述/223

本章小結/224

習題6/224

第7章子類型關系和多態性/227

7.1子類型關系/227

7.1.1子類型關系與子類型多態/228

7.1.2子類型的判定/228

7.2多態性/230

7.2.1編譯時的多態/230

7.2.2運行時的多態/230

7.3類型轉換/232

7.3.1數值類型之間的轉換/232

7.3.2is和as操作符/232

7.4泛型/235

7.4.1泛型函數/236

7.4.2泛型接口/239

7.4.3泛型類/240

7.4.4泛型結構體/241

7.4.5泛型枚舉/241

7.4.6泛型類型的子類型關系/242

7.4.7類型別名/243

7.4.8泛型約束/245

7.5擴展/247

7.5.1擴展的基本特性/247

7.5.2直接擴展/248

7.5.3接口擴展 /250

7.6程序示例/251

示例1: 用函數重載實現編譯時的多態/251

示例2: 用方法重寫實現運行時多態/251

示例3: 類型判定與安全轉換/252

示例4: 泛型容器與交換函數/252

示例5: 用extend擴展字符串/253

本章小結/254

習題7/254

第8章集合與包/257

8.1倉頡集合的基本操作/257

8.1.1集合概述/257

8.1.2倉頡Array的基本操作/258

8.1.3倉頡Array的高級應用 /261

8.2ArrayList/263

8.2.1ArrayList的使用/263

8.2.2訪問ArrayList元素/263

8.2.3修改 ArrayList/265

8.3HashSet/266

8.3.1HashSet 的使用/266

8.3.2訪問 HashSet 成員/269

8.3.3修改 HashSet/270

8.4HashMap/272

8.4.1使用 HashMap/272

8.4.2訪問和修改HashMap 成員/273

8.4.3使用HashMap進行數據管理/275

8.5自定義類型的集合處理/279

8.6包概述/280

8.6.1包的聲明/281

8.6.2頂層聲明的可見性/282

8.6.3包的導入/284

8.7程序示例/286

示例1: 用對象數組實現學生成績管理/286

示例2: 基於 HashMap 的學生成績管理系統/287

示例3: 基於接口與多態的支付系統/293

示例4: 單詞去重與統計/295

示例5: 簡易漢字結構字典的創建及查詢/296

本章小結/297

習題8/297

第9章I/O操作與異常處理/300

9.1I/O流概述/300

9.1.1數據流/301

9.1.2數據流分類/302

9.1.3數據流操作/302

9.1.4數據流操作異常/302

9.2Stream操作函數/303

9.2.1copy()函數/303

9.2.2readString()函數/304

9.2.3readStringUnchecked()函數/305

9.2.4readToEnd()函數/306

9.3I/O節點流/306

9.3.1標準流/306

9.3.2文件流/310

9.4I/O處理流/312

9.4.1緩沖流/312

9.4.2字符串流/313

9.5異常及異常處理/314

9.5.1定義異常/314

9.5.2throw和處理異常/315

9.5.3普通try表達式/316

9.5.4trywithresources 表達式/317

9.6使用 Option處理異常/319

9.6.1模式匹配/319

9.6.2Coalescing操作符 (??)/320

9.6.3問號操作符 (?)/320

9.6.4getOrThrow()函數/321

9.7程序示例/322

示例1: 學生成績文件的讀取/322

示例2: 日誌文件復制/322

示例3: 異常處理與trycatchfinally/323

示例4: 文件寫入以及關閉與自動文件資源管理/324

示例5: 使用Option類型的快速查找/324

本章小結/325

習題9/325

第10章網絡與並發編程/328

10.1網絡與並發編程概述/328

10.1.1C/S與B/S網絡模式/328

10.1.2多線程並發編程/329

10.2Socket 編程/330

10.2.1TCP 編程/331

10.2.2UDP 編程/332

10.3TCP聊天程序設計/333

10.3.1TcpServerSocket類/333

10.3.2TcpSocket類/334

10.4HTTP編程/335

10.4.1stdx包的安裝/335

10.4.2stdx程序測試/336

10.4.3HTTP多線程網絡編程/338

10.5WebSocket編程/340

10.5.1服務器端程序/340

10.5.2客戶端程序/341

10.6網絡編程示例/343

示例1: 網絡註冊用戶管理/343

示例2: 服務器端與客戶端數據通信/345

示例3: 多線程文件下載與日誌記錄/347

示例4: UDP 多客戶端消息收發/348

示例5: WebSocket 實時消息回顯/348

本章小結/349

習題10/349

參考文獻/352

附錄A習題參考答案/353