对象的行为

2 views
Skip to first unread message

zhang3

unread,
May 18, 2009, 2:42:12 PM5/18/09
to Zero programming language
在传统的面向对象程序设计中,常常会为了一种行为是属于这个对象还是那个对象而举棋不定。

例如存在一些容器,里面放了苹果,梨之类的玩意,有人从一个容器中取出物体放入另一个容器中,这种过程使用面向对象如何做呢?

取出物体这种操作,是放在人这个对象中,还是放在容器这个对象里面呢?

如果放在人这个对象中,则有:
Person1.pick(Container1,Index).
如果放在容器这个对象中,则有:
Container1.pick(Person1,Index).

这两种方法其实都不好,第一个方法要求实现人的对象时,认识Container这样的对象类型,第二个方法问题一样。

其实,仔细分析起来,应该把pick这个行为独立出来,实现如下的句型:

Person1 pick(Index) Container1

这看上去是回到了过程式语言,但在Zero中,Pick关联到了两种对象,因而,在键入Person1 的时候,就会列出适合Person1的句型,实
际上还是把Pick与Person关联到了一起。

zhang3

unread,
May 19, 2009, 5:28:22 AM5/19/09
to Zero programming language
看一下上面的关联方式。

Pick和Person关联在一起的方式是概念式的,而不是捆绑式的,Pick的概念是独立的,但通过类型推断加上智能提示和Person实现了操作上
的关联。这种方式是最好的。

在这种方式下,我们可以发现,原本被捆绑在对象中的方法很多都可以以这种方式解耦,形成独立的概念,但又与原对象保持某种程度的关联。

Reply all
Reply to author
Forward
0 new messages