《BEGINNING Java OBJECTS从概念到代码 中文版》PDF下载

  • 购买积分:20 如何计算积分?
  • 作  者:(美)JACQUIE BARKER著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2007
  • ISBN:7115154406
  • 页数:701 页
图书介绍:本书是面向对象和Java编程方面很好的书籍。

第一部分 对象基础 2

第1章 抽象和建模 2

1.1 通过抽象来简化 2

1.2 通过抽象来概括 3

1.2.1 将抽象组织成类层次结构 3

1.2.2 将抽象作为软件开发的基础 6

1.3 抽象的重用 6

1.4 固有的问题 7

1.5 小结 9

第2章 Java基础 10

2.1 为什么选择Java 10

2.1.1 Java是体系结构中立的 10

2.1.2 Java提供“一站式服务” 13

2.1.3 Java是完全面向对象的 15

2.1.4 实践使Java更完美 16

2.1.5 Java是一种开放标准 16

2.1.6 Java是免费的 16

2.1.7 关于伪代码和真正Java代码的提醒 16

2.2 简单Java程序剖析 17

2.2.1 注释 17

2.2.2 类声明 18

2.2.3 main方法 19

2.3 Java的“机制” 19

2.3.1 把Java源代码编译成字节码 21

2.3.2 执行字节码 21

2.4 基本类型 22

2.3.3 JVM内幕 22

2.5 变量 23

2.6 变量初始化 25

2.7 String类型 25

2.8 区分大小写 26

2.9 Java表达式 27

2.9.1 算术运算符 27

2.9.2 关系和逻辑运算符 28

2.9.3 表达式求值和运算符优先级 29

2.9.4 表达式类型 30

2.10 自动类型转换和显式转型 30

2.11 循环和其他流程控制结构 32

2.11.1 if语句 32

2.11.2 switch语句 34

2.11.3 for语句 35

2.11.4 while语句 37

2.11.5 跳转语句 38

2.12 块结构语言和变量作用域 39

2.13 打印到屏幕 40

2.13.1 print与println 41

2.13.2 转义序列 42

2.14 Java风格要素 43

2.14.1 适当使用缩进 43

2.14.2 明智地使用注释 46

2.14.3 大括号位置 46

2.14.4 描述性的变量名称 47

2.15 小结 47

3.1 最简软件 49

3.1.1 功能分解 49

第3章 对象和类 49

3.1.2 面向对象方法 51

3.2 对象是什么 51

3.2.1 状态/数据/属性 52

3.2.2 行为/操作/方法 53

3.3 类是什么 53

3.3.1 关于命名约定的提示 54

3.3.2 Java风格的类声明 55

3.4 实例化 56

3.5 封装 57

3.6 用户定义类型和引用变量 57

3.7 实例化对象:近距离的审视 58

3.8 对象作为属性 63

3.8.1 一个编译计策:“框架”类 65

3.8.2 合成 66

3.8.3 引用作为属性的优点 68

3.9 面向对象编程语言的三个典型特征 69

3.10 小结 69

第4章 对象交互 70

4.1 事件驱动对象协作 70

4.2 声明方法 71

4.2.1 方法首部 72

4.2.2 方法命名约定 72

4.2.3 给方法传递实参 72

4.2.4 方法返回值类型 74

4.2.5 一个类比 74

4.2.6 方法体 75

4.2.8 return语句 76

4.2.7 特征可以按任何顺序声明 76

4.3 用方法实现业务规则 79

4.4 对象作为方法调用的环境 80

4.4.1 回顾Java表达式 82

4.4.2 捕获方法返回值 83

4.4.3 方法签名 84

4.4.4 选择描述性方法名 84

4.5 方法重载 85

4.6 对象间的消息传递 87

4.7 委托 88

4.8 获得对象句柄 88

4.9 对象作为客户和供应者 91

4.10 信息隐藏/可访问性 92

4.10.1 公有可访问性 93

4.10.2 私有可访问性 94

4.10.3 公开服务 95

4.10.4 回顾方法首部 96

4.10.5 从类的方法内部访问类的特征 96

4.11 从客户代码访问私有特征 99

4.11.1 声明访问器方法 100

4.11.2 推荐的“Get”/“Set”方法首部 101

4.11.3 属性值的“持久性” 103

4.11.4 在客户代码中使用访问器方法 103

4.12 封装+信息隐藏的能力 104

4.12.1 防止对封装数据的未授权访问 104

4.12.2 有助于保证数据完整性 105

4.12.3 当私有特征改变时限制“连锁反应” 106

4.12.4 在类自己的方法内部使用访问器方法 108

4.13 公有/私有准则的例外 111

4.13.2 例外2:内部的辅助方法 112

4.13.1 例外1:内部的辅助属性 112

4.13.3 例外3:“只读”属性 113

4.13.4 例外4:公有属性 114

