Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ruby object model


Published on

Published in: Technology

Ruby object model

  1. 1. Chhorn Chamnap Yoolk Mango 4 Aug 2010
  2. 2.  Basic Ruby  Methods  Classes  Method-Access Rules  What’s in an Object?  Classes in Depth  What Happens When You Call a Method?  Module  Constants  Self  Scope  Singleton Method
  3. 3.  Local variables  start with a lowercase letter or an underscore Eg: x, string, __abc__, start_value, and firstName  Ruby convention is to use underscores with multiple words (first_name)  can't start with an uppercase letter  Instance variables  storing information for individual objects  always start with a single at-sign(@)  can start with an uppercase letter
  4. 4.  Class variables  store information per class hierarchy  follow the same rules as instance variables  start with two at-signs: @@running_total  Global variables  recognizable by their leading dollar sign ($)  $:, $1, and $/, $stdin and $LOAD_PATH
  5. 5.  predefined, reserved terms associated with specific programming tasks and contexts.  def,  class,  if, and  __FILE__
  6. 6.  Ruby interprets it as one of three things:  A local variable  A keyword  A method call  Here’s how Ruby decides: 1. If the identifier is a keyword, it’s a keyword. 2. If there’s an equal sign (=) to the right of the identifier, it’s a local variable. 3. Otherwise, assumed to be a method call.
  7. 7.  When you load a file, Ruby looks for it in each of its load path.  The last directory is the current directory.  load is a method.  Load file from relative directories  load "../extras.rb"  load "/home/users/dblack/book/code/loadee.rb"  A call to load always loads the file you ask for.  Good to examine the effect of changes immediately.
  8. 8.  Doesn’t reload files if already loaded.  require "loadee"  require "/home/users/code/loadee"
  9. 9.  Follow the same rules and conventions as local variables  except, can end with ?, !, or =  Methods are expressions that provide a value.  In some contexts, you can’t tell, just by looking at an expression.
  10. 10.  Ruby sees all data structures and values as objects.  x = "100".to_i(9)  Methods can take arguments.  Parentheses are usually optional.  Many programmers use parentheses in most or all method calls, just to be safe.
  11. 11.  Have to supply the correct number of arguments.
  12. 12.  A method that allows any number of arguments. def multi_args(*x) puts "I can take zero or more arguments!" end multi_args(1,2,4) multi_args(1,2)
  13. 13. def default_args(a,b,c=1) puts "Values of variables: ",a,b,c end default_args(3,2)
  14. 14.  Ruby tries to assign values to as many variables as possible.  The sponge parameters get the lowest priority.
  15. 15.  Required ones get priority, whether they occur at the left or at the right of the list.  All the optional ones have to occur in the middle. def broken_args(x,*y,z=1) syntax error end
  16. 16.  Classes define clusters of behavior or functionality.  Classes can respond to messages, just like objects.  Objects can change, acquiring methods and behaviors that were not defined in their class.
  17. 17.  In Ruby, classes are objects.  The new method is a constructor.  Classes are named with constants.
  18. 18.  Ruby executed the code within the class just as it would execute any other code.
  19. 19.  It’s possible to reopen a class and make additions or changes.
  20. 20.  These methods defined inside a class.  Used by all instances of the class.  They don’t belong only to one object.
  21. 21.  Enables individual objects to remember state.  Always start with @.  Visible only to the object to which they belong.  Initialized in one method definition is the same as in other method definitions.
  22. 22.  Define a special method called initialize.
  23. 23.  Ruby allows you to define methods that end with an equal sign (=). def price=(amount) ticket.price=(63.00) @price = amount ticket.price = 63.00 end
  24. 24.  The attributes are implemented as reader and/or writer methods.
  25. 25.  Ruby supports only single inheritance.  Classes can import modules as mixins.  The class Object is almost at the top of the inheritance chart.
  26. 26. • Private methods can’t be called with an explicit receiver. class Baker class Baker def bake_cake def bake_cake pour_flour pour_flour add_egg add_egg end end def pour_flour private end def pour_flour def add_egg end end def add_egg private: pour_flour, end :add_egg end end
  27. 27.  It’s OK to use an explicit receiver for private setter methods.
  28. 28.  The top-level method is stored as a private instance method of the Object class.
  29. 29.  Every object is “born” with certain innate abilities.  object_id  respond_to?  send  methods  instance_variables
  30. 30.  Not uncommon to define a method called send.  Then, use __send__ instead.  public_send, a safe version of send method.  send can call an object’s private methods public_send can’t.
  31. 31.  Every class is an instance of a class called Class.  You can also create a class the same way you create most other objects. my_class = instance_of_my_class =
  32. 32.  The class Class is an instance of itself.  Object is a class, Object is an object.  And Class is a class. And Object is a class, and Class is an object.  Which came first?  Ruby has to do some of this chicken-or-egg stuff in order to get the class and object system up and running.
  33. 33.  Classes are objects.  Instances of classes are objects, too.  A class object has its own methods, its own state, its own identity.
  34. 34.  When you call a method, Ruby does two things:  It finds the method (method lookup).  It executes the method. (find self).
  35. 35.  “one step to the right, then up.”
  36. 36.  How objects call their methods?  From their class  From the superclass and earlier ancestors of their class  From their own store of singleton methods  Instances of Class can call methods that are defined as instance methods in their class.  Class defines an instance method called new.
  37. 37.  The class Class has two new methods as:  a class method;  an instance method;  Instances of Class have access to the instance methods defined in Module. class Ticket attr_reader :venue, :date attr_accessor :price
  38. 38.  Modules are bundles of methods and constants.  Modules don’t have instances.  Consists of the functionality to be added to a class or an object.  Modules encourage modular design.  Modules are the more basic structure, and classes are just a specialization.
  39. 39.  Modules get mixed in to classes, using the include method, referred to as mix-ins.  The instances of the class have the ability to call the instance methods defined in the module.  A class can mix in more than one module.
  40. 40.  To resolve a message into a method:  Its class  Modules mixed into its class  The class’s superclass  Modules mixed into the superclass  Likewise, up to Object (and its mix-in Kernel) and BasicObject
  41. 41.  Define a method twice inside the same class, the second definition takes precedence. class D def hello puts “hello” end end class D def hello puts “hello world” end end
  42. 42.  If the object’s method-lookup path includes more than two same methods, the first one is the “winner”.
  43. 43.  A class mixes in two or more modules.  The modules are searched in reverse order of inclusion
  44. 44. class C include M include N include M end  Re-including a module doesn’t do anything.  N is still considered the most recently included module.
  45. 45.  Use the super keyword to jump up to the next-highest definition, in the method- lookup path.
  46. 46.  The way super handles arguments:  Called with no argument list – super  Called with an empty argument list – super()  Called with specific arguments – super(a,b,c)
  47. 47.  The Kernel module provides an instance method called method_missing.
  48. 48.  Nested module/class chains are used to create namespaces for classes, modules, and methods. module Tools class Hammer end End h =
  49. 49.  Begin with an uppercase letter. eg: A, String, FirstName, and STDIN  (FirstName) or (FIRST_NAME) is usual.  Can be referred to from inside the instance or class methods.
  50. 50.  You get a warning if you reassign to the constant.  To modify a constant, use a variable instead.  not redefining a constant,  good for reloading program files
  51. 51.  Constants have a kind of global visibility or reachability.  Bears a close resemblance to searching a filesystem.
  52. 52.  Like /, the :: means “start from the top level.”
  53. 53.  At every moment, only one object is playing the role of self.  Self is the default object or current object.  To know which object is self, you need to know what context you’re in.
  54. 54.  But what is self when you haven’t yet entered any definition block?  The answer is that Ruby provides you with a start- up self at the top level. ruby -e 'puts self'  main is a special term that the default self object.  The keyword (class, module, or def) marks a switch to a new self.
  55. 55.  In a class or module definition, self is the class or module object.
  56. 56.  In a method definition, self is the object that called it.
  57. 57.  When a singleton method is executed, self is the object that owns the method.
  58. 58.  If the receiver of the message is self, you can omit the receiver and the dot.
  59. 59.  If both a method and a variable of a given name exist (talk), the variable takes precedence.  To force Ruby to see as a method name, you’d have to use or talk().  To call a setter method, have to supply object-dot-notation. self.first_name = “dara” first_name = “dara”
  60. 60.  Every instance variable belongs to self.
  61. 61.  Scope refers to the reach or visibility of variables and constants.  Three types of variables: global, local, and class variables.
  62. 62.  Global scope is scope that covers the entire program.  Global scope is enjoyed by global variables.
  63. 63.  Local scope is a basic layer of every Ruby program.  Every time you cross into a class, module, or def keyword, you start a new local scope.  The top level has its own local scope.  Every class or module definition block has its own local scope.  Every method definition has its own local scope.
  64. 64.  Provides a storage mechanism shared between a class and its instances.  Visible only to a class and its instances.
  65. 65.  They’re class-hierarchy variables.
  66. 66.  Let’s say we’ve created our Ticket class.  Ticket isn’t only a class.  Ticket is also an object in its own right.  defined directly on the class object Ticket.  referred to as a class method of the class.
  67. 67.  Where do singleton methods live?  The singleton class  Every object has two classes:  The class of which it’s an instance  Its singleton class
  68. 68.  Singleton classes are anonymous.  The << object notation means the anonymous, singleton class of object.
  69. 69.  The Well-Grounded Rubyist, David A. Black  Metaprogramming Ruby, Paolo Perrotta