《Java软件开发》PDF下载

  • 购买积分:21 如何计算积分?
  • 作  者:(英)Russel Winder,(英)Graham Roberts著;窦巍译
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2004
  • ISBN:711511806X
  • 页数:765 页
图书介绍:本书是专门为Java软件开发课程编写的教材,旨在帮助读者学习Java程序设计和软件开发。

第一部分 对象和类的编程 3

第1章 简介 3

1.1 从这里开始 3

1.2 Java简史 3

目录 3

1.3 Java生逢其时 5

1.4 Java是什么 5

1.5 Java2平台 7

1.7 Java的体系结构是平台无关的 8

1.6 Java的应用程序和小应用程序 8

1.8 Java不是玩笑 9

1.9 小结 9

第2章 程序设计基础 10

2.1 引言 10

2.2 语句的顺序 11

2.3 迭代 13

2.3.1 Java的while语句和复合语句 14

2.4 选择语句 15

2.3.2 Java的do语句 15

2.4.1 Java的if语句 16

2.4.2 Java的break语句 17

2.5 变量 18

2.5.1 变量的命名 18

2.5.2 赋值 19

2.5.3 变量的类型 19

2.5.4 初始化变量 20

2.5.6 变量的比较 21

2.5.5 变量和类型检查 21

2.6 编写一个简单的Java程序(程序1) 22

2.7 使用注释 24

2.8 输出语句 25

2.9 输入语句 26

2.10 交互式程序 27

2.10.1 程序2——基本的输入输出 27

2.10.2 程序3——使用字符串 28

2.10.3 程序4——使用表达式 30

2.12 复习题 34

2.11 小结 34

2.13 练习题 35

2.14 挑战题 36

第3章 向程序中增加结构 37

3.1 引言 37

3.2 抽象和封装 38

3.3 方法 38

3.3.1 从方法返回值 40

3.3.3 方法的参数 41

3.3.2 void方法和类型 41

3.3.4 多个方法参数 42

3.3.5 递归 43

3.4 如何在程序中使用方法 44

3.4.1 例程:乘法表程序 44

3.4.2 例程:回文程序 46

3.5 过程分解 50

3.6 封装 51

3.6.1 作用域与生存期 52

3.6.2 命名与作用域 53

3.7.1 递增,递减和赋值运算符 54

3.7 更多的运算符 54

3.7.2 算术表达式和类型 55

3.8 更多的控制语句 55

3.8.1 for循环语句 55

3.8.2 例程:字符三角形程序 56

3.8.3 例程:字符矩形(CharacterRectangle)程序 57

3.8.4 switch语句 59

3.8.5 例程:二进制转十进制程序 60

3.10 复习题 64

3.9 小结 64

3.11 练习题 65

3.12 挑战题 66

第4章 画图 68

4.1 引言 68

4.2 绘图 68

4.2.1 画一条线段 70

4.2.2 画矩形、正方形、椭圆和圆 72

4.2.4 创建新的图形 73

4.2.3 其他的标准图形 73

4.3 绘图的属性 74

4.3.1 颜色 74

4.3.2 线宽 75

4.3.3 图形的填充 75

4.4 绘制文本 76

4.5 程序例程 77

4.5.1 例程:棋盘程序 77

4.5.2 例程:螺旋线程序 79

4.5.3 曲线图 81

4.6 小结 83

4.7 复习题 84

4.8 练习题 84

4.9 挑战题 85

第5章 容器类介绍 86

5.1 引言 86

5.2 数组 86

5.2.1 声明数组 87

5.2.2 数组索引 88

5.2.3 数组用作参数和返回值 89

5.2.4 例程:求平均数程序 90

5.2.5 Array类 91

5.2.6 多维数组 91

5.2.7 数组初始化表达式 93

5.2.8 AddUpColumns程序 93

5.2.9 字符和字节数组 94

5.2.10 main方法的参数 95

5.3 容器(Container)类 96

5.3.1 ArrayList类 97

5.3.2 把数值存入容器 98

5.3.3 例程:AverageUsingArrayList 99

5.4 数据文件 100

