关于C++类的抽象数据类型合理性
各位大虾,个人觉得使用类将具体的名称封装成抽象数据类型比较合理,而将一系列操作的集合封装成抽象数据类型感觉有点别扭。例如,建立类CPerson来表示人合情合理,而建立CImageProcess来表示图像处理,感觉怪怪的。
那,像图像处理这样的操作集合该不该使用类来管理呢?
自嘲下,问题有点弱智了。
[解决办法]
该用。
类有两个特性“抽象”、“封装”。
先说封装:
你的CImageProcess可有把实现细节封装起来(private),仅暴露几个接口(public)。这样使用者仅需要关注接口。并且你修改细节,不会影响使用者。
再说抽象:
如果还有CPersonImageProcess,那么可以从你这儿继承这个类。当然如果不是为了一般化处理,用组合优于用继承。
[解决办法]
CImageProcess很合理!
如果不封装成类,那是什么?用流程?过程?类似于一堆C语言代码,还不如直接用C语言呢,复用性不好。
我当年也不懂,做多了,就知道封装成类的好处了。
比如在MFC里,一个button里写一堆代码,来描述这个button干的事,时间长了,发现某些判断,另一个button里也需要,甚至大段的代码另一个button只需要改改就是了。
这样,重复的代码,一堆一堆的。改一个,可能其它的有同样问题的也得改。
但如果用类把处理封装了,每个button调的时候只调一个这个处理类的成员函数,事情就简单的多了。
[解决办法]
Everything is an object.
------《Thinking in C++》
[解决办法]
建立CImageProcess来表示图像处理 有啥怪呢,面向对象编程,本身就可以把一切object用类来处理