4.14 构造方法 114

4.14.1 默认构造方法 114

4.14.2 编写自己的显式构造方法 115

4.14.3 给构造方法传递实参 116

4.14.4 替换默认构造方法 117

4.14.5 更精巧的构造方法 117

4.14.6 重载构造方法 118

4.14.7 关于默认构造方法的重要告诫 120

4.14.8 使用“this”关键字促进构造方法重用 121

4.15 回顾最简软件 124

4.16 小结 125

第5章 对象关系 127

5.1 关联和连接 127

5.1.1 多重性 129

5.1.2 多重性和连接 130

5.2 聚集和组合 131

5.3 继承 132

5.3.1 用新的抽象来响应多变的需求 132

5.3.2 (不适当的)方法1:修改Student类 133

5.3.3 (不适当的)方法2:“复制”Student类以创建新的Graduate-Student类 135

5.3.4 (适当的)方法3:利用继承 136

5.3.5 继承的“是一个”特性 137

5.3.6 继承的优点 139

5.3.7 类层次结构 140

5.3.9 继承真的是一种关系吗 141

5.3.8 Object类 141

5.3.10 避免类层次结构中的“连锁反应” 142

5.3.11 派生类的准则:可以做的 142

5.3.12 覆盖 142

5.3.13 重用超类行为:“super”关键字 145

5.3.14 派生类的准则:不能做的 147

5.3.15 私有特征和继承 149

5.3.16 继承和构造方法 151

5.3.17 关于多重继承 157

5.4 回顾OOPL的三个典型特征 159

5.5 小结 159

第6章 对象集合 162

6.1 什么是集合 162

6.1.2 集合组织其他对象的引用 163

6.1.1 集合是由类定义的且必须实例化 163

6.1.3 集合被封装了 164

6.2 三种一般集合类型 164

6.2.1 有序链表 164

6.2.2 字典 165

6.2.3 集(Set) 166

6.3 数组作为简单集合 167

6.3.1 声明并实例化数组 167

6.3.2 访问单个数组元素 168

6.3.3 初始化数组内容 169

6.3.4 操作对象数组 170

6.4 一个更复杂的集合类型:ArrayList类 173

6.4.1 使用ArrayList类:一个示例 173

6.4.2 导入指令和包 174

6.4.3 类的名字空间 176

6.4.4 用户定义包和默认包 177

6.4.5 泛型 178

6.4.6 ArrayList的特征 179

6.4.7 遍历ArrayList 181

6.4.8 将ArrayList的内容复制到数组 182

6.5 集合类HashMap 183

6.6 TreeMap类 187

6.7 同一对象可以同时被多个集合引用 189

6.8 创造自己的集合类型 190

6.8.1 方法1:从零开始设计一个新的集合类 190

6.8.2 方法2:扩展一个预定义集合类(MyIntCollection) 190

6.8.3 方法3:封装一个标准集合(MyIntCollection2) 194

6.8.4 权衡方法2和方法3 197

6.9 集合作为方法返回类型 198

6.10 派生类型的集合 199

6.11 回顾Student类的设计 200

6.11.1 Student类的courseLoad属性 200

6.11.2 Student类的transcript属性 201

6.11.3 transcript属性,第二种表示方法 203

6.11.4 完整的Student类数据结构 207

6.12 小结 207

第7章 其他对象概念 209

7.1 多态 209

7.2 面向对象编程语言的三种典型特征 215

7.2.1 用户定义类型的优点 215

7.2.2 继承的优点 216

7.2.3 多态的优点 216

7.3 抽象类 216

7.3.1 实现抽象方法 219

7.3.2 抽象类和实例化 220

7.3.3 声明抽象类型的引用变量 221

7.3.4 一个关于多态的有趣现象 222

7.4 接口 223

7.4.1 实现接口 225

7.4.2 另一种形式的“是一个”关系 227

7.4.3 接口和转型 228

7.4.4 实现多个接口 230

7.4.5 回顾接口和转型 232

7.4.6 接口和实例化 233

7.4.7 接口和多态 233

7.4.8 接口的重要性 234

7.5 静态特征 241

7.5.1 静态变量 242

7.5.2 一个设计改进:掩盖实现细节 245

7.5.3 静态方法 246

7.5.4 静态方法的限制 246

7.5.5 回顾Print语句的语法 248

7.5.6 实用类 248

7.5.7 final关键字 248

7.5.8 静态导入功能 251

7.5.9 自定义实用类 252

7.6 小结 253

第二部分 对象建模基础 256

第8章 对象建模过程概要 256

8.1 对象建模的主要目标 256

8.2 Jacquie建议的对象建模过程概要 259

8.2.1 关于对象建模软件工具的考虑 259

8.3 小结 261

8.2.2 提醒 261

第9章 通过用例形式化需求 262

9.1 什么是用例 262

