Ruby Classes

--Sowjanya Mudunuri
References
• The Ruby Programming Language by David
Flanagan and Yukihiro Matsumoto
• Beginning Ruby by Peter Cooper
• Dis...
Definitions:
Object Oriented Programming:

Programming using classes and

objects to model real-world concepts

Class:

is...
Defining a class
class Point
end
 class names must begin with a capital letter
 In addition to defining a class the clas...
Creating an Object
p = Point.new
All class objects have a method named ‘new’
that creates a new instance of the class
th...
Initialize
class Point
def initialize(x,y)
@x = x
@y = y
end
end

The initialize method is private so you cannot
explicit...
Instance methods
Instance method: An instance method is a method
that is invoked on an instance of the class.
Inside a i...
Instance Variables
 Instance variables begin with an @
 Each instance of a class has its own copy of these
variables

 ...
Accessor/getter methods
Accessor methods return the value of the
instance variables
class Point
def initialize(x,y)
@x = ...
Setter Methods
They set the value of the instance variables
class Point
def x=(value)
@x = value
end
def y=(value)
@y = v...
Watchout
setter methods will not work within other
instance methods of your class
@x = 2 (RIGHT)
x=2 (WRONG).It simply cr...
attr_reader & attr_accessor
methods
attr_reader & attr_accessor methods are defined by
the Module class and they create i...
Class methods
• Methods that are invoked on a class
class Point
def self.name
puts “I am from class method”
end
def name
p...
When do we use Class
Methods?
When we want a class to do something that is
relevant to the class as a whole than asking
i...
More examples to define
Class Methods
class Point
def Point.name
puts “I am inside a class method”
end
end
class Point
cla...
More examples to define
Class Methods
We can also Open up the Point class so we can
add methods to it.

