Kotlin 從小白到大牛

Kotlin 從小白到大牛

作者: 關東升
出版社: 清華大學
出版在: 2018-08-15
ISBN-13: 9787302505310
ISBN-10: 7302505314
裝訂格式: 平裝
總頁數: 554 頁





內容描述


本書是一部系統論述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 
前言3 
配套資源說明6 
學習路線圖7 
內容說明9 
第1篇Kotlin基礎
本篇視頻:454分鐘
第1章開篇綜述2 
本章視頻:33分鐘
1.1 Kotlin語言簡介2 
1.1.1 Kotlin語言歷史2 
1.1.2 Kotlin語言設計目標2 
1.2 Kotlin語言特點3 
1.3 Kotlin與Java虛擬機4 
1.3.1 Java虛擬機4 
1.3.2 Kotlin應用程序運行過程5 
1.4如何獲得幫助5 
第2章開發環境搭建8 
本章視頻:25分鐘
2.1 JDK工具包8 
2.1.1 JDK下載和安裝8 
2.1.2設置環境變量10 
2.2 IntelliJ IDEA開發工具12 
2.3 Eclipse開發工具13 
2.3.1 Eclipse下載和安裝13 
2.3.2安裝Kotlin插件17 
2.4 Kotlin編譯器18 
2.4.1下載Kotlin編譯器18 
2.4.2設置Kotlin編譯器環境變量19
2.5文本編輯工具20 
2.5.1在Sublime Text中安裝Kotlin語言包20 
2.5.2 Sublime Text與Kotlin編譯器集成21 
第3章第一個Kotlin程序25 
本章視頻:22分鐘
3.1使用REPL實現25 
3.2使用IntelliJ IDEA實現26 
3.2.1創建項目26 
3.2.2創建Kotlin源代碼文件28 
3.2.3編寫代碼29 
3.2.4運行程序30 
3.3使用IntelliJ IDEA與Gradle實現30 
3.4使用Eclipse與Kotlin插件實現33 
3.4.1創建項目33 
3.4.2創建Kotlin源代碼文件34 
3.4.3運行程序35 
3.5使用文本編輯工具與Kotlin編譯器實現37 
3.5.1編寫代碼37 
3.5.2編譯程序37 
3.5.3運行程序39 
3.6代碼解釋39 
第4章Kotlin語法基礎41 
本章視頻:52分鐘
4.1標識符和關鍵字41 
4.1.1標識符41 
4.1.2關鍵字42 
4.2變量和常量43 
4.2.1變量43
4.2.2常量和只讀變量44 
4.2.3使用var還是val 45 
4.3註釋46 
4.4語句與表達式47 
4.4.1語句48 
4.4.2表達式48 
4.5包49 
4.5.1包的作用49 
4.5.2包的定義50 
4.5.3包的引入51 
第5章Kotlin編碼規範53 
本章視頻:49分鐘
5.1命名規範53 
5.2註釋規範55 
5.2.1文件註釋55 
5.2.2文檔註釋55 
5.2.3代碼註釋58 
5.2 .4使用地標註釋59 
5.3聲明60 
5.3.1變量或常量聲明60 
5.3.2類聲明61 
5.4代碼排版62 
5.4.1空行62 
5.4.2空格64 
5.4.3縮進65 
5.4.4斷行65 
5.5省略規範66 
第6章數據類型68 
本章視頻:45分鐘
6.1回顧Java數據類型68 
6.2 Kotlin基本數據類型69 
6.2.1整型類型70 
6.2.2浮點類型71
6.2.3字符類型72 
6.2.4布爾類型74 
6.3數值類型之間的轉換75 
6.3.1賦值與顯式轉換75 
6.3.2數學計算與隱式轉換77 
6.4可空類型77 
6.4.1可空類型概念78 
6.4.2使用安全調用運算符(?.) 78 
6.4.3非空斷言運算符(!!) 79 
6.4.4使用Elvis運算符(?:) 80 
第7章字符串82 
本章視頻:93分鐘
7.1字符串字面量82 
7.1.1普通字符串82 
7.1.2原始字符串83 
7.2不可變字符串85 
7.2.1 String 85 
7.2.2字符串拼接86 
7.2.3字符串模板87 
7.2.4字符串查找89 
7.2.5字符串比較91 
7.2.6字符串截取93 
7.3可變字符串94 
7.3.1 StringBuilder 94 
7.3.2字符串追加、插入、刪除和替換95 
7.4正則表達式97 
7.4.1 Regex類97 
7.4.2字符串匹配98 
7.4.3字符串查找99 
7.4.4字符串替換99
7.4.5字符串分割100 
第8章運算符102 
本章視頻:51分鐘
8.1算術運算符102 
8.1.1一元運算符102 
8.1.2二元運算符103 
8.1.3算術賦值運算符104 
8.2關係運算符105 
8.3邏輯運算符107 
8.4位運算符108 
8.5其他運算符111 
8.6運算符優先級111 
第9章程序流程控制113 
本章視頻:47分鐘
9.1 if分支結構113 
9.1.1 if結構當作語句使用113 
9.1 .2 if表達式115 
9.2 when多分支結構117 
9.2.1 when結構當作語句使用118 
9.2.2 when表達式119 
9.3循環結構121 
9.3.1 while語句121 
9.3.2 do-while語句122 
9.3.3 for語句122 
9.4跳轉語句124 
9.4.1 break語句124 
9.4.2 continue語句126 
9.5使用區間128 
9.5.1表示區間128 
9.5.2使用in和!in關鍵字129
第10章函數131 
本章視頻:37分鐘
10.1函數聲明131 
10.2返回特殊數據132 
10.2.1無返回數據與Unit類型132 
10.2.2永遠不會正常返回數據與Nothing類型133 
10.3函數參數134 
10.3.1使用命名參數調用函數134 
10.3.2參數默認值135 
10.3.3可變參數136 
10.4表達式函數體137 
10.5局部函數137 
10.6匿名函數138 
第2篇面向對象
本篇視頻:360分鐘
第11章面向對象編程142 
本章視頻:246分鐘
11.1面向對象概述142 
11.2面向對象的三個基本特性143 
11.2.1封裝性143 
11.2.2繼承性143 
11.2.3多態性144 
11.3類聲明144 
11.4屬性146 
11.4.1回顧JavaBean 146 
11.4.2聲明屬性147 
11.4.3延遲初始化屬性150 
11.4.4委託屬性151 
11.4.5惰性加載屬性152 
11.4.6可觀察屬性153
11.5擴展154 
11.5.1擴展函數155 
11.5.2擴展屬性156 
11.5.3 “成員優先”原則157 
11.5.4定義中綴運算符159 
11.6構造函數160 
11.6.1主構造函數160 
11.6.2次構造函數162 
11.6.3默認構造函數163 
11.7封裝性與可見性修飾符164 
11.7.1可見性範圍164 
11.7.2公有可見性166 
11.7.3內部可見性167 
11.7.4保護可見性167 
11.7.5私有可見性168 
11.8數據類169 
11.8.1聲明數據類170 
11.8.2使用copy函數171 
11.8.3解構數據類172 
11.9枚舉類172 
11.9.1聲明枚舉類172 
11.9.2枚舉類構造函數174 
11.9 .3枚舉常用屬性和函數175 
11.10嵌套類176 
11.10.1嵌套類176 
11.10.2內部類178 
11.11強大的object關鍵字180 
11.11.1對象表達式180
11.11.2對象聲明182 
11.11.3伴生對象184 
第12章繼承與多態188 
本章視頻:78分鐘
12.1 Kotlin中的繼承188 
12.2調用父類構造函數190 
12.2.1使用主構造函數191 
12.2.2使用次構造函數重載192 
12.2.3使用參數默認值調用構造函數193 
12.3重寫成員屬性和函數194 
12.3.1重寫成員屬性194 
12.3.2重寫成員函數195 
12.4多態197 
12.4.1多態概念197 
12.4.2使用is和!is進行類型檢查199 
12.4.3使用as和as?進行類型轉換202 
12.5密封類203 
第13章抽像類與接口206 
本章視頻:36分鐘
13.1抽像類206 
13.1.1抽像類概念206 
13.1.2抽像類聲明和實現206 
13.2使用接口209 
13.2.1接口概念209 
13.2.2接口聲明和實現209 
13.2.3接口與多繼承212 
13.2.4接口繼承213 
13.2.5接口中的具體函數和屬性214
第3篇函數式編程
本篇視頻:302分鐘
第14章函數式編程基石——高階函數和Lambda表達式218 
本章視頻:91分鐘
14.1函數式編程簡介218 
14.2高階函數218 
14.2.1函數類型219 
14.2.2函數字面量220 
14.2.3函數作為另一個函數返回值使用221 
14.2.4函數作為參數使用222 
14.3 Lambda表達式223 
14.3.1 Lambda表達式標準語法格式223 
14.3.2使用Lambda表達式225 
14.3.3 Lambda表達式簡化寫法225 
14.3.4 Lambda表達式與return語句228 
14.4閉包與捕獲變量229 
14.5內聯函數232 
14.5.1自定義內聯函數232 
14.5.2使用let函數233 
14.5. 3使用with和apply函數233 
第15章泛型236 
本章視頻:51分鐘
15.1泛型函數236 
15.1.1聲明泛型函數236 
15.1.2多類型參數237 
15.1.3泛型約束237 
15.1.4可空類型參數238 
15.2泛型屬性239
15.3泛型類240 
15.4泛型接口242 
第16章數據容器——數組和集合245 
本章視頻:81分鐘
16.1數組245 
16.1.1對像數組245 
16.1.2基本數據類型數組248 
16.2集合概述249 
16.3 Set集合250 
16.3.1不可變Set集合250 
16.3.2可變Set集合252 
16.4 List集合254 
16.4.1不可變List集合255 
16.4.2可變List集合256 
16.5 Map集合258 
16.5.1不可變Map集合259 
16.5 .2可變Map集合261 
第17章Kotlin中函數式編程API 264 
本章視頻:79分鐘
17.1函數式編程API與鍊式調用264 
17.2遍歷操作265 
17.2.1 forEach 265 
17.2.2 forEachIndexed 266 
17.3三大基礎函數267 
17.3.1 filter 267 
17.3.2 map 268 
17.3.3 reduce 269 
17.4聚合函數270 
17.5過濾函數272
17.6映射函數273 
17.7排序函數275 
17.8案例:求階乘276 
17.9案例:計算水仙花數277 
第4篇Kotlin進階
本篇視頻:744分鐘
第18章異常處理280 
本章視頻:67分鐘
18.1從一個問題開始280 
18.2異常類繼承層次281 
18.2.1 Throwable類281 
18.2.2 Error和Exception 283 
18.3捕獲異常283 
18.3.1 try-catch語句284 
18.3.2 try-catch表達式285 
18.3.3多catch代碼塊286 
18.3 .4 try-catch語句嵌套288 
18.4釋放資源289 
18.4.1 finally代碼塊290 
18.4.2自動資源管理293 
18.5 throw與顯式拋出異常294 
第19章線程297 
本章視頻:49分鐘
19.1基礎知識297 
19.1.1進程297 
19.1.2線程297 
19.1.3主線程298 
19.2創建線程299 
19.3線程狀態301
19.4線程管理302 
19.4.1等待線程結束302 
19.4.2線程讓步304 
19.4.3線程停止305 
第20章協程308 
本章視頻:57分鐘
20.1協程介紹308 
20.2創建協程308 
20.2.1 Kotlin協程API 308 
20.2.2創建支持kotlinx.coroutines的項目309 
20.2.3第一個協程程序310 
20.2.4 launch函數與Job對象311 
20.2.5 runBlocking函數313 
20.2.6掛起函數314 
20.3協程生命週期316 
20.4管理協程317 
20.4.1等待協程結束317 
20.4.2超時設置318 
20.4.3取消協程320 
第21章Kotlin與Java混合編程322 
本章視頻:77分鐘
21.1數據類型映射322 
21.1.1 Java基本數據類型與Kotlin數據類型映射322 
21.1.2 Java包裝類與Kotlin數據類型映射322 
21.1.3 Java常用類與Kotlin數據類型映射323 
21.1.4 Java集合類型與Kotlin數據類型映射323
21.2 Kotlin調用Java 324 
21.2.1避免Kotlin關鍵字324 
21.2.2平台類型與空值325 
21.2.3異常檢查327 
21.2.4調用Java函數式接口327 
21.3 Java調用Kotlin 328 
21.3.1訪問Kotlin屬性329 
21.3 .2訪問包級別成員329 
21.3.3實例字段、靜態字段和靜態函數330 
21.3.4可見性334 
21.3.5生成重載函數336 
21.3.6異常檢查338 
第22章Kotlin I/O與文件管理340 
本章視頻:49分鐘
22.1 Java I/O流概述340 
22.1.1 Java流設計理念340 
22.1.2 Java流類繼承層次341 
22.2字節流343 
22.2.1 InputStream抽像類344 
22.2.2 OutputStream抽像類344 
22.2 .3案例:文件複製345 
22.3字符流346 
22.3.1 Reader抽像類346 
22.3.2 Writer抽像類346 
22.3.3案例:文件複製347 
22.4文件管理348
22.4.1 File類擴展函數348 
22.4.2案例:讀取目錄文件349 
第23章網絡編程351 
本章視頻:115分鐘
23.1網絡基礎351 
23.1.1網絡結構351 
23.1.2 TCP/IP協議352 
23.1.3 IP地址352 
23.1.4端口353 
23.2 TCP Socket低層次網絡編程353 
23.2.1 TCP Socket通信概述353 
23.2.2 TCP Socket通信過程353 
23.2.3 Socket類354 
23.2.4 ServerSocket類356 
23.2.5案例:文件上傳工具356 
23.3 UDP Socket低層次網絡編程358 
23.3.1 DatagramSocket類358 
23.3.2 DatagramPacket類359 
23.3.3案例:文件上傳工具360 
23.4數據交換格式362 
23.4.1 JSON文檔結構363 
23.4.2使用第三方JSON庫365 
23.4.3 JSON數據編碼和解碼366 
23.5訪問互聯網資源368 
23.5.1 URL的概念368 
23.5.2 HTTP/HTTPS協議369
23.5.3使用URL類369 
23.5.4使用HttpURLConnection發送GET請求370 
23.5.5使用HttpURLConnection發送POST請求372 
23.5.6實例:Downloader 373 
第24章Kotlin與Java Swing圖形用戶界面編程375 
本章視頻:182分鐘
24.1 Java圖形用戶界面技術375 
24.2 Swing技術基礎376 
24.2.1 Swing類層次結構377 
24.2.2 Swing程序結構378 
24.3事件處理模型381 
24.3.1內部類和對象表達式處理事件382 
24.3.2 Lambda表達式處理事件384 
24.3.3使用適配器385 
24.4佈局管理387 
24.4.1 FlowLayout佈局387 
24.4.2 BorderLayout佈局389 
24.4.3 GridLayout佈局391 
24.4.4不使用佈局管理器393 
24.5 Swing組件395 
24.5.1標籤和按鈕395 
24.5.2文本輸入組件398 
24.5.3複選框和單選按鈕401 
24.5.4下拉列表404 
24.5.5列表406
24.5.6分隔面板407 
24.5.7使用表格409 
24.6案例:圖書庫存413 
第25章輕量級SQL框架—— Exposed 418 
本章視頻:91分鐘
25.1 MySQL數據庫管理系統418 
25.1.1數據庫安裝與配置418 
25.1 .2連接MySQL服務器422 
25.1.3常見的管理命令425 
25.2 Kotlin與DSL語言429 
25.3使用Exposed框架430 
25.3.1配置項目430 
25.3.2面向DSL API 431 
25.3.3面向對象API 434 
25.4案例:多表連接查詢操作436 
25.4.1創建數據庫437 
25.4.2配置SQL日誌438 
25.4.3實現查詢438
 
