2007-04-06
OOD启思录笔记
关键字: OOD启思录
不知道如何实例化对象的类称为抽象类(abstract class)。知道如何实例化对象的类称为具体类(concrete class)。
在面向对象范型中,抽象类的一个重要用途是帮助创建继承层次结构。
如果我拿起一只闹钟对你说:“你觉得我的水果怎么样?”你会认为我疯了;而如果我拿起一只苹果问同样的问题,你就会觉得很正常。“水果”这个称谓表达了有用的信息,虽然你不能创建水果对象。事实上,它是一个类的(概念),但不知道如何实例化它这种类型的对象。
引擎中包含活塞,引擎有最大马力。活塞是有行为的,因此被建模成类,而最大马力只是一个描述性的属性,没有行动。
继承关系是面向对象范型中比较重要的关系之一。用它来表示数之间的“a-kind-of”关系是最好不过了。它的主要用途有两种,它被用作表示两个类之间的共性机制(泛化),还用来表示一个类是另一类的特殊类型(特化)。
决定性的问题是,“这个属性的值是否影响类的行为”?
对属性值的显示的分情况分析常常是错误的。类应当解融合成一个继承层次结构,每一个属性值都被换成一个派生类。
如果你觉得需要在运行时创建新的类,那么退后一步以认清你要创建的是对象。现在,把这些对象概括成一个类。
在派生类中用空方法(也就是什么都不做的方法)来覆写基类中的方法应当是非法的。
只要在面向对象设计中用到了继承,问自己两个问题:
1.派生类是否是它继承的哪个东西的一个特殊类型?
2.基类是不是派生类的一部分?
如果你在一个面向对象设计中发现了多重继承关系,确保没有哪个基类实际上是另一个基类的派生类。
在面向对象范型中,抽象类的一个重要用途是帮助创建继承层次结构。
如果我拿起一只闹钟对你说:“你觉得我的水果怎么样?”你会认为我疯了;而如果我拿起一只苹果问同样的问题,你就会觉得很正常。“水果”这个称谓表达了有用的信息,虽然你不能创建水果对象。事实上,它是一个类的(概念),但不知道如何实例化它这种类型的对象。
引擎中包含活塞,引擎有最大马力。活塞是有行为的,因此被建模成类,而最大马力只是一个描述性的属性,没有行动。
继承关系是面向对象范型中比较重要的关系之一。用它来表示数之间的“a-kind-of”关系是最好不过了。它的主要用途有两种,它被用作表示两个类之间的共性机制(泛化),还用来表示一个类是另一类的特殊类型(特化)。
决定性的问题是,“这个属性的值是否影响类的行为”?
对属性值的显示的分情况分析常常是错误的。类应当解融合成一个继承层次结构,每一个属性值都被换成一个派生类。
如果你觉得需要在运行时创建新的类,那么退后一步以认清你要创建的是对象。现在,把这些对象概括成一个类。
在派生类中用空方法(也就是什么都不做的方法)来覆写基类中的方法应当是非法的。
只要在面向对象设计中用到了继承,问自己两个问题:
1.派生类是否是它继承的哪个东西的一个特殊类型?
2.基类是不是派生类的一部分?
如果你在一个面向对象设计中发现了多重继承关系,确保没有哪个基类实际上是另一个基类的派生类。
发表评论
- 浏览: 17224 次
- 性别:

- 来自: 杭州

- 详细资料
搜索本博客
我的相册
myicon.png
共 7 张
共 7 张
最新评论
-
[摘]正确的创业者心态
ddd 写道》不过,如果这旧调本身不错,多弹几次,又有什么关系呢? 楼主看过古龙 ...
-- by spyker -
[摘]正确的创业者心态
》不过,如果这旧调本身不错,多弹几次,又有什么关系呢?楼主看过古龙的书,鉴定完毕 ...
-- by ddd -
无意中网上看到一篇关于ge ...
有很多必要的功能必须使用特定的插件,而这些插件又不是缺省安装必带的,所以用起来很 ...
-- by SteveGY -
无意中网上看到一篇关于ge ...
姜太公 写道可惜它的给关键字等加的颜色太难看。还有很多重复的gedit失败的地方 ...
-- by seen -
无意中网上看到一篇关于ge ...
可惜它的给关键字等加的颜色太难看。还有很多重复的
-- by 姜太公






评论排行榜