>>>>> "James" == <james / rubyxml.com> writes:

    James> This is where I see a chance for confusion.  Message !=
    James> method.  Ruby objects can respond to arbitrary messages in
    James> a variety of ways, and yet the object may have no
    James> corresponding method.

>>>>> "Michael" == Michael Campbell <michael_s_campbell / yahoo.com> writes:

    Michael> I'm not sure this is germane in an introductory OO
    Michael> course.  I tend to think not.

Actually, I think this is fundamental to OO.  When teaching OO, I make
the distinction between interface and behavior.  Interface is set of
messages that an object will respond to.  Behavior is the actual code
(method) that gets executed in response to sending a message to and
object.

In non-OO languages, interface and behavior are tied together.  The
same body of code (behavior) will be executed whenever its name
(interface) is invoked.

In an OO language, the body of code that is called depends not only on
the name, but also on the receiver of the message.  The whole point of
polymorhphism in OO is to allow the separation of interface from
behavior (messages from methods).

-- 
-- Jim Weirich     jweirich / one.net    http://w3.one.net/~jweirich
---------------------------------------------------------------------
"Beware of bugs in the above code; I have only proved it correct, 
not tried it." -- Donald Knuth (in a memo to Peter van Emde Boas)