第1章 现代软件开发概述 1
1.1 简介 1
1.2 软件生命周期 2
1.2.1 问题规范 2
1.2.2 程序设计 5
1.2.3 算法和数据结构 9
1.2.4 编码和调试 11
1.2.5 测试和验证 15
1.2.6 后生产阶段 19
1.3 练习 21
第1部分 面向对象软件开发 26
第2章 面向对象设计和编程 26
2.1 简介 26
2.2 面向对象编程 29
2.2.1 对象 29
2.2.2 类 32
2.2.3 继承 32
2.3 面向对象设计 37
2.3.1 定位类 38
2.3.2 统一建模语言 42
2.4 练习 52
第3章 使用Java的面向对象编程 55
3.1 简介 55
3.2 Java中的类定义 55
3.2.1 状态 57
3.2.2 行为 61
3.2.3 标识 74
3.2.4 示例:Square类 86
3.3 继承 90
3.3.1 扩充类 91
3.3.2 抽象类 97
3.3.3 接口 99
3.3.4 多态性 102
3.3.5 Object类 103
3.4 编译和运行Java程序 106
3.4.1 基本概念 106
3.4.2 编译和执行 107
3.5 练习 108
第4章 面向对象软件开发的案例分析 112
4.1 简介 112
4.2 问题要求 112
4.3 程序规范 114
4.4 软件设计 116
4.4.1 标识类 116
4.4.2 状态和行为 117
4.4.3 继承和接口 121
4.4.4 UML图 123
4.5 实现细节 125
4.6 测式 147
4.7 练习 151
第2部分 算法和数据结构 158
第5章 算法分析 158
5.1 简介 158
5.2 算法的效率 159
5.3 渐近分析 161
5.3.1 一般情况和最差情况分析 161
5.3.2 算法的关键部分 162
5.3.3 算法分析的示例 163
5.4 其他复杂度方法 170
5.5 递归算法分析 171
5.6 练习 176
第6章 线性数据结构 181
6.1 数据结构的分类 181
6.2 列表 184
6.2.1 简介 184
6.2.2 列表上的操作 184
6.2.3 列表的实现 192
6.3 栈 235
6.3.1 栈的操作 235
6.3.2 栈的应用 237
6.3.3 栈的实现 242
6.4 队列 248
6.4.1 队列上的操作 249
6.4.2 队列的应用 251
6.4.3 队列的实现 254
6.4.4 队列变体:双端队列和优先队列 261
6.5 练习 269
第7章 分层数据结构 274
7.1 简介 274
7.2 树 276
7.3 二叉树 279
7.3.1 简介 279
7.3.2 二叉树上的操作 280
7.3.3 通用树的二叉树表示法 291
7.3.4 二叉树的链表实现 292
7.3.5 二叉树的基于数组的实现 309
7.4 二叉搜索树 327
7.4.1 定义 327
7.4.2 在搜索操作中使用二叉搜索树 328
7.4.3 树排序 339
7.5 索引搜索树 341
7.6 堆 346
7.6.1 定义 346
7.6.2 使用数组的堆的实现 348
7.6.3 堆的应用 354
7.7 良好的近似值的重要性 357
7.8 练习 358
第8章 集和图数据结构 363
8.1 集 363
8.1.1 集上的操作 363
8.1.2 集的实现 368
8.2 映射 371
8.2.1 定义和操作 371
8.2.2 使用数组及链表的实现 375
8.2.3 散列法 376
8.3 图 396
8.3.1 简介和定义 396
8.3.2 图上的操作 406
8.3.3 实现 425
8.4 练习 429
第9章 Java集合架构 435
9.1 简介 435
9.2 Java集合架构 436
9.2.1 概要 436
9.2.2 集合 436
9.3 接口 437
9.3.1 Collection接口 437
9.3.2 Set接口和List接口 441
9.3.3 Map接口 447
9.3.4 有序接口 450
9.4 实现方式 457
9.4.1 集 458
9.4.2 列表 462
9.4.3 映射 467
9.5 算法 468
9.6 练习 470
第3部分 现代编程技术 476
第10章 异常和流 476
10.1 简介 476
10.2 Java中的异常 479
10.2.1 异常表示 479
10.2.2 生成异常 481
10.2.3 异常处理 484
10.3 设计指导原则和示例 487
10.3.1 异常 487
10.3.2 处理异常 488
10.4 流 490
10.4.1 概述 490
10.4.2 java.io程序包 491
10.4.3 使用流 494
10.5 练习 504
第11章 线程 507
11.1 简介 507
11.2 线程 509
11.2.1 创建线程 509
11.2.2 调度和线程优先权 515
11.2.3 合作多任务处理 519
11.3 同步 526
11.3.1 背景 526
11.3.2 锁 530
11.3.3 wait()和notify() 540
11.4 练习 552
第12章 图形用户界面 557
12.1 简介 557
12.2 GUI类的层次结构 558
12.2.1 简介 558
12.2.2 容器 560
12.2.3 布局管理器 562
12.3 GUI组件 568
12.4 事件和侦听器 574
12.4.1 简介 574
12.4.2 事件侦听器 575
12.4.3 鼠标事件 584
12.5 例子 587
12.6 练习 599
第13章 联网 604
13.1 简介 604
13.2 用TCP/IP联网 606
13.2.1 协议 606
13.2.2 OSI模型 608
13.3 Java中的网络通信 612
13.4 套接字类 613
13.4.1 在Java中表示地址 613
13.4.2 可靠的通信 615
13.4.3 表示数据报 623
13.4.4 不可靠的通信 626
13.5 URL类 632
13.5.1 表示一个URL 633
13.5.2 从一个URL中读取 634
13.6 安全性 635
13.7 练习 638
附录 基本的Java语法 640
A.1 简介 640
A.2 一个Java程序的结构 640
A.3 Java数据类型 642
A.3.1 基本类型 644
A.3.2 引用类型 646
A.3.3 标识符、变量声明和作用域 647
A.4 表达式 649
A.5 Java语句 652
A.5.1 赋值语句 652
A.5.2 条件语句 653
A.5.3 简单的输入/输出 657
A.5.4 迭代语句 659
A.6 方法 665