-
内容大纲
本书使用Java语言介绍面向对象的软件设计原则。内容包括类型与接口、封装、继承、设计模式、复合、单元测试和函数式设计。作者用贯穿全书的三个应用实例——扫雷游戏、单人纸牌游戏和JetUML,详细介绍了各种设计决策的应用场景。本书适合具有初步Java程序设计知识并希望进一步学习软件设计的读者阅读,可作为软件设计本科生的教材,也可供其他程序员参考。 -
作者介绍
马丁·P.罗毕拉德(Martin P. Robillard)是麦吉尔大学的计算机科学系教授。他从2005年开始教授Java软件设计,并拥有20多年的Java程序设计经验。他目前的研究重点是与软件演化、体系结构和设计以及软件重用相关的问题。Martin是第20届ACM软件工程基础国际研讨会(FSE 2012)和第39届ACM/IEEE软件工程国际会议(ICSE 2017)的项目联合主席。 -
目录
出版者的话
译者序
前言
第1章 绪论
1.1 定义软件设计
1.2 软件开发过程中的设计
1.3 获取设计知识
1.4 共享设计技术
1.4.1 设计模式
1.4.2 设计反模式
小结
延伸阅读
第2章 封装
2.1 封装与信息隐藏
2.2 将抽象编码为类型
2.3 作用域与可见性限制
2.4 对象图
2.5 逃逸引用
2.5.1 返回指向内部对象的引用
2.5.2 在内部存储外部引用
2.5.3 通过共享结构泄露引用
2.6 不可变性
2.7 提供内部数据
2.7.1 扩展接口
2.7.2 返回副本
2.7.3 高级机制
2.8 契约式设计
小结
代码探索
延伸阅读
第3章 类型与接口
3.1 行为与实现解耦合
3.2 指定接口的行为
3.3 类图
3.4 函数对象
3.5 迭代器
3.6 ITERATOR设计模式
3.7 STRATEGY设计模式
3.8 接口分离原则
小结
代码探索
延伸阅读
第4章 对象状态
4.1 软件系统的静态和动态视图
4.2 定义对象状态
4.3 状态图
4.4 设计对象生命周期
4.4.1 无效和无用的状态
4.4.2 不必要的状态信息
4.5 可空性
4.5.1 无须对不存在的值建模
4.5.2 对不存在的值建模
4.5.3 可选值类型
4.5.4 NULL OBJECT设计模式
4.6 终极域和变量
4.7 对象身份、相等和唯一
4.8 FLYWEIGHT设计模式
4.9 SINGLETON设计模式
4.10 嵌套类的对象
4.10.1 内部类
4.10.2 匿名类
小结
代码探索
延伸阅读
第5章 单元测试
5.1 单元测试简介
5.2 JUnit单元测试框架基础
5.3 测试代码的组织
5.4 元程序设计
5.4.1 内省
5.4.2 程序的操作
5.4.3 程序元数据
5.5 测试构建
5.6 测试和异常条件
5.7 封装与单元测试
5.8 桩测试
5.9 测试覆盖
5.9.1 语句覆盖
5.9.2 分支覆盖
5.9.3 路径覆盖
小结
代码探索
延伸阅读
第6章 复合
6.1 复合与聚合
6.2 COMPOSITE设计模式
6.3 时序图
6.4 DECORATOR设计模式
6.5 COMPOSITE与DECORATOR的结合
6.6 多态对象复制
6.6.1 声明实现Cloneable接口
6.6.2 重写Object.clone()方法
6.6.3 调用super.clone()
6.6.4 捕获CloneNotSupported-Exception
6.6.5 把clone()加入接口
6.7 PROTOTYPE设计模式
6.8 COMMAND设计模式
6.9 迪米特法则
小结
代码探索
延伸阅读
第7章 继承
7.1 继承的实例
7.2 继承和子类
7.2.1 向下类型转换
7.2.2 单根的类层次结构
7.3 继承域
7.4 继承方法
注解重写方法
7.5 重载方法
7.6 继承与复合
7.7 抽象类
7.8 重温DECORATOR设计模式
7.9 TEMPLATE METHOD设计模式
7.9.1 终极方法与终极类
7.9.2 抽象方法
7.9.3 模式总结
7.10 正确使用继承
7.10.1 限制基类客户端的行为
7.10.2 不适合作子类型的子类
小结
代码探索
延伸阅读
第8章 控制流反转
8.1 使用控制流反转的动机
8.2 模型–视图–控制器分解
8.3 OBSERVER设计模式
8.3.1 模型和观察者的连接
8.3.2 模型和观察者间的控制流
8.3.3 模型和观察者间的数据流
8.3.4 事件驱动程序设计
8.3.5 小结
8.4 应用OBSERVER设计模式
8.5 图形用户界面开发导论
8.6 图形用户界面组件图
8.6.1 用户体验视角
8.6.2 逻辑视角
8.6.3 源代码视角
8.6.4 运行时视角
8.6.5 定义对象图
8.7 事件处理
8.8 VISITOR设计模式
8.8.1 具体和抽象访问者
8.8.2 在类层次结构中集成操作
8.8.3 遍历对象图
8.8.4 OBSERVER模式中使用继承
8.8.5 在访问者结构中支持数据流
小结
代码探索
延伸阅读
第9章 函数式设计
9.1 一等函数
9.2 函数式接口、lambda表达式和方法引用
9.2.1 函数式接口
9.2.2 lambda表达式
9.2.3 方法引用
9.3 使用函数复合行为
9.4 用函数作数据供给者
供给者函数与OBSERVER模式
9.5 一等函数和设计模式
9.5.1 函数式STRATEGY
9.5.2 函数式COMMAND
9.6 函数式数据处理
9.6.1 数据作为流
9.6.2 将高阶函数应用于流
9.6.3 过滤流
9.6.4 映射数据元素
9.6.5 规约流
小结
代码探索
延伸阅读
附录A Java程序设计语言的重要概念
附录B 代码规范
附录C 应用实例
参考文献
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-
孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-
时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-
本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...