Ruby - Association Example

1. Introduction

Association refers to the relationship between multiple objects and how they relate to one another within the context of our program. For instance, considering real-world entities like authors and books, we recognize that an author can have many books, and each book has one author. This type of relationship is known as a "one-to-many" association.

In this post, we'll explore a simple association in Ruby: the relationship between Authors and Books.

2. Program Steps

1. Define an Author class that will represent an author with a list of books.

2. Define a Book class that will represent a book with an author.

3. Create methods in each class to establish and utilize the association between authors and books.

3. Code Program

# Define the Author class
class Author
  attr_accessor :name, :books
  def initialize(name)
    @name = name
    @books = []
  end
  # Add a book to the author's list of books
  def add_book(book)
    @books << book
    book.author = self
  end
end
# Define the Book class
class Book
  attr_accessor :title, :author
  def initialize(title)
    @title = title
    @author = nil
  end
end
# Instantiate an author
george = Author.new('George Orwell')
# Instantiate two books
book1 = Book.new('1984')
book2 = Book.new('Animal Farm')
# Add the books to the author
george.add_book(book1)
george.add_book(book2)
# Display the results
puts "#{george.name} wrote the books:"
george.books.each { |book| puts book.title }
puts "\n#{book1.title} was written by #{book1.author.name}"

Output:

George Orwell wrote the books:
1984
Animal Farm
1984 was written by George Orwell

Explanation:

1. We begin by defining two classes: Author and Book.

2. The Author class has an instance variable @books, which is an array to store the list of books written by the author.

3. The Book class has an instance variable @author that will store a reference to the author of the book.

4. The add_book method in the Author class establishes the association. When a book is added to an author, the book's author attribute is set to that author.

5. When we instantiate the Author and Book objects and call the add_book method, the association between the Author and Book is set.

6. The output showcases this association. The author's books are listed, and we can also determine the author of a particular book.

Through this example, we can see how associations between different objects can be modeled and implemented in Ruby, allowing us to capture real-world relationships in our code.


Comments