>>>>> "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)