5.4.1 基于文本的数据 100

5.4.2 用FileInput类读取数据 100

5.4.3 用FileOutput类写数据 102

5.4.4 例程:显示文本文件 103

5.4.5 例程:文件复制 104

5.4.6 例程:单词统计 107

5.4.7 例程:图形文件 108

5.5 小结 109

5.6 复习题 110

5.7 练习题 111

5.8 挑战题 111

第6章 类和对象程序设计 112

6.1 引言 112

6.2 创建新的数据类型 112

6.2.1 栈对象 113

6.2.2 Stack类 114

6.2.3 Java栈类——第一个版本 115

6.3 类与类型的关系 116

6. 4方法的命名和作用域 117

6.5 对象初始化 119

6.5.1 实例变量的直接初始化 120

6.5.2 构造函数(Constructor) 120

6.5.3 实例初始化块 121

6.6 对象引用 122

6.5.4 多种方法如何选择 122

6.6.1 删除旧的对象 123

6.6.2 对象与基本类型 124

6.6.3 对象与方法参数 124

6.6.4 null 126

6.6.5 this操作符 126

6.6.6 静态变量和静态方法 127

6.7 类的几个例子 129

6.7.1 例程:Name类 129

6.7.2 例程:Matrix类 130

6.7.3 例程:Graph类 132

6.8 用类和对象进行程序设计 136

6.8.1 对象用来提供服务 137

6.8.2 类与封装 137

6.9 小结 138

6.10 复习题 138

6.11 练习题 139

6.12 挑战题 139

7.1 引言 140

7.2 关联 140

第7章 类关系详述 140

7.2.1 对象所有权(OwnerShip) 141

7.2.2 有效地使用关联 141

7.3 继承性 141

7.3.1 使用继承 142

7.3.2 protected 143

7.3.3 继承和构造函数 144

7.3.4 超类 144

7.3.5 IntQueue与IntDequeue的实现 145

7.3.6 隐藏名称 147

7.3.7 静态变量和继承 147

7.4 关联与继承之间的抉择 148

7.5 继承与类型 149

7.6 Object类 151

7.6.1 容器类和对象 151

7.6.2 Class类和Instanceof运算符 154

7.7 方法的覆盖 155

7.8 继承的层次体系 157

7.9 接口 158

7.10 对象的复制和比较 160

7.11 嵌入类 161

7.12 包 161

7.13 例程:再次研究Matrix类 163

7.14 可复用性与组件 168

7.15 小结 169

7.17 练习题 170

7.18 挑战题 170

7.16 复习题 170

第8章 异常和线程 171

8.1 异常 171

8.1.1 错误的种类 171

8.1.2 捕获异常 172

8.1.3 抛出异常 173

8.1.4 finally块 174

8.1.5 使用异常的重要性 175

8.1.6 例程:Queue类中使用异常 175

8.2 线程——可以一次做多件事情 177

8.2.1 使用线程 178

8.2.3 线程调度 179

8.2.2 线程同步 179

8.2.4 一个线程的例子 180

8.3 小结 183

8.4 复习题 183

8.5 练习题 184

8.6 挑战题 184

9.1 引言 185

9.2 面向对象的软件工程 185

第9章 程序设计过程 185

9.3 为什么要用面向对象方法 186

9.3.1 一个比喻——路由计划 186

9.3.2 问题域概念 187

9.4 编写程序 187

9.4.1 概览 187

9.4.2 收集用户需求 189

9.4.3 分析 190

9.4.4 设计、实现和测试 194

9.4.6 程序测试与交付 195

9.4.5 复审和迭代 195

9.4.7 调试 196

9.5 维护 197

9.6 实践和经验 198

9.7 小结和问题 198

9.8 复习题 199

9.9 练习题 199

9.10 挑战题 200

10.2 需求和任务场景 201

10.1 引言 201

第10章 一个程序设计实例 201

10.2.1 场景1——开一个新账户 202

10.2.2 场景2——结清账户 202

10.2.3 场景3——查询账户余额 203

10.2.4 场景4——向账户中存款 203

10.2.5 场景5——从账户中取款 203