After Defining th...
Inheritence
When a ChildClass inherits from the
ParentClass, the ChildClass gets all the
behavior(instance methods + clas...
Inheritence
 If you do not specify a superclass when you define
a class, your class implicitly extends from Object
 Ruby...
Advantages of Inheritence
• More generic behavior goes into the superclass and the
specific behavior goes into the subclas...
Method Overriding
 When a subclass defines a method with the same name as
a method in the super class, the method in subc...
Augmenting behavior by
chaining
when we override a method we replace it
altogether
To augment the method by adding new c...
Exercise Time!!!!
Step 1: Go to IRB or http://rubyfiddle.com/
(or)
Step 1: you can create each of the following classes in...
Exercise Time!!!!
• step 5: Define an instance method inside the
“sum” class named “value” and return the value
of the sum...
For people who have ruby and
git on their machine.
• once you are done you can place all the ruby
files in git with “git i...
Upcoming SlideShare
Loading in …5
×

Classes

565 views

Published on

Published in: Technology, Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
565
On SlideShare
0
From Embeds
0
Number of Embeds
128
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Classes

  1. 1. Ruby Classes --Sowjanya Mudunuri
  2. 2. References • The Ruby Programming Language by David Flanagan and Yukihiro Matsumoto • Beginning Ruby by Peter Cooper • Disclaimer: This notes is composed from the above referenced books. This presentation is used to help fellow friends who are trying to learn ruby.
  3. 3. Definitions: Object Oriented Programming: Programming using classes and objects to model real-world concepts Class: is a definition of a concept. Ex: Box, Person, Ticket…. A class acts a blueprint. Object: is an instance of a class. Think of them as real-life objects. Ex: Mary, my_real_ticket. Encapsulation: the ability of an object to hide their data behind an abstracted interface.
  4. 4. Defining a class class Point end  class names must begin with a capital letter  In addition to defining a class the class keyword creates a new constant to refer to the class  Within the body of the class but outside of any instance methods defined by the class, the self keyword refers to the class being defined
  5. 5. Creating an Object p = Point.new All class objects have a method named ‘new’ that creates a new instance of the class the ‘new’ method automatically invokes the ‘initialize’ method on that instance. Whatever arguments you passed on to ‘new’ are passed onto ‘initialize’.
  6. 6. Initialize class Point def initialize(x,y) @x = x @y = y end end The initialize method is private so you cannot explicitly call initialize on p to reinitialize its state
  7. 7. Instance methods Instance method: An instance method is a method that is invoked on an instance of the class. Inside a instance method the value of self is an instance of the class in which the method is defined class Person def name end end p = Person.new p.name
  8. 8. Instance Variables  Instance variables begin with an @  Each instance of a class has its own copy of these variables  The instance variables of an object can only be accessed by the instance methods of that object. ie., Code that is not inside an instance method cannot read or set the value of an instance variable  Ruby objects are strictly encapsulated! instance variables cannot be directly accessed from outside of the object
  9. 9. Accessor/getter methods Accessor methods return the value of the instance variables class Point def initialize(x,y) @x = x @y = y end def x @x end def y @y end end
  10. 10. Setter Methods They set the value of the instance variables class Point def x=(value) @x = value end def y=(value) @y = value end end
  11. 11. Watchout setter methods will not work within other instance methods of your class @x = 2 (RIGHT) x=2 (WRONG).It simply creates a new variable self.x=2 (RIGHT)
  12. 12. attr_reader & attr_accessor methods attr_reader & attr_accessor methods are defined by the Module class and they create instance methods All Classes are Modules. The Class class is a subclass of Module class attr_reader creates getter methods attr_accessor creates getter and setter methods class Point attr_reader :x, :y attr_accessor :z end
  13. 13. Class methods • Methods that are invoked on a class class Point def self.name puts “I am from class method” end def name puts “I am from instance method” end end Point.name Point.new.name
  14. 14. When do we use Class Methods? When we want a class to do something that is relevant to the class as a whole than asking individual objects ActiveRecord::Base#find Class Methods can only be called on classes and instance methods can only be called on an instance of a class
  15. 15. More examples to define Class Methods class Point def Point.name puts “I am inside a class method” end end class Point class << self def name puts “I am inside a class method” end end end
  16. 16. More examples to define Class Methods We can also Open up the Point class so we can add methods to it. After Defining the Point class class << Point def name puts “I am inside a class method” end end
  17. 17. Inheritence When a ChildClass inherits from the ParentClass, the ChildClass gets all the behavior(instance methods + class methods) from the ParentClass We say ChildClass is a subclass of ParentClass ParentClass is a superclass of ChildClass SYNTAX: class Rectangle < Shape end
  18. 18. Inheritence  If you do not specify a superclass when you define a class, your class implicitly extends from Object  Ruby’s instance variables are not inherited and have nothing to do with the inheritence mechanism  A class can have as many subclasses as possible can only have one superclass.  Ruby doesnot support multiple inheritence
  19. 19. Advantages of Inheritence • More generic behavior goes into the superclass and the specific behavior goes into the subclass • Saves a lot of repetition. You need to change the common behavior only at one place rather than all the classes class Animal class Human < Animal class Dog < Animal def eyes def legs def legs 2 2 4 end end end end end end
  20. 20. Method Overriding  When a subclass defines a method with the same name as a method in the super class, the method in subclass is used class Person def name “General name” end def smart “yes” end end class Engineer < Person def name puts “I am an Engineer” end end
  21. 21. Augmenting behavior by chaining when we override a method we replace it altogether To augment the method by adding new code the keyword ‘super’ comes to our rescue class Engineer < Person def name “Engineer” + super end end
  22. 22. Exercise Time!!!! Step 1: Go to IRB or http://rubyfiddle.com/ (or) Step 1: you can create each of the following classes in a separate ruby file. Step 2: Define a class named “operation” which takes two values upon intialize and stores them in instance variables. Step 3: Create getter methods for this variables.( hint you can use attr_reader) Step 4: Define a class named “sum” and inherit from “operation”
  23. 23. Exercise Time!!!! • step 5: Define an instance method inside the “sum” class named “value” and return the value of the sum of the two instance variables • step 6: Similarly implement “difference” class • step 7: Similarly implement “multiply” class • step 8: Similarly implement “divide” class • step 9: create a class named “calculate” which instantiates each of these classes and test if the result is correct
  24. 24. For people who have ruby and git on their machine. • once you are done you can place all the ruby files in git with “git init” and push it to your github. • Yay…

×