《OOD启思录》

Object-Oriented Design Heuristics

评级: 阅读数:15860 作者:[美]Arthur J.Riel 译者:鲍志云 出版社:人民邮电出版社 图书分类: 软件工程/软件技术 > 面向对象  销售榜 版别版次:2004年7月第1版第1次印刷 ISBN书号:7-115-12336-5 出版日期:2004年7月 开本:787*1092 1/16 字数:527千字 页数: 374 定价:42.0元  售价:29.4元 节省12.6元(30%) VIP会员价: 29.4元 节省12.6元(30%) 钻石VIP会员价: 29.4元 节省12.6元(30%)   最佳搭配 根据订单统计,购买此书的读者一般都配上 UML风格(购书赠送《UML实作细节》,先购先得,赠完为止) (王少锋),特向您推荐:    总价: 60.0元 一起购买价格: 43.1元 (节省 16.9元)

-------------------------------------------------------------------------------- 购买此书的读者还购买了:
探索需求——设计前的质量 (章柏幸 王媛媛 谢攀 /译) 敏捷软件开发:原则、模式与实践 (邓辉/译) 企业应用架构模式 (王怀民 周斌) UML:Java程序员指南(双语版) (黄晓春) UML和模式应用(原书第2版) (方梁)

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

或许很多读者看过或者听说过Effective C++这本书。而《OOD启思录》被读者评价为“面向对象设计领域中的Effective C++”——正如Effective C++能帮助你迈向C++专家层面,《OOD启思录》能帮助你迈入OOD殿堂。       《OOD启思录》并不讲述RUP等方法学框架,也不讲述UML或者C++语言,这是一本市场上少有的纯粹讲设计经验的书。其实原书书名中heuristics一词就是经验的意思,不过我觉得《面向对象设计经验》这样的书名比较没意思,就改成了现在这个名字。        或许很多读者还看过或者听说过《设计模式》这本书,并对书中归纳的23个经典模式耳熟能详或者倒背如流。但不知您是否熟知在怎样的场合应当使用哪个模式,又为何要使用那个模式?记住模式容易,学以致用难,因为在实践中场景是千变万化的,难以判定应当采用某一模式。而这正是本书解决的问题之一,那60多条经验原则也正是捕捉了千变万化的表象后面一些不变的本质的东西。
——鲍志云

本书前言    相关链接

英文图书信息(Amazon)

中文图书信息

相关图书链接  市场价:¥42.0 元 dearbook价:¥31.5元   内容介绍   目录
  本书提供了改进面向对象设计的真知灼见。       全书共11章,总结出了60多条面向对象设计(OOD)的指导原则。这些经验原则涵盖了从类到对象(主要强调它们之间的关系,包括关联、使用、包含、单继承、多继承)到面向对象物理设计的重要主题。本书将帮助你理解经验原则和“设计模式”这一流行概念之间的相互作用。你可以借助经验原则发现设计中所存在的某一方面的问题,而设计模式则提供了解决方案。

本书对各个层次的开发者都有价值。新手能借助本书走上通向面向对象编程的快车道;想提升自己的面向对象开发水准的老手则会受益于本书深具洞察力的分析。《OOD启思录》提供了让你成为更好的软件开发者的途径。

前言 第1章 面向对象编程的动因 第2章 面向对象范型的建材 第3章 面向动作与面向对象 第4章 类和对象的关系 第5章 继承关系 第6章 多重继承 第7章 关联关系 第8章 与特定类相关的…… ......      查看详细>>   译者简介   样章开放   鲍志云(紫云英):        计算机科学专业的青年学子,曾以“紫云英”为笔名在《程序员》《程序春秋》等刊物发表多篇技术文章,并荣膺《程序员》杂志2001年十佳作者;2002年还和队友一起代表学校参加ACM/ICPC国际大学生程序设计竞赛亚太区比赛并取得佳绩 。 目录

第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.10  使用和包含的关系 4.11  值包含与引用包含 术语表 经验原则小结

第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++实例精选

时间: 2024-08-13 12:22:24

《OOD启思录》的相关文章

CI框架源码阅读笔记3 全局函数Common.php

