"方法"与"消息"与"功能"与" ???"

时间:2020-03-05 18:47:36  来源:igfitidea点击:

我最近问了一个有关我所谓的"方法调用"的问题。答案是"消息"。作为一个自学成才的业余程序员,我试图表达那些不会让我看起来像个白痴的问题,因此我意识到,我使用的术语在很大程度上揭示了我如何学习编程。

方法/消息/等的各种术语之间是否有区别?在OO编程中?这是不同的编程语言使用不同的术语来描述相似概念的区别吗?

我似乎记得在OO之前的语言中,有时会根据是否期望返回值来区分"子例程"和"功能",但是即使那样,这是否仍是每种语言的区别?

解决方案

回答

我不确定消息术语的由来。我经常在UML设计中遇到消息。对象(UML术语中的Actor)可以通过消息相互通信。在现实世界中,代码消息通常只是一个函数调用。我认为消息是为了尝试与某个对象进行通信。它可以是真实消息(如OS中的消息)或者函数调用。

回答

通常,"方法"似乎是"函数"的专有名称。但是,每种语言都有其自己的关键字。例如,Delphi甚至在返回某些内容的方法("函数")与什么都不返回(方法"过程")之间有所区别,而在C类型语言中,两者没有区别。

回答

我相信消息是在smalltalk中使用的。

Java,Cetc。倾向于使用方法或者实例方法。

回答

我发现这是一种语言和编程范例。一个范式OOP指的是带有成员方法的对象,这些对象在概念上是我们如何向这些对象发送消息(例如,此视图反映在UML中)。

另一个范式功能可能涉及对象类别,也可能不涉及对象类别,但是功能是工作的原子单元。

在结构化编程中,我们具有子例程(请注意,前缀" sub"表示结构)。

在命令式编程中(与结构化结构有很多重叠,但是看待事物的方式略有不同),我们对世界的看法更为公式化,因此"功能"代表某种操作(通常是数学上的)。

我们所要做的只是听起来不那么麻烦,只是将语言参考所使用的​​术语用于我们所使用的语言。

回答

我非常确定(但是快速的Wikipedia检查似乎可以确认这一点),"消息传递"术语来自Smalltalk社区。我认为它或者多或者少等同于方法调用。

回答

以下是一些简化的定义:

方法/子例程/无效:
执行动作

功能:
执行动作并返回值

事件:
物体作用时调用

处理程序:
是处理事件的功能/方法

PS:这是SO为什么应支持DL / DT / DD标签的一个完美示例。

回答

"消息"一词可以指的是向对象发送消息,某些编程语言对此提供支持,而其他语言则不支持。

如果对象支持该消息,则它将执行一些代码。否则它将忽略它。与对象必须支持该函数的显式函数/方法调用相比,这是一种更具动态性的方法。

我相信,Objective-c使用这种消息传递方法。

回答

我认为这是目前的优先事项。我们提到的单词基本上是当今语言中的同义词,并且大多数人会说"方法"或者"功能"而理解意思。如果我们使用仅在OOP中真正使用的"消息",那么我们可能会混淆我们试图传达的内容。例如:"我需要创建一条消息来发送电子邮件。"其他可能是同义词的术语,但这不是完整列表,包括子例程,动作,过程,操作(尽管本质上通常是数学上的),子程序,命令...

回答

消息!=方法!=功能

在OOP中,不同的对象可能具有绑定到同一消息的不同方法。

例如:消息"向左旋转n度"将由不同的对象(例如形状,圆形,矩形和正方形)不同地实现。

消息:对象通过消息进行通信。

-对象发送和接收消息。

-对消息的响应正在执行一种方法。

-使用的方法是确定运行时的接收者。

在C ++中,方法和消息称为函数成员。

回答

方法:类似于传统语言中的功能

消息:类似于传统语言中的参数传递