bert at freudenbergs.de
Tue Dec 5 20:00:40 UTC 2006
On Dec 5, 2006, at 11:52 , Blake wrote:
> I'm not sure whether to ask this here or on the main list, but I
> thought I'd start here.
> In a traditional 3GL with objects bolted on, methods are
> subroutines with a hidden "self" parameter, so if I write (using,
> oh, Object Pascal):
> I know that MyObject is of a class that has a method (or an
> ancestor with a method) called MyMethod.
> I have read things on Smalltalk that suggest to me that:
> myObject myMethod.
> the selector "myMethod" does not necessarily map one-to-one with a
> method named "myMethod".
> But I haven't been able to figure out how that could be, or under
> what situation it would be useful.
The difference is that you can send any message to any object, and
the object's class can decide how to handle that method. By default,
the class looks into the dictionary of all defined methods and
invokes the matching method. But it can also decide to handle *any*
message, regardless of which methods are actually defined. This lets
you implement, for example, generic object wrappers that log any
message sent to an object. Or, forward the message over the network
to another image. Or, which is the normal case, raise an exception
that this message was not understood.
- Bert -
More information about the Beginners