9.1.1 功能需求与技术需求 262

9.1.2 包含用户 263

9.2 参与者 264

9.2.1 识别参与者并确定其角色 264

9.2.2 用图表示系统和参与者 265

9.3 指定用例 266

9.4 匹配用例和参与者 267

9.5 是否用图来表示用例 268

9.6 小结 269

第10章 对系统的静态/数据特征建模 270

10.1 识别恰当的类 270

10.1.1 名词短语分析 271

10.1.2 精炼候选类列表 274

10.1.3 重新审查用例 277

10.2 产生数据字典 278

10.3 确定类关联 279

10.4 识别属性 281

10.5 UML表示法:对抽象的静态特征建模 281

10.5.1 类、属性和操作 282

10.5.2 类之间的关系 283

10.5.3 反映多重性 287

10.6 对象图 289

10.7 关联作为属性 290

10.8 信息沿着关联“管道”“流动” 291

10.9 “混合与匹配”关系表示法 295

10.10 关联类 297

10.11 “完整的”学生注册系统类图 299

10.12 元数据 303

10.13 小结 304

第11章 对系统的动态/行为特征建模 306

11.1 行为如何影响状态 306

11.2 场景 310

11.2.1 表示“注册课程”用例的场景1 311

11.2.2 表示“注册课程”用例的场景2 312

11.3 顺序图 313

11.4 用顺序图确定方法 317

11.5 通信图 318

11.6 修正后的SRS类图 319

11.7 小结 320

12.1 测试模型 322

第12章 包装建模成果 322

12.2 重新审查需求 323

12.3 模型重用:关于设计模式的讨论 324

12.4 小结 326

第三部分 将对象蓝图转换为Java代码 328

第13章 完善Java知识 328

13.1 Java特定的术语 328

13.2 Java应用程序架构 331

13.3 Java归档文件(JAR) 332

13.3.1 创建JAR文件 333

13.3.2 检查JAR文件的内容 333

13.3.3 使用JAR文件内包含的字节码 334

13.3.4 从JAR文件中提取内容 334

13.3.5 “打包”整个目录结构 335

13.4 Java文档注释 336

13.5 String的对象特性 340

13.5.1 操作String 340

13.5.2 String是不可改变的 342

13.5.3 StringBuffer类 344

13.5.4 StringTokenizer类 345

13.5.5 实例化String和String常量池 347

13.5.6 测试String是否相等 349

13.6 消息链 350

13.7 用“this”关键字引用对象自己 351

13.8 Java异常处理 353

13.8.1 异常处理机制 354

13.8.2 捕获异常 361

13.8.3 解释异常栈跟踪 365

13.8.4 异常类层次结构 366

13.8.5 捕获通用Exception类型 368

13.8.6 编译器强制异常处理 369

13.8.7 利用“捕获”的异常 370

13.8.8 嵌套try/catch块 371

13.8.9 用户定义异常类型 372

13.8.10 抛出多个异常类型 374

13.9 枚举 375

13.10 给命令行驱动的程序提供输入 382

13.10.1 接受命令行参数:agrs数组 382

13.10.2 引入自定义命令行标志来控制程序行为 383

13.10.3 为输入转换使用包装类 387

13.10.4 接受键盘输入 389

13.11.1 确定对象所属的类 392

13.11 Object类的特征 392

13.11.2 测试对象是否相等 394

13.11.3 覆盖equals方法 397

13.11.4 覆盖toString方法 399

13.12 深度审视JVM内幕 401

13.12.1 JVM的类加载器 401

13.12.2 -verbose选项 402

13.12.3 main(...)的静态特性 405

13.12.4 回顾import指令 405

13.12.5 静态初始化器 407

13.13 Date类 409

13.14 重新审查可访问性 413

13.14.1 特征的默认可访问性 414

13.14.2 公有类与非公有类 414

13.14.3 回顾变量初始化 417

13.15 内部类 419

13.16 J2SE 5.0的附加改进 422

13.16.1 格式化输出 422

13.16.2 格式化输入 423

13.16.3 可变参数 425

13.17 小结 427

第14章 将模型转换为Java代码 429

14.1 关于充分利用本章和后续章节的建议 429

14.2 SRS类图回顾 430

14.2.1 Person类(定义抽象类) 431

14.2.2 Student类(通过继承重用、扩展抽象类、委托) 433

14.2.3 Professor类(双向关系) 440

14.2.4 Course类(自反关系、单向关系) 441

14.2.5 Section类(表示关联类、公有静态最终属性、枚举) 444

14.2.6 回顾委托 451

14.2.7 ScheduleOfClasses类 455

14.2.8 TranscriptEntry关联类(静态方法) 456

14.2.9 Transcript类 459

14.2.10 SRS“驱动器”程序 460

14.3 模型-视图分离与模型-数据层分离的重要性 468

