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)