CSC/ECE 517 Fall 2012/ch1 1w22 an: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 5: Line 5:
==What is a Method Lookup Path?==
==What is a Method Lookup Path?==
When the object receives a method name that is to be executed, these are the steps carried out for finding out that method called:
When the object receives a method name that is to be executed, these are the steps carried out for finding out that method called:
It looks in the current self object’s own instance methods.
 
Then it looks in the list of instance methods that all objects of that class share.
*It looks in the current self object’s own instance methods.
Then in each of the included modules of that class, in reverse order of inclusion.  
*Then it looks in the list of instance methods that all objects of that class share.
Then it looks in that class’s superclass.  
*Then in each of the included modules of that class, in reverse order of inclusion.  
Then in the superclass’s included modules, all the way up until it reaches the class Object.  
*Then it looks in that class’s superclass.  
If it still can’t find a method, the very last place it looks is in the Kernel module, included in the class Object.  
*Then in the superclass’s included modules, all the way up until it reaches the class Object.  
Finally, it calls method_missing (if defined in the class), else throws up the NOMethodError exception.
*If it still can’t find a method, the very last place it looks is in the Kernel module, included in the class Object.  
*Finally, it calls method_missing (if defined in the class), else throws up the NOMethodError exception.


This entire tracing that the object does is the method lookup path.
This entire tracing that the object does is the method lookup path.

Revision as of 02:58, 9 September 2012

Introduction

When we define a method in a class and decide to call that method, how do we do it?

We simply create an object of the class and pass the method name to the object as a message. The object then looks up into its method lookup path and tries to match the called method (passed as a message to the object) with the defined methods in the class. When there is a match, the method is executed along with the parameters passed and the result is returned.

What is a Method Lookup Path?

When the object receives a method name that is to be executed, these are the steps carried out for finding out that method called:

  • It looks in the current self object’s own instance methods.
  • Then it looks in the list of instance methods that all objects of that class share.
  • Then in each of the included modules of that class, in reverse order of inclusion.
  • Then it looks in that class’s superclass.
  • Then in the superclass’s included modules, all the way up until it reaches the class Object.
  • If it still can’t find a method, the very last place it looks is in the Kernel module, included in the class Object.
  • Finally, it calls method_missing (if defined in the class), else throws up the NOMethodError exception.

This entire tracing that the object does is the method lookup path.