Bird
Raised Fist0
Rubyprogramming~15 mins

Instance methods in Ruby - Mini Project: Build & Apply

Choose your learning style10 modes available
Instance methods
📖 Scenario: You are creating a simple program to manage a book's information. You want to store the book's title and author, and then display this information using a method inside the book object.
🎯 Goal: Build a Ruby class called Book that stores a book's title and author. Then, create an instance method description that returns a string describing the book.
📋 What You'll Learn
Create a class named Book with an initialize method that takes title and author as parameters.
Store title and author as instance variables.
Define an instance method called description that returns a string in the format: "Title: [title], Author: [author]".
Create an instance of Book with the title "The Ruby Way" and author "Hal Fulton".
Call the description method on the instance and print the result.
💡 Why This Matters
🌍 Real World
Classes and instance methods are used to model real-world objects in programs, like books, users, or products, making code organized and reusable.
💼 Career
Understanding instance methods is essential for Ruby developers building applications, as it helps create clear and maintainable code with object-oriented design.
Progress0 / 4 steps
1
Create the Book class with initialize method
Create a class called Book with an initialize method that takes two parameters: title and author. Inside initialize, assign @title to title and @author to author.
Ruby
Hint

Remember, initialize is the method that runs when you create a new object. Use @ to create instance variables.

2
Add the description instance method
Inside the Book class, add an instance method called description that returns a string formatted as: "Title: [title], Author: [author]" using the instance variables @title and @author.
Ruby
Hint

Use string interpolation with #{} to include instance variables inside the string.

3
Create a Book instance
Create a variable called my_book and assign it a new instance of Book with the title "The Ruby Way" and author "Hal Fulton".
Ruby
Hint

Use Book.new with the exact title and author strings to create the instance.

4
Print the book description
Call the description method on my_book and print the result using puts.
Ruby
Hint

Use puts my_book.description to print the description string.

Practice

(1/5)
1.

What is an instance method in Ruby?

easy
A. A method that belongs to an object created from a class
B. A method that belongs to the class itself, not objects
C. A method that runs only once when the program starts
D. A method that cannot be called on any object

Solution

  1. Step 1: Understand what instance methods are

    Instance methods are defined inside a class and belong to objects created from that class.
  2. Step 2: Differentiate from class methods

    Class methods belong to the class itself, not to individual objects.
  3. Final Answer:

    A method that belongs to an object created from a class -> Option A
  4. Quick Check:

    Instance method = belongs to object [OK]
Hint: Instance methods belong to objects, not the class itself [OK]
Common Mistakes:
  • Confusing instance methods with class methods
  • Thinking instance methods run only once
  • Believing instance methods cannot be called on objects
2.

Which of the following is the correct way to define an instance method greet inside a Ruby class Person?

class Person
  ?
end
easy
A. def self.greet; puts 'Hello'; end
B. def greet; puts 'Hello'; end
C. def Person.greet; puts 'Hello'; end
D. def greet() puts 'Hello' end

Solution

  1. Step 1: Identify instance method syntax

    Instance methods are defined with def method_name inside the class without self..
  2. Step 2: Check options

    def greet; puts 'Hello'; end uses correct syntax. def self.greet; puts 'Hello'; end and def Person.greet; puts 'Hello'; end define class methods. def greet() puts 'Hello' end misses semicolons or line breaks, causing syntax issues.
  3. Final Answer:

    def greet; puts 'Hello'; end -> Option B
  4. Quick Check:

    Instance method = def method_name [OK]
Hint: Instance methods use def without self. [OK]
Common Mistakes:
  • Using self. which defines class methods
  • Omitting semicolons or line breaks incorrectly
  • Defining methods outside the class
3.

What will be the output of the following Ruby code?

class Dog
  def bark
    'Woof!'
  end
end

fido = Dog.new
puts fido.bark
medium
A. Dog
B. bark
C. Woof!
D. NoMethodError

Solution

  1. Step 1: Understand the class and method

    The class Dog has an instance method bark that returns the string 'Woof!'.
  2. Step 2: Trace the method call

    An object fido is created from Dog, then fido.bark calls the bark method, returning 'Woof!'.
  3. Final Answer:

    Woof! -> Option C
  4. Quick Check:

    Calling instance method returns 'Woof!' [OK]
Hint: Instance method returns its string when called on object [OK]
Common Mistakes:
  • Expecting method name instead of return value
  • Confusing class name with output
  • Thinking method is undefined
4.

Find the error in this Ruby code and select the fix that will make it work:

class Cat
  def meow
    puts 'Meow!'
  end
end

kitty = Cat.new
kitty.meow()
medium
A. Remove parentheses from kitty.meow() to kitty.meow
B. Change def meow to def self.meow
C. Add return before puts in method
D. No error; code works as is

Solution

  1. Step 1: Check method definition and call

    The method meow is defined correctly as an instance method and called on an object.
  2. Step 2: Verify syntax and usage

    Using parentheses in method call is allowed in Ruby, so kitty.meow() is valid.
  3. Final Answer:

    No error; code works as is -> Option D
  4. Quick Check:

    Parentheses optional in method calls [OK]
Hint: Parentheses optional in Ruby method calls [OK]
Common Mistakes:
  • Thinking parentheses cause errors
  • Confusing instance and class methods
  • Adding unnecessary return before puts
5.

Given the class below, what will puts user.full_name print?

class User
  def initialize(first, last)
    @first_name = first
    @last_name = last
  end

  def full_name
    "#{@first_name} #{@last_name}".upcase
  end
end

user = User.new('Jane', 'Doe')
hard
A. JANE DOE
B. Error: undefined method full_name
C. "Jane Doe"
D. Jane Doe

Solution

  1. Step 1: Understand instance variables and method

    The initialize method sets @first_name and @last_name. The full_name method returns their combination in uppercase.
  2. Step 2: Trace the method call

    Calling user.full_name returns "JANE DOE" because of the upcase method.
  3. Final Answer:

    JANE DOE -> Option A
  4. Quick Check:

    full_name returns uppercase full name [OK]
Hint: String interpolation with upcase changes output to uppercase [OK]
Common Mistakes:
  • Ignoring upcase method effect
  • Expecting original case output
  • Confusing string quotes in output
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard