目录

第一部分 面向对象基础

第1章 对象和类 ………………………………1

1.1   对象和类 …………………………………1

1.2   创建对象 …………………………………1

1.3   调用方法 …………………………………2

1.4   参数 ………………………………………3

1.5   数据类型 …………………………………4

1.6   多个实例 …………………………………5

1.7   状态 ………………………………………5

1.8   对象中的字段和方法 ……………………6

1.9   对象交互 …………………………………7

1.10   源代码……………………………………8

1.11   另一个例子………………………………9

1.12   返回值……………………………………9

1.13   对象作为参数进行传递 ………………10

小结 ……………………………………………11

关键术语 ………………………………………11

第2章 理解类的定义 ………………………13

2.1   售票机……………………………………13

2.2   检查类的定义……………………………14

2.3   字段、构造器和方法……………………16

2.3.1   字段 …………………………………17

2.3.2   构造器 ………………………………19

2.4   通过参数传递数据………………………20

2.5   赋值………………………………………21

2.6   访问器方法………………………………22

2.7   修改器方法………………………………24

2.8   在方法中打印……………………………25

2.9   简易型售票机的总结……………………27

2.10   对售票机设计的探讨 …………………28

2.11   做选择:条件语句 ……………………28

2.12   高级条件语句的例子 …………………31

2.13   局部变量 ………………………………32

2.14   字段、参数和局部变量 ………………33

2.15   改进型售票机的总结 …………………34

2.16   自我复习练习题 ………………………34

2.17   回顾一个熟悉的例子 …………………36

小结 ……………………………………………39

关键术语 ………………………………………39

第3章 对象交互 ……………………………42

3.1   时钟的例子………………………………42

3.2   抽象与模块化……………………………42

3.3   软件中的抽象……………………………43

3.4   在时钟例子里的模块化…………………43

3.5   实现时钟显示器…………………………44

3.6   类图与对象图……………………………45

3.7   基本类型和对象类型……………………47

3.8   ClockDisplay的源代码 ………………48

3.8.1   NumberDisplay类 …………………48

3.8.2   字符串拼接 …………………………49

3.8.3   取模运算符 …………………………50

3.8.4   ClockDisplay类 …………………51

3.9   对象创建对象……………………………54

3.10   多个构造器 ……………………………55

3.11   方法调用 ………………………………55

3.11.1   内部方法调用………………………55

3.11.2   外部方法调用………………………56

3.11.3   时钟显示器的总结…………………57

3.12   另一个对象交互的例子 ………………57

3.12.1   邮件系统的例子……………………58

3.12.2   this关键字 ………………………59

3.13   使用调试器 ……………………………60

3.13.1   设置断点……………………………60

3.13.2   单步执行……………………………61

3.13.3   单步进入方法………………………62

3.14   方法调用回顾 …………………………63

小结 ……………………………………………63

关键术语 ………………………………………64

第4章 对象集合 ………………………………65

4.1   在可变容量的容器中存放对象…………65

4.2   个人记事本………………………………65

4.3   初涉类库…………………………………66

4.4   容器的对象结构…………………………67

4.5   泛型类……………………………………69

4.6   容器内的编号……………………………69

4.7   从容器中删除对象………………………70

4.8   处理整个容器……………………………71

4.8.1   for-each循环………………………72

4.8.2   while循环 …………………………73

4.8.3   遍历容器 ……………………………76

4.8.4   索引存取与迭代器的比较 …………77

4.9   记事本例子的总结………………………77

4.10   另一个例子:拍卖系统 ………………78

4.10.1   Lot类 ………………………………78

4.10.2   Auction类…………………………79

4.10.3   匿名对象……………………………81

4.10.4   使用容器……………………………82

4.11   可变容量容器的总结 …………………84

4.12   固定容量的容器 ………………………84

4.12.1   日志文件分析器……………………84

4.12.2   声明数组变量………………………86

4.12.3   创建数组对象………………………87

4.12.4   使用数组对象………………………88

4.12.5   分析日志文件………………………88

4.12.6   for循环 ……………………………89

小结 ……………………………………………93

关键术语 ………………………………………93

第5章 高级行为 ……………………………95

5.1 类库的文档………………………………95

5.2 TechSupport系统 ………………………96

5.2.1 研究TechSupport系统………………96

5.2.2 阅读代码 ……………………………97

5.3 阅读类文档 ……………………………101

5.3.1 接口与实现 ………………………102

5.3.2 使用类库中的类的方法 …………102

5.3.3 检查字符串是否相等 ……………104

5.4  增加随机行为…………………………104

5.4.1 Random类 …………………………105

5.4.2 在有限范围内产生随机数 ………105

5.4.3 产生随机的回答 …………………106

5.4.4 阅读参数化的类的文档 …………108

5.5 包和导入 ………………………………109

5.6   使用映射表示关联 ……………………109

5.6.1   映射的概念…………………………110

5.6.2   使用HashMap………………………110

5.6.3   在TechSupport系统中使用映射 …111

5.7   使用集合 ………………………………113

5.8   分割字符串 ……………………………114

5.9   完成TechSupport系统 …………………115

5.10   编写类文档……………………………116

5.10.1   在BlueJ中使用javadoc …………117

5.10.2   类文档的组成 ……………………117

5.11   公共与私有……………………………118

5.11.1   信息隐藏 …………………………119

5.11.2   私有方法和公共字段 ……………119

5.12   通过接口研究类………………………120

5.13   类变量和常量…………………………122

5.13.1   static关键字 ……………………122

5.13.2   常量 ………………………………124

小结 …………………………………………124

关键术语 ……………………………………125

第6章 使对象正常运行 ……………………126

6.1   引言 ……………………………………126

6.2   测试和调试 ……………………………126

6.3   用BlueJ进行单元测试 …………………127

6.3.1   使用检查器…………………………130

6.3.2   正向测试和反向测试………………132

6.4   测试自动化 ……………………………132

6.4.1   回归测试……………………………132

6.4.2   自动检查测试结果…………………134

6.4.3   记录测试……………………………136

6.4.4   夹具…………………………………138

6.5   模块化和接口 …………………………139

6.6   调试场景 ………………………………140

6.7   注释与风格 ……………………………141

6.8   人工走查 ………………………………141

6.8.1   高层次的走查………………………142

6.8.2   用走查来检查状态…………………143

6.8.3   口头走查……………………………145

6.9   打印语句 ………………………………145

6.10   选择测试策略…………………………148

6.11   调试……………………………………148

6.12   在实战中使用这些技术………………149

小结 …………………………………………149

关键术语 ……………………………………149

第7章 类的设计 ……………………………150

7.1   引言 ……………………………………150

7.2   world-of-zuul游戏的例子………………151

7.3   耦合和内聚的介绍 ……………………152

7.4   代码重复 ………………………………153

7.5   扩展 ……………………………………157

7.5.1   任务…………………………………157

7.5.2   找到相关的源代码…………………157

7.6   耦合 ……………………………………158

7.7   责任驱动的设计 ………………………162

7.8   改动局部化 ……………………………164

7.9   隐性耦合 ………………………………165

7.10   预见性…………………………………167

7.11   内聚……………………………………168

7.11.1   方法的内聚 ………………………168

7.11.2   类的内聚 …………………………169

7.11.3   内聚对于可读性的好处 …………170

7.11.4   内聚对于重用的好处 ……………170

7.12   重构……………………………………171

7.12.1   重构与测试 ………………………171

7.12.2   重构的例子 ………………………171

7.13   语言无关的重构………………………174

7.13.1   枚举类型 …………………………174

7.13.2   命令界面的进一步解耦 …………175

7.14   设计原则………………………………177

7.15   脱离BlueJ执行程序 …………………178

7.15.1   类方法 ……………………………178

7.15.2   main方法 …………………………178

7.15.3   类方法的限制 ……………………179

小结 …………………………………………179

关键术语 ……………………………………179

第二部分 应用程序结构

第8章 通过继承改进结构 …………………181

8.1   DoME例子………………………………181

8.1.1   DoME的类与对象 …………………182

8.1.2   DoME源代码 ………………………184

8.1.3   DoME程序的讨论 …………………189

8.2   使用继承 ………………………………189

8.3   继承层次 ………………………………191

8.4   Java的继承 ……………………………191

8.4.1   继承与访问权限……………………192

8.4.2   继承与初始化………………………192

8.5   DoME:增加另一种媒体类型…………194

8.6   (迄今为止)继承的优点 ……………196

8.7   子类型 …………………………………196

8.7.1   子类与子类型………………………197

8.7.2   子类型与赋值………………………198

8.7.3   子类型与参数传递…………………199

8.7.4   多态变量……………………………199

8.7.5   换型…………………………………200

8.8   Object类 ………………………………201

8.9   自动包装与包裹类 ……………………202

8.10   容器层次………………………………202

小结 …………………………………………202

关键术语 ……………………………………203

第9章 继承深入 ……………………………204

9.1   问题:DoME的打印方法………………204

9.2   静态类型和动态类型 …………………205

9.3   覆写 ……………………………………208

9.4   动态查找方法 …………………………209

9.5   方法中的超类调用 ……………………211

9.6   方法多态性 ……………………………212

9.7   Object的方法:toString …………212

9.8   受保护的访问 …………………………214

9.9   有覆写的继承的另一个例子 …………216

小结 …………………………………………218

关键术语 ……………………………………218

第10章 高级抽象技术 ……………………220

10.1   仿真……………………………………220

10.2   狐狸与兔子仿真………………………220

10.2.1   foxes-and-rabbits工程 ……………221

10.2.2   Rabbit类 …………………………223

10.2.3   Fox类………………………………225

10.2.4   Simulator类:设置 ……………228

10.2.5   Simulator类:仿真的一步 ……231

10.2.6   采取措施改进仿真 ………………232

10.3   抽象类…………………………………232

10.3.1   Animal超类 ………………………233

10.3.2   抽象方法 …………………………233

10.3.3   抽象类 ……………………………235

10.4   进一步的抽象方法……………………237

10.5   多继承…………………………………239

10.5.1   Actor类 …………………………239

10.5.2   通过抽象实现的灵活性 …………240

10.5.3   有选择地绘画 ……………………240

10.5.4   可以画的角色:多继承 …………240

10.6   接口……………………………………241

10.6.1   Actor接口 ………………………241

10.6.2   接口的多继承 ……………………243

10.6.3   作为类型的接口 …………………243

10.6.4   作为规范的接口 …………………244

10.6.5   接口的其他例子 …………………245

10.6.6   抽象类还是接口 …………………246

10.7   继承的总结……………………………246

小结 …………………………………………246

关键术语 ……………………………………246

第11章 构造图形用户界面程序 …………248

11.1   引言……………………………………248

11.2   组件、布局和事件处理………………248

11.3   AWT和Swing …………………………249

11.4   ImageViewer例子 ……………………249

11.4.1   第一个实验:创建一个框架 ……250

11.4.2   加入简单的组件 …………………251

11.4.3   加入菜单 …………………………253

11.4.4   事件处理 …………………………253

11.4.5   集中接收事件 ……………………254

11.4.6   内部类 ……………………………256

11.4.7   匿名的内部类 ……………………257

11.5   ImageViewer 1.0:第一个完整的版本…258

11.5.1   图像处理类 ………………………259

11.5.2   加入图像 …………………………260

11.5.3   布局 ………………………………261

11.5.4   嵌套的容器 ………………………263

11.5.5   图像过滤器 ………………………265

11.5.6   对话框 ……………………………267

11.6   ImageViewer 2.0:改进的程序结构…269

11.7   ImageViewer 3.0:更多界面组件……273

11.7.1   按钮 ………………………………273

11.7.2   边界 ………………………………275

11.8   进一步的扩展…………………………276

11.9   另一个例子:SoundPlayer……………277

小结 …………………………………………279

关键术语 ……………………………………280

第12章 错误处理 …………………………281

12.1   address-book工程 ……………………281

12.2   防御性编程……………………………285

12.2.1   客户-服务器交互 ………………285

12.2.2   参数检查 …………………………286

12.3   服务器错误报告………………………287

12.3.1   通知用户 …………………………287

12.3.2   通知客户对象 ……………………287

12.4   异常抛出原则…………………………290

12.4.1   抛出异常 …………………………290

12.4.2   异常类 ……………………………291

12.4.3   异常的影响 ………………………292

12.4.4   不受检异常 ………………………292

12.4.5   阻止对象创建 ……………………293

12.5   异常处理………………………………294

12.5.1   受检异常:throws子句 …………295

12.5.2   捕捉异常:try语句………………295

12.5.3   抛出和捕捉多个异常 ……………296

12.5.4   扩散异常 …………………………298

12.5.5   finally子句 ……………………298

12.6   定义新的异常类………………………299

12.7   使用断言………………………………300

12.7.1   内部一致性检查 …………………300

12.7.2   断言语句 …………………………301

12.7.3   使用断言的指南 …………………302

12.7.4   断言与BlueJ单元测试框架 ………303

12.8   错误恢复和错误避免…………………303

12.8.1   错误恢复 …………………………303

12.8.2   错误避免 …………………………304

12.9   案例研究:文本输入-输出…………305

12.9.1   阅读器、写入器和流 ……………306

12.9.2   address-book-io工程………………306

12.9.3   用FileWriter类做文本输出……308

12.9.4   用FileReader类做文本输入……309

12.9.5   Scanner:从终端读输入 ………310

12.9.6   对象串行化 ………………………310

小结 …………………………………………311

关键术语 ……………………………………311

第13章 应用程序设计 ……………………312

13.1   分析与设计……………………………312

13.1.1   动词-名词方法 …………………312

13.1.2   电影院订票系统的例子 …………312

13.1.3   发现类 ……………………………313

13.1.4   使用CRC卡 ………………………313

13.1.5   场景 ………………………………314

13.2   类的设计………………………………316

13.2.1   设计类的界面 ……………………317

13.2.2   用户界面设计 ……………………317

13.3   文档……………………………………318

13.4   合作……………………………………318

13.5   原型……………………………………318

13.6   软件成长………………………………319

13.6.1   瀑布模型 …………………………319

13.6.2   迭代开发 …………………………319

13.7   使用设计模式…………………………320

13.7.1   模式的结构 ………………………321

13.7.2   装饰 ………………………………321

13.7.3   单件 ………………………………322

13.7.4   工厂方法 …………………………322

13.7.5   观察者 ……………………………323

13.7.6   模式总结 …………………………324

小结 …………………………………………325

关键术语 ……………………………………325

第14章 案例研究 …………………………326

14.1   案例研究………………………………326

14.2   分析与设计……………………………327

14.2.1   发现类 ……………………………327

14.2.2   使用CRC卡 ………………………327

14.2.3   场景模拟 …………………………328

14.3   类设计…………………………………329

14.3.1   设计类的接口 ……………………329

14.3.2   合作者 ……………………………329

14.3.3   概要实现 …………………………330

14.3.4   测试 ………………………………333

14.3.5   遗留问题 …………………………334

14.4   迭代开发………………………………334

14.4.1   开发步骤 …………………………334

14.4.2   第一个阶段 ………………………335

14.4.3   第一阶段的测试 …………………338

14.4.4   开发的下一个阶段 ………………338

14.4.5   下一步开发的想法 ………………339

14.4.6   重用 ………………………………339

14.5   另一个例子……………………………340

14.6   百尺竿头………………………………340

附录A 使用BlueJ ……………………………341

附录B Java数据类型 ………………………342

附录C Java控制结构 ………………………344

附录D 运算符 ………………………………349

附录E 脱离BlueJ运行Java程序 …………351

附录F 配置BlueJ ……………………………354

附录G 使用调试器 …………………………356

附录H JUnit单元测试工具 …………………360

附录Ijavadoc ………………………………362

附录J 程序风格指南 ………………………365

附录K 重要的类库类 ………………………368

索引 ……………………………………………371

【责任编辑:云霞 TEL:(010)68476606】

点赞 0

实用java教程_实用Java教程 目录相关推荐

  1. WMI 使用教程_.NET 入门教程

    WMI 使用教程_.NET 入门教程 先介绍一下WMI 相关知识:  什么是WMI 呢? Windows 管理规范 (Windows Management Instrumentation ),它的主要 ...

  2. java核心教程_核心Java教程

    java核心教程 Welcome to Core Java Tutorial. I have written a lot on Core Java and Java EE frameworks. Th ...

  3. java与数据库教程_[求助]Java与数据库的链接的教程or资料

    展开全部 JAVA连接数据库e68a843231313335323631343130323136353331333239303864主要有两种方式: 一是用JDBC-ODBC桥来连接 二是用相关厂商提 ...

  4. java贪吃蛇教程_用Java做的贪吃蛇,简单版......

    效果图片: : 话不多说,上代码: 一共三个类: ① public class Body { int x; int y; public Body(int x, int y) { this.x = x; ...

  5. java二进制算法教程_关于JAVA入门二进制课程的笔记

    由于JAVA二进制基础那节课程讲解实在低于应该有的教学水平,故在此写下笔记. *虽然是免费课程,但是我不认为这是一个该有的[教学]课程,我是一个很认真的人,所以我决定自己做笔记,自己找资料进行学习,这 ...

  6. java画板教程_使用Java制作简易的画板教程

    drawDrawListener里面只写了画直线和曲线的方法,读者可以根据自己的需求添加,思路和方式都是一样的.Draw类里面有些需要注意的地方在这里提一下:一个是画笔g的获取一定要在窗体的可见之后采 ...

  7. java动作游戏教程_用java设计实现一个简单的动作冒险类游戏

    用java设计实现一个简单的动作冒险类游戏 1.背景 这是java老师布置的本周作业,具体题目截图如下 2.分析 在UML图已经给出的前提下,此作业很容易.自己在此基础上,加了个简单的界面设计和玩家设 ...

  8. bat批处理教程_超级详细教程

    bat批处理教程(1) 这是一篇技术教程,我会用很简单的文字表达清楚自己的意思,你要你识字就能看懂,就能学到知识.写这篇教程的目的,是让每一个看过这些文字的朋友记住一句话:如果爱可以让事情变的更简单, ...

  9. java 示例_最佳Java示例

    java 示例 什么是Java? (What is Java?) Java is a programming language developed by Sun Microsystems in 199 ...

  10. 尚学堂java培训_送给 Java 自学者或者初学者的最全知识清单,2020 年 Java 就该这么学...

    最近逛知乎,发现有很多想自学 Java 或者 Java 初学者提问,不知道如何学习 Java?我接触 Java 快 8 年的时间了,一直从事 Java 开发工作,自己一直升级打怪,对于如何更好的学习 ...

最新文章

  1. 浅析C#发送短信的原理
  2. Hadoop3 Hive Spark完整安装与实践
  3. Linux常用命令 一
  4. vim之添加多行和删除多行
  5. Spring Cloud服务网关(Zuul)的配置项sensitiveHeaders
  6. Android操作系统版本
  7. GRPC编译安装及测试
  8. DHTML【6】--CSS
  9. 软件集合:人人刚需的神器,已解锁使用
  10. 1380Problem C:zyf的A+B问题
  11. noip 2013 积木游戏
  12. Docker Swarm secrets
  13. addrule android用法,RelativeLayout.LayoutParams 使用addRule失效的问题解决办法
  14. HTTP,TCP,UDP常见端口对照表大全
  15. js:webpack插件BannerPlugin添加版权信息
  16. 公司股权可以无偿转让吗
  17. 【Python】爬取百度图片和必应图片
  18. Java回文数代码(初学者易懂)
  19. ueditor百度富文本编辑器隐藏一下不需要的工具按钮
  20. oracle 中 job 是什么,oracle中的job

热门文章

  1. 学习C++ Windows 编程(你的第一个Windows程序)
  2. DataTables 查询
  3. datatables mysql_jquery - Datatables - 数据表外的搜索框
  4. 这6个免费去水印工具,一定要码住!
  5. 和小程序斗智斗勇那些事
  6. “技术人”频道头条新闻断链
  7. Xmas!送你Flutter Animation小星星!
  8. java interface和impl,被测单元:Impl还是接口?
  9. 仿应学短视频APP项目功能分析说明书
  10. 美图将手机业务授权给小米背后:全年最高亏12亿 期待减负