图书目录

目录

第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