Message Sending
Sending a message is just a function call. However, the specific function ( method) that is actually called is determined dynamically by the runtime type of the object to which the message is sent ( dynamic dispatch).
Drawable / \ / \ Circle Square draw: circle_draw() draw: square_draw() / / obj
Suppose we execute: obj.draw(x,y)