(原創) Object是由Property、Method、Event构成的吗? (C/C++) (OO) (Database) (Visual FoxPro)
在以前学VFP和VB时,很多书谈到object,都说object包含三部份Property(属性),Method(方法),Event(事件),对于VFP和VB的Control来说,的确是如此没错,我也因此视为当然,认为Property、Method、Event合起来称为PEM,此为object构成的要素。所以以前在分析对象时,总对何者该为Property,何者该为Event想破头。
学了C++之后,才发现原来object只由两部分构成,Data Member(Field、Private Variable)就是的数据结构(Data Structure),Member Function(Method)就是算法(Algorithm),Property和Event都是多余的,事实上Property可由Method取代(C++、Java都没有Property),Event其实只是Observer Pattern的Syntax sugar而已,所以在分析object时,其实不用伤透脑筋去分析Property和Event,只要将该object资料部份用Data Member表示,算法部分用Member Function表示,这样就对了,这种想法也刚好与传统想法『程序= 数据结构 + 算法』接轨,显示OO只是Procedure-based写法的evolution,而非revolution。Procedure-based是将数据结构与算法分开,而OO是将数据与算法合而为一而已。