10.2.6 场景结果 203

10.3 面向对象分析 204

10.3.1 寻找合适的类 204

10.3.2 修正类 206

10.3.3 回顾类的动态行为 208

10.3.4 使用CRC 209

10.4 程序设计——第一次迭代 209

10.4.1 Bank类 209

10.4.2 Account类 210

10.4.3 Account的子类 211

10.4.4 Customer类 211

10.4.5 第一次回顾 211

10.5.1 Bank类的第二次设计 212

10.5 程序设计——第二次迭代 212

10.5.2 Account类第二次设计 214

10.6 main方法 214

10.7 测试 215

10.8 设计中不尽人意的地方 215

10.9 小结 216

10.10 复习题 216

10.11 练习题 217

10.12 挑战题 217

11.1.1 可视化组件和Swing库 218

第11章 用户界面设计 218

11.1 引言 218

11.1.2 Swing和AWT 219

11.2 核心的GUI概念 219

11.2.1 例程:HelloGoodbye 219

11.2.2 创建窗口 220

11.2.3 创建Swing GUI组件 221

11.2.4 容器和布局(Layout)管理器 222

11.2.5 布局管理器优点 223

11.2.6 不同的布局管理器 224

11.2.7 窗口显示 225

11.2.8 事件 225

11.2.9 运行和终止HelloGoodbye程序 227

11.2.10 HelloGoodbye程序的总结 227

11.3 使用GUI作为文本输入 228

11.4 实例:一个非常简单的文本编辑器 230

11.5 菜单 234

11.6 绘图 236

11.8 复习题 237

11.7 小结 237

11.9 练习题 238

11.10 挑战题 238

第二部分 建立用户类库 243

第12章 建立类库 243

12.1 引言 243

12.2 介绍一个包的体系结构 245

12.3 避免假定 246

12.4 包的名称 247

12.5 如何迭代 248

12.6 进行假设 251

12.7 次序关系 254

12.7.1 第一种实现方式 256

12.7.2 另一种替代的实现方法 258

12.7.3 第三次实现 261

12.7.4 什么样的设计是最好的 264

12.8 最重要的问题 265

12.9 更多的异常 268

12.10 文档和风格 268

12.12 复习题 269

12.11 小结 269

12.13 练习题 270

12.14 挑战题 270

第13章 序列、Array和List 271

13.1 引言 271

13.2 Sequence 272

13.3 AbstractSequence 276

13.4 Array类 278

13.5 链表 286

13.6 使用单链表 287

13.7 使用双向链表 296

13.8 如何选择使用 305

13.9 小结 306

13.10 复习题 306

13.11 练习题 307

13.12 挑战题 307

第14章 队列和栈 308

14.1 引言 308

14.2 通过一致性来使用抽象 309

14.2.1 基于序列的实现 310

14.2.2 循环数组的实现 315

14.2.3 链表的实现 319

14.2.4 使用队列的例子 319

14.3 通过继承来使用抽象 321

14.4 通过关联来使用抽象 321

14.5 类型安全的队列 326

14.6 双端队列 328

14.7 关于设计方法的思考 333

14.8 栈 334

14.9 使用栈的例子 335

14.10 小结 337

14.11 复习题 337

14.12 练习题 337

14.13 挑战题 337

第15章 树 338

15.1 引言 338

15.2 树的操作 340

15.3 有序二叉树 353

15.4 其他二叉树 360

15.5 小结 361

15.6 复习题 361

15.7 练习题 362

15.8 挑战题 362

第16章 堆结构 363

16.1 引言 363

16.2 插入数据 365

16.3 删除数据 366

16.4 类的声明 367

16.5 使用堆的例子 375

16.6 堆的其他方面 376

16.7 小结 376

16.8 复习题 377

16.9 练习题 377

第17章 优先级队列 378

17.1 引言 378

17.2 基于队列数组的优先级队列 378

17.3 基于单链表的优先级队列 383

17.4 基于堆的优先级队列 388

17.5 实现中的一些问题 388

17.6 小结 389

17.7 复习题 389

17.8 练习题 389

