首页 新闻 会员 周边 捐助

关于面向对象的一个小问题

0
悬赏园豆:5 [待解决问题]

在面向对象程序设计里面“消息”具体指的是什么内容,又应该怎样去理解它?

againover的主页 againover | 初学一级 | 园豆:197
提问于:2013-09-12 21:56
< >
分享
所有回答(6)
1

面向对象的关键要素就是消息类是结构,消息是行为,举个例子:

public class MyClass
{
    public void MyFunction(){}
}

public class Program
{
      public static void Main()
      {
           MyClass myClass=new MyClass();
           myClass.MyFunction();//此处就是通过MyFunction给MyClass发送消息。
      }
}
小AI | 园豆:354 (菜鸟二级) | 2013-09-12 22:53
0

消息就是对象方法的一次调用。我觉得用消息不太贴切,会让人产生困惑。

angelshelter | 园豆:9914 (大侠五级) | 2013-09-13 07:02
0

可心理解为方法的调用吧

li-peng | 园豆:954 (小虾三级) | 2013-09-13 10:14
0

消息是要包含接收和发送方信息的,一般事件触发是发送消息,对象行为执行就是方法调用。

kylin.chen | 园豆:983 (小虾三级) | 2013-09-13 14:08
0

各有各的理解 我的理解是:消息就是在对象之间传递的信息

Albert Fei | 园豆:2102 (老鸟四级) | 2013-09-13 16:31
0

面向对象是一种模拟的态度

所以与语言无关, 不要把一切都扔到具体实现上。 

 

具体来说, 编程其实和写历史是一样的。

唯一的不同是历史写的是过去, 程序写的是未来。

 

历史书早期有编年体, 我们知道, 编年体的特点就是:对时间掌握的非常好

我们可以很轻易的知道先发生什么, 后发生什么, 等等。

 

慢慢的, 随着历史舞台登场的人物太多, 同一年有过多的事情发生, 而很多事情要跨越很多年才能看出影响。

 

所以慢慢的, 纪传体就流行了。他们主要记录每一个人的一生。 读者只要不断的读一个个人物的传记, 慢慢就理解了整个历史。

 

这样有几个好处:

1 读者可以在没有彻底读完整本书的情况下, 慢慢的一点一点理解整本书的内容。 

2 如果作者后来发现有写错的地方, 比如有一天发现历史资料里忽然多了一段故事, 只要将某个人的记录更新下即可。 而不用动整本书。 

 

具体到编程上, 纪传体就是面向过程。 当项目庞大的时候, 读起来麻烦, 有问题的时候维护起来麻烦。 

而面向对象就是纪传体。

 

那么纪传体里面就会有人物, 有人物的相互影响对不对?

这个就是所谓的对象和消息。

 

比如诸葛亮对王朗说: 我x你大爷

王朗死了。 

那么诸葛亮说的这段话就是一个消息。

 

消息如何传递, 怎么实现这都不重要。 但是有了消息之后, 对象将不再是孤立的对象。

因为孤立的对象是不可能影响历史的。 

 

具体来说, 每个类上都有Method, 那么Method算不算消息呢?

可算也可不算。 这取决与是什么Method

比如:

诸葛亮.骂(王朗);

这个骂的操作会对王朗产生影响。 所以你就可以认为是消息。

反过来

王朗.卒();

这个就很难说是消息。 比如卒这个函数就相当于析构函数。 析构函数怎么说都不算消息对不对?

 

不过反过来说面向对象这是个理论上的东西, 所以也不用纠结的太死。

不能因为“面向对象”就一点“面向过程”都没有。 实际上只是描述方式不同而已。

计算机还是一个指令一个指令的跑的。

 

就像世纪, 我们说它是纪传体, 本纪世家列传各篇里面哪个不是按时间顺序跑下来的?

 

只不过第一顺序是人, 第二顺序是时间而已。

反过来说C语言, 难道里面就没对象了么?

其实每个struct你说他是对象一点都没错啊!

 

以上是个人理解, 如果错误(例如与xx教材观点不一致)大家千万不要喷我啊。。。。

undefined | 园豆:898 (小虾三级) | 2014-09-17 18:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册