面向事物和面向对象的差异

来源:百度文库 编辑:神马文学网 时间:2024/04/27 10:25:09
鉴于有不少同学询问面向事物和面向差异,所以我在这里说明一下。

1. 面向事物和面向对象的根本差异在于事物和对象的差异,可以从字典上找出答案。
事物:一切东西都是事物,包括实体、状态、行为、可以想象到的和不可以想象到的都可以称为事物。
对象:主体的目标事物。

我可以举一个例子来说明:比如你在大街上看到一个很漂亮的女人。
你说:好漂亮的女人啊。
旁人甲:你不知道吧,其实他是男的,因为是人妖。
人妖说:我就是女人。

ok,看出差异了吗?‘一个漂亮的女人’是一个独一无二的事物,而通过这个事物不同的主体所观察到的结论是不一样的,而主体所观察到的结果就是对象。

2. 面向事物和面向对象在方法上的差异。
面向事物和面向对象翻译成英文就是thing oriented和object oriented,而oriented是导向的意思,即以事物为导向和以对象为导向。

通过1我们可以知道事物和对象是有本质差异的,这样也就导致了面向事物和面向对象是有本质差异的,但是在1的例子中人妖对自己也有看法,也就是说当我们需要讨论事物的时候就会提升到对象的角度,这样在实际中他们又有了90%以上的相似处。

那么面向事物和面向对象在方法上的差异主要体现在那里呢?
主要是:
面向事物有一套理论是关于事物如何成为一种事物的,这是面向事物的基本内容,即它的核心不是不关心观察到的结果,而是关心一个事物是如何成为一个事物的。
举例来说就是在面向对象中并不关心一个人妖如何被看成一个漂亮的女人的,面向对象只关心漂亮女人这个对象,至于如何变成一个漂亮女人的那是程序员的事情,不是面向对象的事情,而在面向事物中则必须有系统来解释一个人是如何成为一个漂亮女人的。

3. 面向事物和面向对象在编程上的差异。
因为面向事物还没有被众人所认识,所以我只能简单的说面向事物更接近于人的思维习惯,至于是否果真如此,需要大家的检验。
另外通过1和2可知我在一开始就留了一个后门,一个让程序成为智能系统的可能性,因为面向事物的核心是解释一个事物如何成为一种事物的,这种方法也是程序可以使用的方法,并不是程序员特有的专利。

4. 面向事物的核心:一个事物是什么的问题。
一个事物是什么,可以使用任意事物来解释(包括自身),在面向事物里,如果指定一个事物A是另一个事物B的描述,那么就可以说事物B是A。比如说我们用人这个事物来描述一个事物B,那么就可以说B是人。
以上看起来似乎很困难,但实现起来却是很简单的,是超级简单,了解一下XWorker就知道了。
也许你对4还是有点困惑,那我以面向对象来解释一下,面向对象中有类和类的实例两个概念,如果想知道一个实例是什么,那么只需要知道它的类即可,也就是Java中的instanceof操作符和javascript中的typeof操作符。
而类有什么内容呢,其实就是有对象的属性和行为的说明,所以如果我们人为的把一个事物的特殊子事物当作另一个事物的属性和行为的说明就一样可以起到类的作用。