书籍详情

Beginning Java Objects中文版从概念到代码(第2版)

Beginning Java Objects中文版从概念到代码(第2版)

作者:(美)巴克

出版社:人民邮电

出版时间:2007-01-01

ISBN:9787115154408

定价:¥78.00

购买这本书可以去
内容简介
  本书是关于软件对象和.Java的,但并不是纯粹地介绍.Java语言,而是强调如何从对象模型转换到功能完整的Java应用程序。书中讲述了对象基础、对象建模和模型的实现。本书除了用学生注册系统(SRS)示例贯穿全书之外,还在附录中给出三个附加的案例,这些案例是每章结尾给出的诸多练习的基础。本书适合作为高等院校计算机专业“面向对象程序设计”、“面向对象方法”或“Java语言”课程的教材,也适合作为公司的培训课程的教程。
作者简介
  JACQUIE BARKER是一位专业的软件工程师、技术作家以及位于弗吉尼亚州费尔法克斯市的乔治·梅森大学和位于华盛顿特区的乔治·华盛顿大学的兼职教员。在超过28年的实际软件开发和项目管理经历中,Jacquie将过去12年的时间主要用在对象技术上,并成为了对象建模专家和Sun公司认证Java程序员。她是ObjectStart LLC(一个指导和培训对象技术的公司)的创始人,她也是位于弗吉尼亚州赫恩登市的Technology Associates公司技术部的资深成员。Jacquie在位于俄亥俄州克利夫兰的凯斯西保留地大学获得计算机工程理学学士学位,并获得最高荣誉,在那里她被吸收为Tau Beta Pi国家工程荣誉协会会员。她在加州大学洛杉矶分校获得计算机科学理学硕士学位,主修软件系统工程,后来在乔治·梅森大学的信息技术专业进行研究生课程学习。Jacquie教授对象基础的成功方法一直受到全球读者的广泛赞扬,本书第1版被多所大学用作核心IT课程的主要教材。她的新书Taming the Technology Tidal Wave:Practical Career Advice for IT Professionals是一本关于如何维持技术领先的轻松指南,该书也同样得到了好评。在个人方面,Jacquie热爱的对象包括她的丈夫Steve、宠物老鼠、小型长毛德国猎犬(也叫作wiener狗)、教学、写作和Java程序设计。在不从事计算机相关的事务时,Jacquie和Steve喜欢骑摩托车旅行穿过弗吉尼亚郊区、骑双人自行车、在湖边享受安静的假期以及与亲朋好友共度时光。要获得Jacquie已经出版的书籍和提供的服务的更多信息,请访问她的网站http:// objectstart.com和http://techtidalwave.com。
目录
第一部分  对象基础
第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.3.3  JVM内幕    22
2.4  基本类型    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章  对象和类    49
3.1  最简软件    49
3.1.1  功能分解    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.7  特征可以按任何顺序声明    76
4.2.8  return语句    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.1  例外1:内部的辅助属性    112
4.13.2  例外2:内部的辅助方法    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.8  Object类    141
5.3.9  继承真的是一种关系吗    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.1  集合是由类定义的且必须
实例化    163
6.1.2  集合组织其他对象的引用    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
第二部分  对象建模基础
第8章  对象建模过程概要    256
8.1  对象建模的主要目标    256
8.2  Jacquie建议的对象建模过程概要    259
8.2.1  关于对象建模软件工具的考虑    259
8.2.2  提醒    261
8.3  小结    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章  包装建模成果    322
12.1  测试模型    322
12.2  重新审查需求    323
12.3  模型重用:关于设计模式的讨论    324
12.4  小结    326
第三部分  将对象蓝图转换为Java代码
第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  Object类的特征    392
13.11.1  确定对象所属的类    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
15.2  对象持久化的方法    472
15.3  Java中基本的文件I/O    474
15.3.1  读取文件    474
15.3.2  写入文件    476
15.3.3  文件I/O的异常处理    478
15.4  填充主要的SRS集合    480
15.4.1  ScheduleOfClasses集合    480
15.4.2  两个新的集合封装类:
CourseCatalog和Faculty    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章  下一步    635
18.1  Jacquie的“经过实践证明的”学好
Java的方法    635
18.2  驯服科技浪潮    636
18.3  其他推荐读物    637
18.4  敬请指正    638
第四部分  附    录
附录A  关于将本书作为教科书的建议    640
附录B  可选的案例研究    642
附录C  建立Java开发环境    646
附录D  下载并编译本书的源代码    658
附录E  对有经验的C++程序员的提示    659
附录F  多态性的幕后工作原理(静态绑定
与动态绑定)    663
附录G  J2SE 5.0以前的集合    667
附录H  编程基础以及编译器的职责    676
索引    680
猜您喜欢

读书导航