基本信息
- 原书名:What Every Programmer Should Know About Object-Oriented Design
- 原出版社: Dorset House
- 作者: [澳]Meilir Page-Jones
- 译者: 申玉强 曹济 程筱芳等
- 丛书名: 软件工程丛书
- 出版社:电子工业出版社
- ISBN:7505396080
- 上架时间:2004-4-14
- 出版日期:2004 年3月
- 开本:16开
- 页码:295
- 版次:1-1
- 所属分类:计算机 > 软件工程及软件方法学 > 面向对象
内容简介
计算机书籍
如果你是C++、SmallTalk或者Eiffel程序员,或者你刚想转向面向对象,你需要了解面向对象设计最重要的原理。例如:对于一个可靠的设计,为什么变量的多态存在于方法当中?并发是好,还是坏?从父类继承的方法怎样影响子类的不变性——你又怎样预防这种情况的发生昵?
Page-Jones回答了这些问题,并且以独特的方式清晰地揭示了面向对象的本质。他提供了一套符号用于面向对象设计,这些符号可以允许你画出整个系统的设计图,并记下其中蕴含的思想。
本书是一本介绍关于面向对象软件设计的基本观点、符号、术语、准则和原理的书。运用大量的实例、图表和练习,本书详细地阐述了面向对象设计的各个方面,融入了作者在面向对象开发中的丰富的实践经验,使得面向对象设计中的一些复杂和容易混淆的概念变得明了和简单易懂。
作译者
目录
第1章 面向对象究竟是什么
1.1 封装
1.2 信息/实现隐藏
1.3 状态保留
1.4 对象标识
1.5 消息
1.6 类
1.7 继承
1.8 多态
1.9 泛型
1.10 小结
1.11 习题
第2章 面向对象—谁定制了它们
2.1 面向对象的来源
2.2 面向对象的社会背景
前言
——William Wordsworth,抒情民歌
在此书还是草稿时,评审它的人们就向我提出了几个问题,也许你也有同样的问题,让我来回答一些吧。
为什么书名叫“程序员必读”?你太夸张了吧。
我相信有这样两类程序员:那些现在正在写面向对象代码的和那些很快就要写面向对象代码的。每个人写代码的同时也设计代码——不论好和坏,不论有意识的还是无意识的。我写这本书的目标是鼓励人们在编码前有意识地创造出好的面向对象的设计。为了这个目标,我介绍了符号表示、原则和术语,便于你和你的同事评
价你的设计,进行有意义的讨论。
这本书可以教给我一种面向对象的编程语言吗?
不能。尽管我偶尔会涉及到代码,但这不是一本关于面向对象编程语言的书。
如果我正在学习一门面向对象的语言,这本书对我有用吗?
当然有用。如果你现在不懂一门面向对象的编程语言,你可以通过第1章开始学习面向对象的知识。了解一些面向对象的关键概念,本书将使你更快地学习一门面向对象的语言,并且我希望,在你迈向不熟悉的领域时它能鼓励你。本书的后续章节,将以合理的设计帮助你顺利开始你的早期的编程生涯。
如果你已经是经验丰富的面向对象程序员,你可以用本书的第2,3部分来提高设计技巧,这些技巧对于你成为权威的专业软件设计者和程序员是至关重要的。
为什么这本书中的代码没有用C++举例?
我在这本书中写的代码是用一种我自己发明的语言,它混合了三种流行的语言:C++,Eiffel和Smalltalk。我这样做是因为——猜猜看!——有两种程序员:那些熟悉C++的和那些不熟悉C++的。如果你是一个C++迷,你可以发现那些代码可以轻而易举地被翻译成C++;如果你对C++不熟,你就会通过那些例子发现这种语言的看似神秘的语法。不管你的编程语言是什么,我都希望这本书能适合你所熟悉的程序语言。
为什么这本书没有关注设计窗口、图标和菜单?
有两个原因:首先,我不认为面向对象只对图形用户界面的设计有用处:其次,市面上已经有很多专注于面向对象窗口设计的书了,我希望这本书探讨那些其他面向对象书籍没有很好讨论过的话题。
这是一本关于方法学的书吗?
不。你知道,开发方法学包含的内容远远多于设计,如有需求分析、库管理等,同时,真正的方法学需要去解释不同的开发活动是如何被整合到一起的,太多了!
因此,不像其他很多面向对象的书籍那样罗嗦,我决心集中到一个话题上:面向对象设计。
你说了一大堆关于这本书不是什么的话,那它到底是什么?
它是一本介绍关于面向对象软件设计的基本的观点、符号、术语、准则和原理的书。面向对象软件是包含对象和它们所属的类的软件。一个对象就是一个组件,其中的方法(就像函数或程序)围绕一组变量(就像数据)组织起来。类实现了属于它的对象组一个类型定义。
序言
本书也许不是第一本关于面向对象的书籍,但是在它上面花费时间是值得的,这体现在它所包含的丰富的设计经验。这本书具有面向对象开发的最新见解,从继承的使用和滥用,到如何在软件中对小狗的主人和熊猫进行建模。这本书体现了Page-Jones的最新的成就和永恒的智慧。
我第一次遇见Meilir,是由于他写了一本关于结构化程序设计的普及读本,而这本书的原版是我与Ed Yourdon合著的。Meilir的书,《结构和系统设计实践指南》 (Your don press/Prentice Hall出版,1980),获得了巨大的成功,其销量超过了我的书好几倍,原因很简单——它的结构组织得更好而且更易读懂。1989年,当得知我们两人都将在同一个会议上发言时,我非常急切地想要见到这位作家,要知道他可是非常透彻地领会了结构化程序设计的精髓,并从中提炼了许多对程序员实战非常有用的东西。在那次会议与我会面时,他起初有点拘谨,但当我告诉他我非常喜欢他的书,并且很高兴他能把结构化程序设计的思想带给那么多读者的时候,他和我便结识了。从那时起,我们开始了合作和竞争。因为他曾给我的《康士坦丁的人件》(Prentice Hall,1995)写过序言,所以我给他也写一个,我们这就扯平了。
事实上,Meilir是一位天才的教师,他特别擅长将复杂和容易混淆的东西讲得非常明了简单。他能够把一车问题用一个原型包装起来,使它们变得如此易懂,以至于我们所有其他的人都不禁会问:“我们怎么没想到?”。在面向对象的“奶厂”应用中,当到了挤奶的时候,你会怎么做?你会向“奶牛”这个对象发送一条消息,
让它自己去挤奶,还是向“挤奶”发送一条消息?一个瞬时的反应和一个对事务管理者发出的协同挤奶的需求就很明白易懂。他所阐述的就像上面的例子,或书中的“人拥有狗”的题目,已经成为面向对象界常见的“段子”之一。
实际上,本书展示了如何将那些已经长期为专业设计人员使用的良好的设计规则转变为开发面向对象系统所用。本书讲述的不仅仅是关于一些大的原则或仅仅是关于一些小的细节,事实上,它两方面都兼顾。本书强调:当将实际经验融入具体例子时,一定要坚持不懈地、务实地注意真实世界的经验,这一点对新手和老手都
很重要。
Meilir无论作为一个咨询者,一个教师,还是一个方法学家,都从面向对象开发中提取了大量的经验。他是协同法的合作开发者,这是一个早期的面向对象分析和开发的方法;他也是创造具有深远影响的单一对象观念的合作者,这个观念的特性在数不清的面向对象方法和理念中(从OODL到MOSES)均有反映。这种多用途建
模法的最新版本,现被称为OODN,用于演示和阐述全书的例子。
本书中用于说明设计的基本技术不但非常简单明了,而且所有的设计技术都有大量的例子,还讨论了在好的面向对象设计中该做和不该做的东西,并附有习题。
Larry l.Constantine
悉尼科技大学计算机科学教授
1995年6月于澳大利亚,悉尼