第18章 集合、关系和映射 391

18.1 引言 391

18.2 序言:数学术语 391

18.3 集合 392

18.4 关系 398

18.5 映射 404

18.6 映射、过程和数组 407

18.7 哈希算法 409

18.8 开放哈希表 411

18.9 链式哈希表 412

18.10 利用哈希表构造集合、关系和映射 419

18.12 复习题 424

18.13 练习题 424

18.11 小结 424

18.14 挑战题 425

第19章 查找 426

19.1 引言 426

19.2 一些限制 426

19.3 线性查找 427

19.4 对数查找 429

19.5 Collection和JGL中的查找 432

19.6 二叉查找树 433

19.8 小结 434

19.7 利用Hash表进行查找 434

19.9 复习题 435

19.10 练习题 435

19.11 挑战题 435

第20章 排序——比较的方法 436

20.1 引言 436

20.2 比较排序 436

20.3 选择排序 437

20.4 冒泡排序 439

20.5 插入排序 440

20.6 快速排序 443

20.7 二叉树排序 448

20.8 堆排序 449

20.9 归并排序 450

20.10 在JGL和Collection中的排序 453

20.11 小结 454

20.12 复习题 454

20.13 练习题 454

20.14 挑战题 455

21.2 分配式排序 456

第21章 排序——分配的方法 456

21.1 引言 456

21.3 统计排序 457

21.4 基数排序 458

21.5 小结 461

21.6 复习题 461

21.7 练习题 461

21.8 挑战题 461

22.1 引言 462

第22章 排序——外部排序 462

22.2 一些体系结构方面的问题 463

22.3 多路平衡归并排序 466

22.4 多相归并排序 471

22.5 小结 477

22.6 复习题 477

22.7 练习题 477

22.8 挑战题 478

23.1 引言 481

第23章 案例研究概述 481

第三部分 程序开发案例 481

23.2 案例研究 482

23.3 案例研究的介绍 483

第24章 邮件合并系统 484

24.1 引言 484

24.2 对问题的理解 485

24.2.1 初始分析 485

24.2.2 初始的设计 486

24.2.3 对象 488

24.2.4 更详细的设计 489

24.2.5 文件和流 490

24.3 命令行版本的实现 491

24.4 图形用户界面版本的实现 492

24.4.1 简介 492

24.4.2 用户界面 493

24.4.3 可移植性问题 497

24.4.4 源代码 498

24.4.5 测试 518

24.5 小结 520

24.6 复习题 520

24.7 练习题 520

24.8 挑战题 520

第25章 行人交叉路口模拟 521

25.1 引言 521

25.2 最初的问题定义 521

25.3.1 交通灯 522

25.3.2 车辆指挥灯 522

25.3 最初的思考 522

25.3.3 行人指挥灯 523

25.4 首轮设计 524

25.5 第二轮设计 534

25.6 第三轮设计 546

25.7 第四轮是第三轮的回顾 547

25.8 第五轮设计 556

25.9 小结 556

25.10 复习题 556

25.12 挑战题 557

25.11 练习题 557

第26章 蚁群的模拟 558

26.1 引言 558

26.2 模拟模型 559

26.3 程序说明 560

26.4 首次分析和设计 561

26.5 第二次设计 562

26.6 抽象类框架 563

26.6.1 Grid类 563

26.6.2 Factory接口 566

26.6.3 Patch类 567

26.6.4 Turtle类 569

26.6.5 Display类 570

26.6.6 Control类 571

26.6.7 MainLoop类 572

26.6.8 RandomGen类 573

26.6.9 最后完成的框架 573

26.7 具体的类 574

26.7.1 AntPath类 575

26.7.2 Ant类 575

26.7.3 AntWotld类 577

26.7.4 AntFactory类 578

26.7.5 AntApp类——应用程序类 579

26.7.6 AntDisplay类 581

26.8 AntStatus类 582

26.9 最终完成的程序 584

26.11 复习题 585

26.10 小结 585

26.12 练习题 586

26.13 挑战题 586

第四部分 Java语言参考 589

第27章 Java语言参考 589

