2016-01-13 69 views
0

我一般对邮件传递感兴趣。什么是OOP中的消息传递?

我读了很少的定义,但它仍然完全不清楚,并且抽象出它的真正含义。

现在,这里是它让我吃惊MP是至关重要的......

基于类的面向对象的编程语言支持的类定义的对象。类定义包括成员数据。 消息传递是面向对象语言中的一个关键概念(如果不是关键概念)

那么,有人能解释我什么是消息传递(尽可能)清晰的英语与一些类比或一些例子。

我的确有大约一年的编程经验,但主要是在CodeAcademy上,加上各种书籍,YouTube视频和维基百科文章。

+0

重复http://programmers.stackexchange.com/questions/140602/what-is-message-passing-in-oo – buffjape

+0

https://www.google.com/的图

考虑?gws_rd = cr&ei = pDeWVsusO-SGywPy6LCYBg&fg = 1#q = oop + message + passing – bolov

+0

Some oo编程语言提供语法来支持消息传递,其中一些需要实现它。 Altought,这个问题不是特定于任何P.L.,什么O.O. P.L。你会不会使用,提供一个更好的例子? – umlcat

回答

1

想象一下,你有两个对象。把它们描绘成铁盒子。他们内部有各种机制和逻辑,但你无法从盒子外面看到它。他们封装了那个逻辑。对于外部观察者(如彼此)来说,他们是一个“黑匣子”。

这些框有一些可观察(和可交互)的属性和操作。也许他们有小指示灯告诉你一些东西(公共属性),或者他们有按钮在内部做某些事情(方法)并改变这些灯的状态。

方框A知道方框B.它拥有对它的引用。在这个比喻中,它基本上有一些机械接口,可以到达Box B并按下按钮。框A知道框B可以完成框A希望发生的特定事情。方框A无法到达方框B内部,并使用其逻辑(机制)自行完成。这将违反封装并且会使得框A太依赖于框B.

(这是因为框A不是实际上是,这取决于框B的内部机制,此时它仅取决于接口。你需要制造一个全新的盒子B-1,它具有完全不同的方式来做它做的事情,但是被包含在同一个铁壳中,并带有相同的按钮和灯,盒子A从来不需要知道这一点。和Box B-1公开相同接口,因此他们的内部不需要是已知的。)

相反,盒A需要发送消息到盒B.大号他们说Box B需要一些信息才能做到这一点。 (想象一下,例如,信用卡读卡器或类似的东西,盒子内部做了一件事,但它首先需要来自外部源的一些数据。)当盒子A在盒子B上调用这个操作时,它提供了这个信息。 (这是调用方法上盒B和提供参数该方法。)

如果操作有返回值,然后盒B(或箱B-1,没关系)响应有了这些信息。有效地将消息返回传递给方框A(或者调用其操作的人,没关系)。


这是一种复杂的类比来描述什么是本质上公正的,称为方法。但在大多数情况下,这正是它的原因。还有更复杂的情况,有些语言可以做更有趣的事情。例如,有些情况下消息的结构可能不一定是已知的。与Java/C#/等相反。方法签名,其中结构是静态已知的。

但最后,基本上你所拥有的是封装对象互相调用操作,向这些操作发送信息以及从这些操作接收信息。

相关问题