商家名称 |
信用等级 |
购买信息 |
订购本书 |
|
|
面向对象设计原理与模式(Java版) |
|
|
|
面向对象设计原理与模式(Java版) |
|
基本信息·出版社:清华大学出版社
·页码:310 页
·出版日期:2009年04月
·ISBN:7302196710/9787302196716
·条形码:9787302196716
·版本:第1版
·装帧:平装
·开本:16
·正文语种:中文
·丛书名:国外计算机科学经典教材
内容简介 《面向对象设计原理与模式(Java版)》全面介绍了Java面向对象程序设计的原理和模式,帮助解决Java程序中的设计问题。此外,该书十分注重Java面向对象程序设计的每个细节,以及继承、方法、类、设计模式等在程序设计中起到的关键作用,浓缩了Java的精华。在进行理论介绍的同时,《面向对象设计原理与模式(Java版)》十分重视实践技能的培养,一些较为综合的实例贯穿了相关的知识点,使学生理解并掌握它们在程序设计中的真正用处和在提升程序性能方面的作用。《面向对象设计原理与模式(Java版)》不但可作为高校计算机科学专业的教材,还可作为Java程序设计人员的必备参考书。
作者简介 Dale Skrien,美国Colby大学计算机科学系的教授,研究方向为算法图形理论,面向对象设计,以及计算机音乐。
编辑推荐 《面向对象设计原理与模式(Java版)》特色:根据代码“优雅性”讨论设计和实现,使用小型和中型案例分析来介绍设计原理和模式,大部分设计模式均在解决某个问题的背景中引入,在每章的末尾都有大量的各种难度的练习题,便于学生温故而知新。
目录 第1章 面向对象设计与实现的优雅性
1.1 存在的问题
1.2 软件工程
1.3 设计优雅软件的标准
1.4 说明
1.5 练习题
1.6 参考文献
第2章 面向对象的基础知识
2.1 面向对象编程与非面向对象编程
2.1.1 面向对象编程与非面向对象编程简介
2.1.2 面向对象语言
2.1.3 面向对象编程的优点
2.2 Java中的类、对象、变量和方法
2.3 插入语:Java中的类方法和类变量
2.3.1 类变量及类方法简介
2.3.2 Java中的类变量及其使用
2.3.3 Java中的类方法及其使用
2.3.4 小结
2.4 UML类图简介
2.5 实现继承
2.5.1 特殊化
2.5.2 Java中的Obiect父类
2.5.3 特殊化的另一种使用
2.5.4 泛化
2.5.5 Java中的单继承
2.6 类型、子类型和接口继承
2.6.1 类型
2.6.2 多态
2.6.3 多态的价值
2.7 接口与抽象类
2.8 动态方法调用
2.9 重载与重写
2.10 控制对方法和数据的访问
2.11 小结
2.12 练习题
2.13 参考文献
第3章 优雅性与实现继承
3.1 关于继承的四个观点
3.1.1 代码重用观点
3.1.2 Is-A观点
3.1.3 公共接口观点
3.1.4 多态观点
3.2 代码重用的充分性
3.3 代码重用联合Is-A关系的充分性
3.4 代码重用、Is-A关系以及公共接口的充分性
3.5 Has-A关系和UML关联关系
3.6 代码重用、Is-A关系、公共接口以及多态的充分性
3.7 使用实现继承的代价
3.8 示例:人、女人和男人
3.9 示例:绘制多边形
3.10 示例:排序
3.11 Java中数组的子类化
3.12 回顾:继承与引用
3.13 小结
3.14 练习题
3.15 参考文献
第4章 优雅性与方法
4.1 编码风格和命名约定
4.2 方法与分解
4.3 内聚方法
4.4 结构良好的对象和类不变式
4.5 内部文档
4.6 外部文档
4.7 案例分析:重写Java中的equals方法
4.8 案例分析:重写Java中的clone方法
4.9 重构
4.10 代码优化
4.11 小结
4.12 练习题
4.13 参考文献
第5章 优雅性和类
5.1 开始寻找类和类之间的关系
5.1.1 提取名词和动词
5.1.2 使用应用领域的概念
5.1.3 使用CRC卡片
5.1.4 类协议
5.1.5 小结
5.2 最大化内聚度
5.3 责任的分离
5.4 避免冗余
5.5 完整一致的协议
5.6 回顾:可变性与不可变性
5.7 为改变而设计
5.8 迪米特法则
5.9 小结
5.10 练习题
5.11 参考文献
第6章 Money类的简单案例研究
6.1 Money的朴素表示法
6.2 USMoney类
6.3 使用Money的子类来表示不同的货币
6.4 使用具有一个币种属性的单一Money类
6.5 混合币种与简单币种
6.6 币种间转换
6.7 MoneyConverter类的问题
6.8 MixedMoney类和SimplemMoney类的问题
6.9 仅用MixedMoney类
6.10 另一种使用二叉树的实现方法
6.11 小结
6.12 练习题
6.13 参考文献
第7章 设计模式介绍
7.1 适配器模式
7.2 单例模式
7.3 迭代器模式
7.4 命令模式
7.5 工厂
7.6 小结
7.7 练习题
7.8 参考文献
第8章 绘图应用程序案例研究
8.1 用户界面
8.2 观察者模式
8.3 图形层次
8.4 模型一视图.控制器体系结构
8.5 原型模式
8.6 状态模式
8.7 组成模式
8.8 备忘录模式
8.9 小结
8.10 练习题
8.11 参考文献
第9章 语言解析器案例研究
9.1 VSSJ:Java的一个非常简单的子集
9.2 美化输出
9.3 扫描
9.4 简单的美化输出程序
9.5 解释器模式
9.6 AST设计
9.7 方法发现器
9.8 优雅实现的一些问题
9.9 访问者模式
9.10 访问者和双重分派
9.11 外观模式
9.12 解析器和生成器
9.13 记号、访问者及多态
9.14 小结
9.15 练习题
9.16 参考文献
附录AUML介绍
附录B编码约定和Javadoc注释
……
序言 0.1本书简介
本书是关于面向对象设计(object—oriented,OO)的介绍,主要面向计算机科学二年级或者更高年级的本科生。本书根据“优雅”(elegance)一词讨论了软件的设计和实现,该词将在第1章中定义。本书将首先回顾面向对象编程的概念,然后介绍软件设计的基本技术、编码风格、重构、UML和设计模式的内容。
本书通过多个实例、一个小型案例分析和两个中等规模的案例分析来介绍设计原则和模式。这些原则和模式都是在需要利用它们来解决设计方面的问题时引入的。在本书中,多个实例和案例分析都会从针对问题的一个“明显的”解决方案开始,然后通过讨论该初始解决方案的优缺点,逐步将其优化为更加优雅的解决方案。
本书并不是要致力于成为关于编码和设计优雅性的完整的、权威的“圣经”。实际上,本书是对于在达到优雅性的这个目标的过程中将会涉及到的很多话题的一个介绍。本书为需要进一步了解这些话题的学生提供了进一步学习的参考文献。
本书中所有的讨论和例子都基于Java1.5给出,但是提出的概念和原则几乎都具有通用的面向对象的属性,所以可以适用于利用其他面向对象语言的设计和实现。
本书包括了大量的练习题。从第2章到第9章,每章平均有18道练习题。这些练习题包括考察学生关于该章所介绍内容的理解程度的简单测试,但大部分的练习题包括的内容都无法在正文中加以介绍,否则,就会偏离正文的主题太远,并且导致正文过于庞大。
文摘 插图:
第1章 面向对象设计与实现的优雅性
对于阅读本书的大学生而言,您很可能已经学习了一些计算机科学的相关课程,其中有一门对于编程的介绍性课程。经过认真的学习,您一定掌握了至少一门编程语言的基本编程概念。您学会了诸如循环、赋值和条件语句等语言结构,也学会了编写这些语言结构的一种或多种方法。您更有可能已经理解了计算机科学并不仅仅是编程而已,事实上,编程仅仅是计算机科学工作者的一种工具。
遗憾的是,因为没有时间讲解计算机科学中如此众多的主题,所以您将无法获悉解决同一问题的各种不同方法的优缺点。举例来说,在较低的层次上,存在很多种方法来实现一个结构,例如循环(比如,可以使用for循环,while循环或者递归),其中的某些方法相对而言会更加优越。在高一点的层次上,存在多种方法来实现一个任务(如归并排序或者选择排序),其中某些相比而言更为快速。再高一点的层次上,存在各种方法来将一个程序划分为诸如类或者方法的模块,其中某些分割的方法会更加合适。
我们来看一个最后那种情况的例子。请考虑这样一个问题,该问题需要编写一个模块来存储集合,该集合包括一些人以及他们各自的狗的信息。这个集合需要被保存为散列表、数组还是其他的集合形式?这个集合是需要存储Person对象还是Person-Dog这样的对象组合。Dog对象是否需要有实例变量指向其主人?而狗的主人又是否需要实例变量指向他所拥有的狗的集合?如果是的话,这又将是一个怎样的集合?这样的Person对象还需要存储哪些其他数据?如果这些人是美国公民,是否需要存储他们的社会保障号码?是否需要将这样的人的集合排序以便于查找?如果一个人的某条狗死了,是否需要将其从这个集合中删除,或是将其保留为一个没有狗的人?
很自然地,您会疑惑这些问题的答案是否真的很重要。如果两个设计,一个只有少数几个类和方法,另一个则包含很多类和方法,当这两个设计都能解决问题的时候,具体使用哪个设计是否真的很重要?类似地,如果所有版本的循环都能正确地完成计算,具体使用哪个版本是否真的很重要?如果两个算法都能正确计算,哪个运行更快是否真的很重要,尤其是在考虑到每年硬件处理速度飞速增长的情况下?