27.1 简介 589

27.2 语法和语义 589

27.3 基本描述 590

27.4 示例程序 590

27.5 小结 591

第28章 变量、类型和表达式 592

28.1 引言 592

28.2 注释 592

28.3 标识符 596

28.4 Unicode转义符 597

28.5 字面量 597

28.6 类型(Types) 599

28.6.1 基本类型 599

28.6.2 引用类型 600

28.7 作用域 601

28.6.3 自动类型转换 601

28.8 变量 603

28.8.1 变量声明 603

28.8.2 变量初始化 604

28.8.3 数组变量 606

28.9 表达式和运算符 609

28.9.1 基本表达式 609

28.9.2 运算符 611

28.12 复习题 620

28.10 源文件 620

28.11 小结 620

28.13 练习题 621

第29章 程序流程控制 622

29.1 引言 622

29.2 选择 622

29.2.1 If语句 622

29.2.2 switch语句 626

29.3.1 While循环语句 630

29.3 迭代 630

29.3.2 do循环语句 632

29.3.3 for循环语句 634

29.3.4 循环行为检验 637

29.4 跳转语句 638

29.4.1 break语句 638

29.4.2 Continue语句 640

29.4.3 return语句 642

29.5 递归 643

29.8 练习题 645

29.6 小结 645

29.7 复习题 645

第30章 类和包 646

30.1 引言 646

30.2 类 646

30.2.1 类声明 646

30.2.2 public、private和protected 648

30.2.3 实例变量 649

30.2.4 静态变量或类变量 650

30.2.5 方法 651

30.2.6 静态方法或类方法 654

30.2.7 构造函数 656

30.2.8 静态初始化器 658

30.2.9 关键字this 660

30.3 顶层类 661

30.4 嵌套类 662

30.4.1 嵌套顶层类 662

30.4.2 成员类 664

30.4.3 局部类 667

30.4.4 匿名类 670

30.5 包 672

30.6 小结 674

30.7 复习题 674

30.8 练习题 675

第31章 继承和接口 676

31.1 引言 676

31.2 继承 676

31.2.1 继承的概念 676

31.2.2 关键字Private和Protected与继承性 678

31.2.4 方法覆盖(Overriding) 680

31.2.3 Final类 680

31.2.5 Final方法 682

31.2.6 方法调用表达式 683

31.2.7 修改后的成员类名字查找 688

31.2.8 构造函数与继承 690

31.2.9 超类(Super)和隐含命名 691

31.2.10 抽象(Abstract)类 693

31.2.11 抽象(Abstract)方法 694

31.2.12 从类对象继承的方法 695

31.3 接口 699

31.3.1 接口声明 700

31.3.2 实现 703

31.4 小结 705

31.5 复习题 705

31.6 练习题 705

第32章 异常处理 706

32.1 引言 706

32.1.1 异常类 706

32.1.2 Try、Catch与Finally 708

32.1.4 抛出(Throws)异常声明 712

32.1.3 异常的传递 712

32.1.5 关键字throw 714

32.2 小结 716

32.3 复习题 716

第33章 线程与并发 717

33.1 引言 717

33.2 Thread类 718

33.3 同步方法 722

33.4 同步语句 726

33.5 小结 727

33.6 复习题 727

33.7 练习题 727

第五部分 附录 731

附录A 术语表 731

B.2 基本概念 736

B.3 CRC卡片 736

附录B CRC分析设计方法 736

B.1 引言 736

B.4 CRC方法过程 737

B.5 一些问题 738

B.6 文档 738

B.7 设计 738

附录C 在线文档 740

附录D Java关键字 743

E.1 从这里开始 744

E.2 编译和运行Java程序 744

附录E Java程序编写过程 744

E.3 使用Keyboardlnput、Filelnput和FileOutput类 745

E.4 使用DrawFrame和Drawpanel类 745

E.5 使用CLASSPATH 745

附录F Keyboardlnput类 747

附录G DrawFrame类 750

附录H DrawPanel类 752

附录I FileInput类 754

附录J FileOutput类 758

附录K ADS库 761

附录L 参考资料 763