第26章反射442 
本章視頻:34分鐘
26.1 Kotlin反射API 442 
26.2引用類443 
26.3調用函數445 
26.4調用構造函數446 
26.5調用屬性448 
第27章註解451 
本章視頻:23分鐘
27.1元註解451 
27.2自定義註解453
27.2.1聲明註解453 
27.2.2案例:使用元註解454 
27.2.3註解目標聲明456 
27.2.4案例:讀取運行時註解信息457 
第5篇項目實戰
本篇視頻:621分鐘
第28章項目實戰1:開發PetStore寵物商店項目460 
本章視頻:309分鐘
28.1系統分析與設計460 
28.1.1項目概述460 
28.1.2需求分析461 
28.1.3原型設計461 
28.1.4數據庫設計463 
28.1.5架構設計465 
28.1 .6系統設計466 
28.2任務1:創建數據庫467 
28.2.1迭代1.1:安裝和配置MySQL數據庫467 
28.2.2迭代1.2:編寫數據庫DDL腳本467 
28.2.3迭代1.3:插入初始數據到數據庫468 
28.3任務2 :初始化項目469 
28.3.1迭代2.1:配置項目469 
28.3.2迭代2.2:添加資源圖片470 
28.3.3迭代2.3:添加包471 
28.4任務3:編寫數據持久層代碼471 
28.4.1迭代3.1:編寫實體類471 
28.4.2迭代3.2:創建數據表類474
28.4.3迭代3.3:編寫DAO類475 
28.5任務4:編寫表示層代碼483 
28.5.1迭代4.1:編寫啟動類483 
28.5.2迭代4.2:編寫自定義窗口類——MyFrame 483 
28.5.3迭代4.3:用戶登錄窗口485 
28.5.4迭代4.4:商品列表窗口487 
28.5.5迭代4.5:商品購物車窗口495 
28.6任務5:應用程序打包發布503 
28.6.1迭代5.1:處理TODO和FIXME任務503 
28.6.2迭代5.2:打包503 
第29章項目實戰2:開發Kotlin版QQ2006聊天工具507 
本章視頻:312分鐘
29.1系統分析與設計507 
29.1.1項目概述507 
29.1.2需求分析508 
29.1.3原型設計509 
29.1.4數據庫設計509 
29.1.5網絡拓撲圖512 
29.1.6系統設計512 
29.2任務1:創建服務器端數據庫513 
29.2.1迭代1.1:安裝和配置MySQL數據庫513 
29.2.2迭代1.2:編寫數據庫DDL腳本514 
29.2. 3迭代1.3:插入初始數據到數據庫514 
29.3任務2:初始化項目515
29.3.1任務2.1:配置項目515 
29.3.2任務2.2:添加資源圖片516 
29.3.3任務2.3:添加包517 
29.4任務3:編寫服務器端外圍代碼517 
29.4.1任務3.1:創建數據表類517 
29.4 .2任務3.2:編寫UserDAO類518 
29.4.3任務3.3:編寫ClientInfo類521 
29.5任務4:客戶端UI實現521 
29.5.1迭代4.1:登錄窗口實現521 
29.5.2迭代4.2:好友列表窗口實現525 
29.5 .3迭代4.3:聊天窗口實現529 
29.6任務5:用戶登錄過程實現533 
29.6.1迭代5.1:客戶端啟動533 
29.6.2迭代5.2:客戶端登錄編程535 
29.6.3迭代5.3:服務器啟動538 
29.6. 4迭代5.4:服務器驗證編程539 
29.7任務6:刷新好友列表541 
29.7.1迭代6.1:刷新好友列表服務器端編程542 
29.7.2迭代6.2:刷新好友列表客戶端編程543 
29.8任務7:聊天過程實現547 
29.8.1迭代7.1:客戶端用戶1向用戶3發送消息548 
29.8.2迭代7.2:服務器接收用戶1消息與轉發給用戶3消息549
29.8.3迭代7.3:客戶端用戶3接收用戶1消息551 
29.9任務8:用戶下線552 
29.9.1迭代8.1:客戶端編程553 
29.9.2迭代8.2:服務器端編程554


作者介紹


作者:關東昇
關東昇,一個在IT領域摸爬滾打20多年的老程序員、培訓師、作者。精通多種IT技術。
參與設計和開發北京市公交一卡通大型項目,開發國家農產品追溯系統、金融系統微博等移動客戶端項目,並在App Store發布多款遊戲和應用軟件。
近期為中國移動、中國聯通、南方航空、中石油、工商銀行、平安銀行和天津港務局等企事業單位授課。
著有《iOS開髮指南》《從零開始學Swift》《Android網絡遊戲開發實戰》《Cocos2d-x實戰》系列和《JSP網絡程序設計》等40多本計算機書籍。




相關書籍

Reactive Web Applications: Covers Play, Akka, and Reactive Streams

作者 Manuel Bernhardt

2018-08-15

ASP.NET Core 應用開發項目實戰

作者

2018-08-15

ASP.NET 專題實務 (I):C# 入門實戰

作者 周棟祥 博士 MIS2000 Lab. 吳進魯

2018-08-15