C++ Follow Me(4): 封装
黄国强 2007-3-30
C++与C最大的不同,就在于C++可以将数据和操作数据的函数放在一起,变成一个独立的物体。即,类(class)。典型的好处就是调用一个函数不用传很多参数了。
但对于很多人来说,把哪些函数和数据放在一个类中,却是个大问题。事实上,在我们周围,设计不良的类比比皆是。
在上一篇中,我们从职责的角度解决了如何得到一个类的问题。同样,我们在设计类的时候同样需要从职责角度获取成员函数和类的数据成员。这些函数和数据与类在抽象层次上需要保持高度一致。只有这样我们才能得到一个高质量的类。还是举一个例子来说明我的观点。
比如一个“父亲”类,对于他的孩子来说,加入抚养这个函数是非常恰当的。而加入写字这个函数就很不恰当的。很多人觉得很奇怪,难道一个父亲类不能提供写字的函数吗?确实是这样,作为写字这个功能和父亲不是一个抽象层次的东西,应该将写字这个函数放到“人”这个类更合适。
以上这些内容非常重要,但是很容易被忽略。希望引起大家的注意。