Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

'method' vs. 'message' vs. 'function' vs. '???'

I've found this to be a language and programming-paradigm thing. One paradigm — OOP — refers to objects with member methods, which conceptually are how you send messages to those objects (this view is reflected in UML, for example).

Another paradigm — functional — may or may not involve classes of objects, but functions are the atomic unit of work.

In structured programming, you had sub-routines (notice that the prefix "sub" implies structure).

In imperative programming (which overlaps with structured quite a lot, but a slightly different way of looking at things), you have a more formulaic view of the world, and so 'functions' represent some operation (often mathematical).

All you have to do to not sound like a rube is to use the terminology used by the language reference for the language you're using.


Message!=Method!=function

in OOP different objects may have different methods bound to the same message.

for example: the message "rotate left n degrees" would be implemented diffrently by diffrent objects such as shape, circle, rectangle and square.

Messages: Objects communicate through messages.

-Objects send and recieve messages.

-the response to a message is executing a method.

-the method to use is determine be the reciever at run-time.

In C++ Methods and Messages are called function members.


I believe message is used in smalltalk.

Java, C# etc. tend to use method or instance method.


I am pretty sure (but a quick Wikipedia check seems to confirm this) that the `message passing' terminology comes from the Smalltalk community. I think it is more or less equivalent to a method call.


In Object Oriented implementations like C#, the concept of a "message" does not really exist as an explicit language construct. You can't look at a particular bit of code and say "there's the message."

Instead, a method of an object's class implies the idea that other objects can send a type of message which trigger the behaviour within that method. So you end up just specifying the method directly, rather than sending a message.

With other implementations like Smalltalk, you can see the message being passed, and the receiving object has the ability to do with that message what it will.

There are libraries which sit on top of languages such as C# which attempt to restore the explicit message passing feel to the language. I've been cooking up one of my own for fun here: http://collaborateframework.codeplex.com/


The "Message" term can refer to sending a message to an object, which is supported in some programming languages and not others.

If the object supports the message, then it will execute some code. Otherwise it will just ignore it. This is a more dynamic approach than an explicit function/method call where the object must support that function.

Objective-c, I believe, uses this messaging approach.