Ruby Classes and OOP

In Ruby, everything is an object — including numbers, strings, and even classes themselves. Classes define blueprints; objects are instances.

Basic Class

Ruby
class Student
  attr_accessor :name, :age, :grade

  def initialize(name, age, grade)
    @name = name
    @age = age
    @grade = grade
  end

  def introduce
    "Hi, I'm #{@name}, age #{@age}"
  end

  def passing?
    @grade >= 50
  end
end

ram = Student.new("Ram", 22, 85)
puts ram.introduce    # "Hi, I'm Ram, age 22"
puts ram.passing?     # true

Inheritance

Ruby
class Animal
  attr_reader :name

  def initialize(name)
    @name = name
  end

  def speak
    "..."
  end
end

class Dog < Animal
  def speak
    "#{@name} says Woof!"
  end
end

class Cat < Animal
  def speak
    "#{@name} says Meow!"
  end
end

[Dog.new("Rex"), Cat.new("Whiskers")].each { |a| puts a.speak }

Modules (Mixins)

Ruby
module Trackable
  def track(label)
    puts "[#{label}] #{self.class} at #{Time.now}"
  end
end

class Order
  include Trackable

  def initialize(amount)
    @amount = amount
  end
end

order = Order.new(500)
order.track("created")  # [created] Order at 2024-...

Tips

  • Use attr_accessor for getters/setters — saves boilerplate.
  • Use modules for shared behaviour (mixins) instead of multiple inheritance.
  • Ruby classes are open — you can add methods to existing classes.

🎉 You have completed the Ruby course! The next step is to build something with Ruby on Rails.