14.4 小结 469

第15章 完善自己的应用程序,第一部分:添加数据访问层 471

15.1 即将到来的SRS增强的概述 472

1 5.2 对象持久化的方法 472

15.3 Java中基本的文件I/O 474

15.3.1 读取文件 474

15.3.2 写入文件 476

15.3.3 文件I/O的异常处理 478

15.4.2 两个新的集合封装类:CourseCatalog和Faculty 480

15.4 填充主要的SRS集合 480

15.4.1 ScheduleOfClasses集合 480

15.4.3 从面向记录的数据文件初始化SRS集合 482

15.4.4 持久化学生数据 485

15.4.5 数据文件的读访问和写访问 486

15.5 用Java的Properties类配置应用程序 486

15.5.1 文件FileNames.properties 487

15.5.2 访问系统属性 488

15.6 为SRS定义自定义异常 490

15.7 封装持久化细节 491

15.7.1 引入SRSDataAccess类 491

15.7.2 初始化ScheduleOfClasses集合 494

15.7.3 初始化Faculty集合 496

15.7.4 初始化CourseCatalog集合 499

15.7.5 初始化学生状态 501

15.7.6 持久化学生状态 503

15.7.7 简化SRS“驱动器”类 504

15.8 模型-数据访问层分离的重要性 511

15.8.1 对象与数据库 512

15.8.2 使用JDBC API:概念纵览 513

15.8.3 用数据库访问改进SRS 515

15.9 回顾对SRS的改进 518

15.10 小结 519

第16章 完善自己的应用程序,第二部分:添加表示层 521

16.1 Java GUI入门 522

16.1.1 组件 522

16.1.2 容器 522

16.1.3 模型-视图分离 523

16.1.4 AWT组件与Swing组件 525

16.2 制作GUI视图/表示 528

16.2.1 JFrame 529

16.2.2 在屏幕上定位窗口 531

16.2.3 在屏幕上明确地定位窗口 532

16.2.4 把窗口定位在屏幕中间 533

16.2.5 向JFrame添加组件 535

16.2.6 JPanel 536

16.2.7 通用组件属性和行为 536

16.2.8 布局基础 539

16.2.9 BorderLayout 539

16.2.10 GridLayout 543

16.2.11 FlowLayout 547

16.2.12 JLabel 548

16.2.13 JTextField与JPasswordField 549

16.2.14 JButton 551

16.2.15 JList 552

16.3 简单的计算器示例 554

16.4 改良的GUI应用程序体系结构 557

16.5 其他值得探讨的AWT/Swing组件 561

16.6 Java事件处理 562

16.6.1 事件的基本概念 562

16.6.2 基本事件类型 564

16.6.3 创建并注册监听器 565

16.6.4 给计算器程序添加行为 567

16.6.5 合并监听器:利用ActionEvent 571

16.6.6 关闭窗口 572

16.6.7 适配器类与监听器接口 574

16.6.8 从JList中选择一项 577

16.7 更多容器类型 582

16.7.1 JDialog 583

16.7.2 用JOptionPane一步创建对话框 587

16.8 可重用自定义组件 588

16.9 小结 590

第17章 SRS,第三部分:添加GUI 592

17.1 SRS代码路线图 592

17.2 准备操作概念 594

17.3 MainFrame类 598

17.3.1 设计MainFrame的“外观”:创造性地使用GridLayout 598

17.3.2 编写MainFrame的“外观” 599

17.3.3 给MainFrame添加行为 603

17.4 PasswordPopup类:跨窗口/类共享信息 614

17.5 SRS驱动器类,显著地简化 616

17.6 J2EE概述 617

17.6.1 桌面应用程序部署的不利方面 618

17.6.2 Web部署的优势 618

17.6.3 什么是J2EE 622

17.6.4 什么是servlet 623

17.6.5 什么是JavaServer Page(JSP) 624

17.6.6 J2EE,模型视图控制器风格 626

17.6.7 N层体系结构 628

17.6.8 什么是EJB 629

17.6.9 打破J2EE神话 630

17.6.10 本书讨论的知识与J2EE的关系 631

17.7 回顾“工业强度”Java应用程序的体系结构 632

17.8 小结 634

18.1 Jacquie的“经过实践证明的”学好Java的方法 635

第18章 下一步 635

18.2 驯服科技浪潮 636

18.3 其他推荐读物 637

18.4 敬请指正 638

第四部分 附录 640

附录A 关于将本书作为教科书的建议 640

附录B 可选的案例研究 642

附录C 建立Java开发环境 646

附录D 下载并编译本书的源代码 658

附录E 对有经验的C++程序员的提示 659

附录F 多态性的幕后工作原理(静态绑定与动态绑定) 663

附录G J2SE 5.0以前的集合 667

附录H 编程基础以及编译器的职责 676

索引 680