Objects and Classes
Class Methods
Class methods belong to the class itself and are called without creating an object first.
class method
A method defined as `self.method_name` is called on the class rather than on an instance.
Class Methods
class_methods.rb
Replay: real traced execution (multi-file project)
class Grade
def self.passing?(score)
score >= 70
end
def self.label(score)
passing?(score) ? "pass" : "review"
end
end
score = 82
puts "score=#{score}"
puts "status=#{Grade.label(score)}"
class Grade
def self.passing?(score)
score >= 70
end
def self.label(score)
passing?(score) ? "pass" : "review"
end
end
score = 55
puts "score=#{score}"
puts "status=#{Grade.label(score)}"
class Grade
def self.passing?(score)
score >= 70
end
def self.label(score)
passing?(score) ? "pass" : "review"
end
end
score = 70
puts "score=#{score}"
puts "status=#{Grade.label(score)}"
score ← 82
11score→ 82 = 82 #@score=55, 701213puts "score=#{score82}"14puts "status=#{Grade.label(score)pass}"outputscore=82def self.label(score)
6def self.label(score82)7 passing?(score82) ? "pass" : "review"8enddef self.passing?(score)
1class Grade2 def self.passing?(score82)3 score82 >= 704 endputs "status=#{Grade.label(score)}"
13puts "score=#{score}"14puts "status=#{Grade.label(score)pass}"outputstatus=pass
score ← 55
11score→ 55 = 551213puts "score=#{score55}"14puts "status=#{Grade.label(score)review}"outputscore=55def self.label(score)
6def self.label(score55)7 passing?(score55) ? "pass" : "review"8enddef self.passing?(score)
1class Grade2 def self.passing?(score55)3 score55 >= 704 endputs "status=#{Grade.label(score)}"
13puts "score=#{score}"14puts "status=#{Grade.label(score)review}"outputstatus=review
score ← 70
11score→ 70 = 701213puts "score=#{score70}"14puts "status=#{Grade.label(score)pass}"outputscore=70def self.label(score)
6def self.label(score70)7 passing?(score70) ? "pass" : "review"8enddef self.passing?(score)
1class Grade2 def self.passing?(score70)3 score70 >= 704 endputs "status=#{Grade.label(score)}"
13puts "score=#{score}"14puts "status=#{Grade.label(score)pass}"outputstatus=pass