內容簡介
本書是一部系統論述Kotlin程式語言、面向對象編程方法以及函式式編程思想的立體化教程(含紙質圖書、電子書、教學課件、原始碼與視頻教程)。全書共分為5篇:第1篇Kotlin基礎(第1章~第10章),第2篇面向對象(第11章~第13章),第3篇函式式編程(第14章~第17章),第4篇Kotlin進階(第18章~第27章),第5篇項目實戰(第28章~第29章)。主要內容包括:開篇綜述;開發環境搭建;第一個Kotlin程式;Kotlin語法基礎;Kotlin編碼規範;數據類型;字元串;運算符;程式流程控制;函式;面向對象編程;繼承與多態;抽象類與接口;函式式編程基石——高階函式和Lambda表達式;泛型;數據容器——數組和集合;Kotlin中函式式編程API;異常處理;執行緒;協程;Kotlin與Java混合編程;Kotlin I/O與檔案管理;網路編程;Kotlin與Java Swing圖形用戶界面編程;輕量級SQL框架——Exposed;反射;註解。最後給出了兩個項目設計案例,項目實戰1:開發PetStore寵物商店項目;項目實戰2:開發Kotlin版QQ2006聊天工具。
為便於讀者快速掌握Kotlin編程方法,本書作者精心製作了電子書、完整的教學課件、完整的原始碼與豐富的配套視頻教程,並提供線上答疑服務。
目錄
第1章 開篇綜述
1.1 Kotlin語言簡介
1.1.1 Kotlin語言歷史
1.1.2 Kotlin語言設計目標
1.2 Kotlin語言特點
1.3 Kotlin與Java虛擬機
1.3.1 Java虛擬機
1.3.2 Kotlin應用程式運行過程
1.4 如何獲得幫助
第2章 開發環境搭建
2.1 JDK工具包
2.1.1 JDK下載和安裝
2.1.2 設定環境變數
2.2 IntelliJ IDEA開發工具
2.3 Eclipse開發工具
2.3.1 Eclipse下載和安裝
2.3.2 安裝Kotlin外掛程式
2.4 Kotlin編譯器
2.4.1 下載Kotlin編譯器
2.4.2 設定Kotlin編譯器環境變數
2.5 文本編輯工具
2.5.1 在Sublime Text中安裝Kotlin語言包
2.5.2 Sublime Text與Kotlin編譯器集成
第3章 第一個Kotlin程式
3.1 使用REPL
3.2 使用IntelliJ IDEA實現
3.2.1 創建項目
3.2.2 創建Kotlin原始碼檔案
3.2.3 編寫代碼
3.2.4 運行程式
3.3 使用IntelliJ IDEA+Gradle實現
3.4 使用Eclipse+Kotlin外掛程式實現
3.4.1 創建項目
3.4.2 創建Kotlin原始碼檔案
3.4.3 運行程式
3.5 文本編輯工具+Kotlin編譯器實現
3.5.1 編寫代碼
3.5.2 編譯程式
3.5.3 運行程式
3.6 代碼解釋
本章小結
第4章 Kotlin語法基礎
4.1 標識符和關鍵字
4.1.1 標識符
4.1.2 關鍵字
4.2 常量和變數
4.2.1 變數
4.2.2 常量和唯讀變數
4.2.3 使用var還是val?
4.3 注釋
4.4 語句與表達式
4.4.1 語句
4.4.2 表達式
4.5 包
4.5.1 包作用
4.5.2 包定義
4.5.3 包引入
本章小結
第5章 Kotlin編碼規範
5.1 命名規範
5.2 注釋規範
5.2.1 檔案注釋
5.2.2 文檔注釋
5.2.3 代碼注釋
5.2.4 使用地標註釋
5.3 聲明
5.3.1 變數或常量聲明
5.3.2 類聲明
5.4 代碼排版
5.4.1 空行
5.4.2 空格
5.4.3 縮進
5.4.4 斷行
5.5 省略規範
本章小結
第6章 數據類型
6.1 回顧Java數據類型
6.2 Kotlin基本數據類型
6.2.1 整型類型
6.2.2 浮點類型
6.2.3 字元類型
6.2.4 布爾類型
6.3 數值類型之間的轉換
6.3.1 賦值與顯式轉換
6.3.2 數學計算與隱式轉換
6.4 可空類型
6.4.1 可空類型概念
6.4.2 使用安全調用運算符(?.)
6.4.3 非空斷言運算符(!!)
6.4.4 使用Elvis運算符(?:)
本章小結
第7章 字元串
7.1 字元串字面量
7.1.1 普通字元串
7.1.2 原始字元串
7.2 不可變符串
7.2.1 String
7.2.2 字元串拼接
7.2.3 字元串模板
7.2.4 字元串查找
7.2.5 字元串比較
7.2.6 字元串截取
7.3 可變字元串
7.3.1 StringBuilder
7.3.2 字元串追加、插入、刪除和替換
7.4 正則表達式
7.4.1 Regex類
7.4.2 字元串匹配
7.4.3 字元串查找
7.4.4 字元串替換
7.4.5 字元串分割
本章小結
第8章 運算符
8.1 算術運算符
8.1.1 一元運算符
8.1.2 二元運算符
8.1.3 算術賦值運算符
8.2 關係運算符
8.3 邏輯運算符
8.4 位運算符
8.5 其他運算符
8.6 運算符優先權
本章小結
第9章 程式流程控制
9.1 if分支結構
9.1.1 if結構當做語句使用
9.1.2 if表達式
9.2 when多分支結構
9.2.1 when結構當做語句使用
9.2.2 when表達式
9.3 循環結構
9.3.1 while語句
9.3.2 do-while語句
9.3.3 for語句
9.4 跳轉語句
9.4.1 break語句
9.4.2 continue語句
9.5 使用區間
9.5.1 表示區間
9.5.2 使用in和!in關鍵字
本章小結
第10章 函式
10.1 函式聲明
10.2 返回特殊數據
10.2.1 無返回數據與Unit類型
10.2.2 永遠不會正常返回數據與Nothing類型
10.3 函式參數
10.3.1 使用命名參數調用函式
10.3.2 參數默認值
10.3.3 可變參數
10.4 表達式函式體
10.5 局部函式
10.6 匿名函式
本章小結
第11章 面向對象編程
11.1 面向對象概述
11.2 面向對象三個基本特性
11.2.1 封裝性
11.2.2 繼承性
11.2.3 多態性
11.3 類聲明
11.4 屬性
11.4.1 回顧JavaBean
11.4.2 聲明屬性
11.4.3 延遲初始化屬性
11.4.4 委託屬性
11.4.5 惰性初始化屬性
11.4.6 可觀察屬性
11.5 擴展
11.5.1 擴展函式
11.5.2 擴展屬性
11.5.3 “成員優先”原則
11.5.4 定義中綴運算符
11.6 構造函式
11.6.1 主構造函式
11.6.2 次構造函式
11.6.3 默認構造函式
11.7 封裝性與可見性修飾符
11.7.1 可見性範圍
11.7.2 公有可見性
11.7.3 內部可見性
11.7.4 保護可見性
11.7.5 私有可見性
11.8 數據類
11.8.1 聲明數據類
11.8.2 使用copy函式
11.8.3 解構數據類
11.9 枚舉類
11.9.1 聲明枚舉類
11.9.2 枚舉類構造函式
11.9.3 枚舉常用函式
11.10 嵌套類
11.10.1 嵌套類
11.10.2 內部類
11.11 強大的object關鍵字
11.11.1 對象表達式
11.11.2 對象聲明
11.11.3 伴生對象
本章小結
第12章 繼承與多態
12.1 Kotlin中的繼承
12.2 調用父類構造函式
12.2.1 使用主構造函式
12.2.2 使用次構造函式重載
12.2.3 使用參數默認值次構造函式
12.3 重寫成員屬性和函式
12.3.1 重寫成員屬性
12.3.2 重寫成員函式
12.4 多態
12.4.1 多態概念
12.4.2 使用is和!is進行類型檢查
12.4.3 使用as和as?進行類型轉換
12.5 密封類
本章小結
第13章 抽象類與接口
13.1 抽象類
13.1.1 抽象類概念
13.1.2 抽象類聲明和實現
13.2 使用接口
13.2.1 接口概念
13.2.2 接口聲明和實現
13.2.3 接口與多繼承
13.2.4 接口繼承
13.2.5 接口中具體函式和屬性
本章小結
第14章 函式式編程基石——高階函式和Lambda表達式
14.1 函式式編程簡介
14.2 高階函式
14.2.1 函式類型
14.2.2 函式字面量
14.2.3 函式作為另一個函式返回值使用
14.2.4 函式作為參數使用
14.3 Lambda表達式
14.3.1 Lambda表達式標準語法格式
14.3.2 使用Lambda表達式
14.3.3 Lambda表達式簡化寫法
14.3.4 Lambda表達式與return語句
14.4 閉包與捕獲變數
14.5 內聯函式
14.5.1 自定義內聯函式
14.5.2 使用let函式
14.5.3 使用with和apply函式
本章小結
第15章 泛型
15.1 泛型函式
15.1.1 聲明泛型函式
15.1.2 多類型參數
15.1.3 泛型約束
15.1.4 可空類型參數
15.2 泛型函式
15.3 泛型類
15.4 泛型接口
本章小結
第16章 數據容器——數組和集合
16.1 數組
16.1.1 對象數組
16.1.2 基本數據類型數組
16.2 集合概述
16.3 Set集合
16.3.1 不可變Set集合
16.3.2 可變Set集合
16.4 List集合
16.4.1 不可變List集合
16.4.2 可變List集合
16.5 Map集合
16.5.1 不可變Map集合
16.5.2 可變Map集合
本章小結
第17章 Kotlin中函式式編程API
17.1 函式式編程API與鏈式調用
17.2 遍歷操作
17.2.1 forEach
17.2.2 forEachIndexed
17.3 三大基礎函式
17.3.1 filter
17.3.2 map
17.3.3 reduce
17.4 聚合函式
17.5 過濾函式
17.6 映射函式
17.7 排序函式
17.8 案例:求階乘
17.9 案例:計算水仙花數
本章小結
第18章 異常處理
18.1 從一個問題開始
18.2 異常類繼承層次
18.2.1 Throwable類
18.2.2 Error和Exception
18.3 捕獲異常
18.3.1 try-catch語句
18.3.2 try-catch表達式
18.3.3 多catch代碼塊
18.3.4 try-catch語句嵌套
18.4 釋放資源
18.4.1 finally代碼塊
18.4.2 自動資源管理
18.5 throw與顯式拋出異常
本章小結
第19章 執行緒
19.1 基礎知識
19.1.1 進程
19.1.2 執行緒
19.1.3 主執行緒
19.2 創建執行緒
19.3 執行緒的狀態
19.4 執行緒管理
19.4.1 等待執行緒結束
19.4.2 執行緒讓步
19.4.3 執行緒停止
本章小結
第20章 協程
20.1 協程介紹
20.2 創建協程
20.2.1 Kotlin協程API
20.2.2 創建支持kotlinx.coroutines項目
20.2.3 第一個協程程式
20.2.4 launch函式與Job對象
20.2.5 啟動主協程
20.2.6 掛起函式
20.3 協程生命周期
20.4 管理協程
20.4.1 等待協程結束
20.4.2 逾時設定
20.4.3 取消協程執行緒
本章小結
第21章 Kotlin與Java混合編程
21.1 數據類型映射
21.2 Kotlin調用Java
21.2.1 避免Kotlin關鍵字
21.2.2 平台類型與空值
21.2.3 異常檢查
21.2.4 調用Java函式式接口
21.3 Java調用Kotlin
21.3.1 訪問Kotlin屬性
21.3.2 訪問包級別成員
21.3.3 實例欄位、靜態欄位和靜態函式
21.3.4 可見性
21.3.5 生成重載函式
21.3.6 異常檢查
本章小結
第22章 Kotlin I/O與檔案管理
22.1 Java I/O流概述
22.1.1 Java流設計理念
22.1.2 Java流類繼承層次
22.2 位元組流
22.2.1 InputStream抽象類
22.2.2 OutputStream抽象類
22.2.3 案例:檔案複製
22.3 字元流
22.3.1 Reader抽象類
22.3.2 Writer抽象類
22.3.3 案例:檔案複製
22.4 檔案管理
22.4.1 File類擴展函式
22.4.2 案例:讀取目錄檔案
本章小結
第23章 網路編程
23.1 網路基礎
23.1.1 網路結構
23.1.2 TCP/IP協定
23.1.3 IP位址
23.1.4 連線埠
23.2 TCP Socket低層次網路編程
23.2.1 TCP Socket通信概述
23.2.2 TCP Socket通信過程
23.2.3 Socket類
23.2.4 ServerSocket類
23.2.5 案例:檔案上傳工具
23.3 UDP Socket低層次網路編程
23.3.1 DatagramSocket類
23.3.2 DatagramPacket類
23.3.3 案例:檔案上傳工具
23.4 數據交換格式
23.4.1 JSON文檔結構
23.4.2 使用第三方JSON庫
23.4.3 JSON數據編碼和解碼
23.5 訪問網際網路資源
23.5.1 URL概念
23.5.2 HTTP/HTTPS協定
23.5.3 使用URL類
23.5.4 使用HttpURLConnection傳送GET請求
23.5.5 使用HttpURLConnection傳送POST請求
23.5.6 實例:Downloader
本章小結
第24章 Kotlin與Java Swing圖形用戶界面編程
24.1 Java圖形用戶界面技術
24.2 Swing技術基礎
24.2.1 Swing類層次結構
24.2.2 Swing程式結構
24.3 事件處理模型
24.3.1 內部類和對象表達式處理事件
24.3.2 Lambda表達式處理事件
24.3.3 使用適配器
24.4 布局管理
24.4.1 FlowLayout布局
24.4.2 BorderLayout布局
24.4.3 GridLayout布局
24.4.4 不使用布局管理器
24.5 Swing組件
24.5.1 標籤和按鈕
24.5.2 文本輸入組件
24.5.3 複選框和單選按鈕
24.5.4 下拉列表
24.5.5 列表
24.5.6 分隔面板
24.5.7 使用表格
24.6 案例:圖書庫存
本章小結
第25章 輕量級SQL框架——Exposed
25.1 MySQL資料庫管理系統
25.1.1 資料庫安裝與配置
25.1.2 連線MySQL伺服器
25.1.3 常見的管理命令
25.2 Kotlin與DSL語言
25.3 使用Exposed框架
25.3.1 配置項目
25.3.2 面向DSL API
25.3.3 面向對象API
25.4 案例:多表連線查詢操作
25.4.1 創建資料庫
25.4.2 配置SQL日誌
25.4.3 實現查詢
本章小結
第26章 反射
26.1 Kotlin反射API
26.2 引用類
26.3 調用函式
26.4 調用構造函式
26.5 調用屬性
本章小結
第27章 註解
27.1 元註解
27.2 自定義註解
27.2.1 聲明註解
27.2.2 案例:使用元註解
27.2.3 註解目標聲明
27.2.4 案例:讀取運行時註解信息
本章小結
第28章 項目實戰1:開發PetStore寵物商店項目
28.1 系統分析與設計
28.1.1 項目概述
28.1.2 需求分析
28.1.3 原型設計
28.1.4 資料庫設計
28.1.5 架構設計
28.1.6 系統設計
28.2 任務1:創建資料庫
28.2.1 疊代1.1:安裝和配置MySQL資料庫
28.2.2 疊代1.2:編寫資料庫DDL腳本
28.2.3 疊代1.3:插入初始數據到資料庫
28.3 任務2:初始化項目
28.3.1 疊代2.1:配置項目
28.3.2 疊代2.2:添加資源圖片
28.3.3 疊代2.3:添加包
28.4 任務3:編寫數據持久層代碼
28.4.1 疊代3.1:編寫實體類
28.4.2 疊代3.2:創建數據表類
28.4.3 疊代3.3:編寫DAO類
28.5 任務4:編寫表示層代碼
28.5.1 疊代4.1:編寫啟動類
28.5.2 疊代4.2:編寫自定義視窗類——MyFrame
28.5.3 疊代4.3:用戶登錄視窗
28.5.4 疊代4.4:商品列表視窗
28.5.5 疊代4.5:商品購物車視窗
28.6 任務5:應用程式打包發布
28.6.1 疊代5.1:處理TODO和FIXME任務
28.6.2 疊代5.2:打包
第29章 項目實戰2:開發Kotlin版QQ2006聊天工具
29.1 系統分析與設計
29.1.1 項目概述
29.1.2 需求分析
29.1.3 原型設計
29.1.4 資料庫設計
29.1.5 網路拓撲圖
29.1.6 系統設計
29.2 任務1:創建伺服器端資料庫
29.2.1 疊代1.1:安裝和配置MySQL資料庫
29.2.2 疊代1.2:編寫資料庫DDL腳本
29.2.3 疊代1.3:插入初始數據到資料庫
29.3 任務2:初始化項目
29.3.1 任務2.1:配置項目
29.3.2 任務2.2:添加資源圖片
29.3.3 任務2.3:添加包
29.4 任務3:編寫伺服器端外圍代碼
29.4.1 疊代3.1:創建數據表類
29.4.2 任務3.2:編寫UserDAO類
29.4.3 任務3.3:編寫ClientInfo類
29.5 任務4:客戶端UI實現
29.5.1 疊代4.1:登錄視窗實現
29.5.2 疊代4.2:好友列表視窗實現
29.5.3 疊代4.3:聊天視窗實現
29.6 任務5:用戶登錄過程實現
29.6.1 疊代5.1:客戶端啟動
29.6.2 疊代5.2:客戶端登錄編程
29.6.3 疊代5.3:伺服器啟動
29.6.4 疊代5.4:伺服器驗證編程
29.7 任務6:刷新好友列表
29.7.1 疊代6.1:刷新好友列表伺服器端編程
29.7.2 疊代6.2:刷新好友列表客戶端編程
29.8 任務7:聊天過程實現
29.8.1 疊代7.1:客戶端用戶1向用戶3傳送訊息
29.8.2 疊代7.2:伺服器接收用戶1訊息與轉發給用戶3訊息
29.8.3 疊代7.3:客戶端用戶3接收用戶1訊息
29.9 任務8:用戶下線
29.9.1 疊代8.1:客戶端編程
29.9.2 疊代8.2:伺服器端編程