Follow step bye how a method call gets resolved. Example-1

From Cuis CookBook
Jump to navigation Jump to search

Problem. What happens when we send a message to an object? How the system decide what other messages to send?

Solution. In this example we show what happens when we send the message on: to a PositionableStream class.

  • First let's see the code of the method
PositionableStream class >> on: arg1
   self basicNew on: arg1
  • The first thing that get executed is self basicNew
  • self here is the PositionableStream class
  • basicNew is not in its methods so it will be looked into its superclasses methods
  • who are the superclasses ? these:
PositionableStream class. "=> PositionableStream class "
PositionableStream class superclass. "=> Stream class "
PositionableStream class superclass superclass. "=> Object class "
PositionableStream class superclass superclass superclass. "=> ProtoObject class "
PositionableStream class superclass superclass superclass superclass. "=> Class "
PositionableStream class superclass superclass superclass superclass superclass. "=> ClassDescription "
PositionableStream class superclass superclass superclass superclass superclass superclass. "=> Behavior "
PositionableStream class superclass superclass superclass superclass superclass superclass superclass. "=> Object "
PositionableStream class superclass superclass superclass superclass superclass superclass superclass superclass. "=> ProtoObject "
PositionableStream class superclass superclass superclass superclass superclass superclass superclass superclass superclass. "=> nil "
  • Interesting enough at some point we have Behaviour as superclass, NOT Behaviour class !
  • Indeed Behaviour >> basicNew exists, and it is a primitive.
  • so self basicNew creates a new instance from the PositionableStream class
  • this is an object PositionableStream and is has the on: method.

NM on 14-Aug-2021. This was discussed on the mailing list on 12-Aug-2021 with the help of Gerald Klix.