从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap引导文件都会最先引入全局函数,以便于之后的处理工作). 打开Common.php中,第一行代码就非常诡异: if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 上一篇(CI框架源码阅读笔记2 一切的入口 index

IOS测试框架之:athrun的InstrumentDriver源码阅读笔记

athrun的InstrumentDriver源码阅读笔记 作者:唯一 athrun是淘宝的开源测试项目,InstrumentDriver是ios端的实现,之前在公司项目中用过这个框架,没有深入了解,现在回来记录下. 官方介绍:http://code.taobao.org/p/athrun/wiki/instrumentDriver/ 优点:这个框架是对UIAutomation的java实现,在代码提示.用例维护方面比UIAutomation强多了,借junit4的光,我们可以通过junit4的

Yii源码阅读笔记 - 日志组件

?使用 Yii框架为开发者提供两个静态方法进行日志记录: Yii::log($message, $level, $category);Yii::trace($message, $category); 两者的区别在于后者依赖于应用开启调试模式,即定义常量YII_DEBUG: defined('YII_DEBUG') or define('YII_DEBUG', true); Yii::log方法的调用需要指定message的level和category.category是格式为“xxx.yyy.z

源码阅读笔记 - 1 MSVC2015中的std::sort

大约寒假开始的时候我就已经把std::sort的源码阅读完毕并理解其中的做法了,到了寒假结尾,姑且把它写出来 这是我的第一篇源码阅读笔记,以后会发更多的,包括算法和库实现,源码会按照我自己的代码风格格式化,去掉或者展开用于条件编译或者debug检查的宏,依重要程度重新排序函数,但是不会改变命名方式(虽然MSVC的STL命名实在是我不能接受的那种),对于代码块的解释会在代码块前(上面)用注释标明. template<class _RanIt, class _Diff, class _Pr> in

CI框架源码阅读笔记5 基准测试 BenchMark.php

上一篇博客(CI框架源码阅读笔记4 引导文件CodeIgniter.php)中,我们已经看到:CI中核心流程的核心功能都是由不同的组件来完成的.这些组件类似于一个一个单独的模块,不同的模块完成不同的功能,各模块之间可以相互调用,共同构成了CI的核心骨架. 从本篇开始,将进一步去分析各组件的实现细节,深入CI核心的黑盒内部(研究之后,其实就应该是白盒了,仅仅对于应用来说,它应该算是黑盒),从而更好的去认识.把握这个框架. 按照惯例,在开始之前,我们贴上CI中不完全的核心组件图: 由于BenchMa

CI框架源码阅读笔记2 一切的入口 index.php

上一节(CI框架源码阅读笔记1 - 环境准备.基本术语和框架流程)中,我们提到了CI框架的基本流程,这里这次贴出流程图,以备参考: 作为CI框架的入口文件,源码阅读,自然由此开始.在源码阅读的过程中,我们并不会逐行进行解释,而只解释核心的功能和实现. 1.       设置应用程序环境 define('ENVIRONMENT', 'development'); 这里的development可以是任何你喜欢的环境名称(比如dev,再如test),相对应的,你要在下面的switch case代码块中

Apache Storm源码阅读笔记

欢迎转载,转载请注明出处. 楔子 自从建了Spark交流的QQ群之后,热情加入的同学不少,大家不仅对Spark很热衷对于Storm也是充满好奇.大家都提到一个问题就是有关storm内部实现机理的资料比较少,理解起来非常费劲. 尽管自己也陆续对storm的源码走读发表了一些博文,当时写的时候比较匆忙,有时候衔接的不是太好,此番做了一些整理,主要是针对TridentTopology部分,修改过的内容采用pdf格式发布,方便打印. 文章中有些内容的理解得益于徐明明和fxjwind两位的指点,非常感谢.

CI框架源码阅读笔记4 引导文件CodeIgniter.php

到了这里,终于进入CI框架的核心了.既然是"引导"文件,那么就是对用户的请求.参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位.例如,用户的请求url: http://you.host.com/usr/reg 经过引导文件,实际上会交给Application中的UsrController控制器的reg方法去处理. 这之中,CodeIgniter.php做了哪些工作?我们一步步来看. 1.    导入预定义常量.框架环境初始化 之前的一篇博客(CI框架源码阅读笔记2 一切的入

jdk源码阅读笔记之java集合框架(二)(ArrayList)

关于ArrayList的分析,会从且仅从其添加(add)与删除(remove)方法入手. ArrayList类定义: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Monaco } span.s1 { color: #931a68 } public class ArrayList<E> extends AbstractList<E> implements List<E> ArrayList基本属性: /** *

dubbo源码阅读笔记--服务调用时序

上接dubbo源码阅读笔记--暴露服务时序,继续梳理服务调用时序,下图右面红线流程. 整理了调用时序图 分为3步,connect,decode,invoke. 连接 AllChannelHandler.connected(Channel) line: 38 HeartbeatHandler.connected(Channel) line: 47 MultiMessageHandler(AbstractChannelHandlerDelegate).connected(Channel) line: