第一图书网

OOD启思录

里尔 人民邮电
出版时间:

2011-12  

出版社:

人民邮电  

作者:

里尔  

页数:

358  

译者:

鲍志云  

Tag标签:

无  

内容概要

  本书提供了改进面向对象设计的真知灼见。全书共11章,总结出了60多条面向对象设计(OOD)的指导原则。这些经验原则涵盖了从类到对象(主要强调它们之间的关系,包括关联、使用、包含、单继承、多继承)到面向对象物理设计的重要主题。本书将帮助你理解经验原则和“设计模式”这一流行概念之间的相互作用。你可以借助经验原则发现设计中所存在的某一方面的问题,而设计模式则提供了解决方案。
  本书对各个层次的开发者都有价值,新手能借助本书走上通向面向对象编程的快车道,想提升自己的面向对象开发水准的老手则会受益于本书深具洞察力的分析。本书提供了让你成为更好的软件开发者的途径。

作者简介

作者:(美国)里尔 (Arthur J.Riel) 译者:鲍志云

书籍目录

第1章 面向对象编程的动因
1.1 革命家、改革家与面向对象范型
1.2 Frederick Brooks观点:非根本复杂性与根本复杂性
1.3 瀑布模型
1.4 迭代模型
1.5 构造原型:相同语言与不同语言
1.6 软件复用性
1.7 优秀设计者阶层
术语表
第2章 类和对象:面向对象范型的建材
2.1 类和对象导引
2.2 消息和方法
2.3 类耦合与内聚
2.4 动态语义
2.5 抽象类
2.6 角色与类
术语表
经验原则小结
第3章 应用程序布局:面向动作与面向对象
3.1 应用程序的不同布局
3.2 面向动作范型何时适用
3.3 问题:全能类(行为表现)
3.4 系统功能不良分布的另一个例子
3.5 问题:全能类(数据表现)
3.6 问题:泛滥成灾的类
3.7 代理类的角色
3.8 用途考察:单独实体和控制类
术语表
经验原则小结
第4章 类和对象的关系
4.1 类和对象关系导引
4.2 使用关系
4.3 实现使用关系的6种不同方法
4.4 使用关系的经验原则
4.5 精确调整两个类之间的协作量
4.6 包含关系
4.7 类之间的语义约束
4.8 属性与被包含的类
4.9 包含关系的更多经验原则
4.1 0使用和包含的关系
4.1 1值包含与引用包含
术语表
经验原则小结
第5章 继承关系
5.1 继承关系导引
5.2 在派生类中覆写基类方法
5.3 在基类中使用保护区域
5.4 继承层次结构的宽度和深度
5.5 C++的划分:私有、保护和公有继承
5.6 一个现实世界中的特化例子
5.7 经验原则:寻求设计复杂性和灵活性的平衡
5.8 一个现实世界中的泛化例子
5.9 多态机制
5.10把继承作为复用机制的一个问题
5.11用继承实现中断驱动架构的方案
5.12继承层次结构与属性
5.13混淆:继承的需求与对象动态语义
5.14用继承来隐藏类的实现
5.15把对象误当作继承类
5.16把需概括对象误作需在运行时创建类
5.17在派生类中屏蔽基类方法的尝试
5.18对象可选部分的实现
5.19没有最优解的问题
5.20复用组件与复用框架
术语表
经验原则小结
第6章 多重继承
6.1 多重继承导引
6.2 多重继承的常见误用
6.3 多重继承的正当使用
6.4 不支持多重继承的语言中的非根本复杂性
6.5 用到多重继承的框架
6.6 运用多重继承:设计mixin
6.7 DAG多重继承
6.8 可选包含的不良实现造成的不当DAG多重继承
术语表
经验原则小结
第7章 关联关系
7.1 关联导引
7.2 用引用属性实现关联
7.3 用第三方类实现关联
7.4 在包含关系和关联关系间取舍
术语表
经验原则小结
第8章 与特定类相关的数据及行为
8.1 类相关与对象相关数据及行为导引
8.2 用元类来表示类相关数据及行为
8.3 用语言层面关键字来实现类相关与对象相关数据及行为
8.4 C++中的元类
8.5 有用的抽象类,但不是基类
术语表
经验原则小结
第9章 面向对象物理设计
9.1 面向对象逻辑设计和物理设计的角色
9.2 创建面向对象包装器
9.3 面向对象系统中的持久化
9.4 面向对象应用程序中的内存管理问题
9.5 可复用组件的最小公有接口
9.6 实现安全的浅拷贝
9.7 并行面向对象编程
9.8 用非面向对象语言实现面向对象设计
术语表
经验原则小结
第10章 经验原则和模式的关系
10.1 经验原则与模式
10.2 设计变换模型的传递性
10.3 设计变换模式的自反性
10.4 其他设计变换模式
10.5 未来研究
第11章 在面向对象设计中使用经验原则
11.1 ATM问题
11.2 选择方法学
11.3 产生ATM对象模型的第一次尝试
11.4 给我们的对象模型增加行为
11.5 非根本复杂性带来的显式情况分析
11.6 在不同地址对象间传递消息
11.7 交易处理
11.8 回到ATM的领域
11.9 其他杂类问题
11.10小结
附录A 经验原则总结
附录B C++中的内存泄漏
附录C C++实例精选
本书中引用到的其他图书
参考文献

章节摘录

版权页:插图:因为,类的名字不仅意味着一组属性,还表示实体的行为。这种数据和行为的双向联系是面向对象范型的基石之一。一个对象一定会有如下4个重要方面:1.它自己的身份标识(可能只是它在内存中的地址);2.它的类的属性(通常是静态的)和这些属性的值(通常是动态的);3.它的类的行为(从实现者的角度看);4.它的类的公开接口(从用户的角度看)。将这一讨论置于软件开发的语境,类可以被实现为一个结构定义以及一组可以处理这个结构的操作。在过程式语言中,任给一个函数,很容易找出数据依赖性。只要检查函数实现并看一下所有参数、返回值以及局部变量声明的数据类型就可以了。但是,如果你想要找出一个数据定义的函数依赖性,那你就不得不检查全部代码,寻找依赖于这个数据的函数。而在面向对象模型中,两种依赖性(函数对数据的依赖性和数据对函数的依赖性)都现成摆明在那里了。对象是类数据类型的变量。它们的内部细节只对同它们的类关联的那组函数可见。这种对内部细节的访问限制称作信息隐藏(informationhiding)。在很多面向对象语言中,这种隐藏不是强制的,这样我们就有了第一条(也是最重要的一条)经验原则。经验原则2.1 所有数据都应该隐藏在它所在的类内部。违反这条经验原则意味着你不重视可维护性。面向对象范型所带来的益处,大部分归因于在设计阶段和实现阶段始终确保信息隐藏。如果你把数据设定为公有,那么就很难判断系统哪部分的功能依赖于这个数据。事实上,这样一来,数据变动与函数的映射关系就和面向动作范型一模一样了。我们不得不检查所有的函数以判断哪些函数依赖于公有数据。有时开发者会争辩说,“我需要把这个数据设为公有,因为……”在这种情况下,开发者应该问自己,“我到底要用这个数据来做什么?为什么不是类为我提供这个操作?”在所有这类情况下,问题出在类缺少了一个必需的操作。比如,考虑图2.2 中的File类。开发者出人意料地认为,byteoffset数据成员应该是公有的,这样才能允许随机I/0访问。但是,我们实际上需要的是执行随机访问任务的操作。(如果你不是C程序员,那么我在这里补充说明一下:fseek和ftell和标准C库函数,用于执行文件的随机I/0访问。)冒昧地认为“我们可以把这个数据设为公有,因为它永远也不会改变”的程序员请注意,Murphy关于编程的一条定理表明,这是第一个需要改变的数据。


编辑推荐

《OOD启思录》被读者评价为“面向对象设计领域中的EffecliveC++”!《OOD启思录》能帮助你迈入OoD殿堂:如果你是新手,《OOD启思录》将带你走上面向对象编程的快车道。如果你是老手,《OOD启思录》深具洞察力的分析将进一步提升你的面向对象开发水准,使你成为更好的软件开发者。提供改进面向对象设计的真知灼见!总结61条富有启发意义的专家经验!

图书封面

图书标签Tags

广告

下载页面


OOD启思录 PDF格式下载



推荐给希望在软件设计技术上有兴趣,希望有所收获的人看。


很好很实用,论述很有深度,不过读者得有项目经验才能看得懂


书质量可以,本书也是经典书籍。


给老公买的,不错~


很实用,讲解也很细。


这方面书实在太多了,都讲的差不多,没什么新鲜感。


OOD启思录 是一本讲解面向对象的思维书籍,思想有多远我们就能走多远。


很实用,对学习C++横有帮助,送货也很快。


在这里看到这本书,看到书页数不多但价钱挺贵,老外写得,以为会物有所值,但昨天拿到书,我心痛啊,我的money啊!内容肤浅,浮皮潦草,不够详细,像国产教材似地无味,怎么还这么贵!


相关图书