2007-04-06

OOD启思录笔记

关键字: OOD启思录
不知道如何实例化对象的类称为抽象类(abstract class)。知道如何实例化对象的类称为具体类(concrete class)。

在面向对象范型中,抽象类的一个重要用途是帮助创建继承层次结构。

如果我拿起一只闹钟对你说:“你觉得我的水果怎么样?”你会认为我疯了;而如果我拿起一只苹果问同样的问题,你就会觉得很正常。“水果”这个称谓表达了有用的信息,虽然你不能创建水果对象。事实上,它是一个类的(概念),但不知道如何实例化它这种类型的对象。

引擎中包含活塞,引擎有最大马力。活塞是有行为的,因此被建模成类,而最大马力只是一个描述性的属性,没有行动。

继承关系是面向对象范型中比较重要的关系之一。用它来表示数之间的“a-kind-of”关系是最好不过了。它的主要用途有两种,它被用作表示两个类之间的共性机制(泛化),还用来表示一个类是另一类的特殊类型(特化)。

决定性的问题是,“这个属性的值是否影响类的行为”?

对属性值的显示的分情况分析常常是错误的。类应当解融合成一个继承层次结构,每一个属性值都被换成一个派生类。

如果你觉得需要在运行时创建新的类,那么退后一步以认清你要创建的是对象。现在,把这些对象概括成一个类。

在派生类中用空方法(也就是什么都不做的方法)来覆写基类中的方法应当是非法的。

只要在面向对象设计中用到了继承,问自己两个问题:
1.派生类是否是它继承的哪个东西的一个特殊类型?
2.基类是不是派生类的一部分?

如果你在一个面向对象设计中发现了多重继承关系,确保没有哪个基类实际上是另一个基类的派生类
评论
junj 2007-04-06
请问楼主,哪里可以买到这本书?最好是英文般的
发表评论

您还没有登录,请登录后发表评论

harry
搜索本博客
我的相册
C4d10a3f-7014-3640-bdd0-8b59a3eab12a-thumb
myicon.png
共 7 张
最近加入圈子
存档
最新评论