Series Ruby for Beginners - Chapter 1: Classes and Objects


Chào mừng bạn đến với series Ruby for Beginners! Nếu bạn mới bắt đầu học lập trình hoặc muốn khám phá ngôn ngữ Ruby từ con số 0, đây chính là nơi dành cho bạn. Trong loạt bài này, tôi sẽ hướng dẫn bạn qua từng bước cơ bản, giúp bạn nắm vững các khái niệm quan trọng và áp dụng chúng vào các bài tập thực tế. Ruby nổi tiếng với cú pháp đơn giản, dễ đọc, và rất phù hợp cho người mới bắt đầu. Hãy cùng nhau xây dựng nền tảng vững chắc để bạn tự tin viết code và phát triển dự án của riêng mình!


Classes and Objects

Giới thiệu

Ruby là một ngôn ngữ lập trình hướng đối tượng. Các tính năng của ngôn ngữ lập trình hướng đối tượng bao gồm

  • Tính đóng gói (Data Encapsulation)
  • Tính trừu tượng (Data Abstraction)
  • Tính đa hình (Polymorphism)
  • Tính kế thừa (Inheritance)

Một chương trình hướng đối tượng bao gồm class object , một Class là bản thiết kế mà từ đó các đối tượng khác nhau được tạo ra.

Ví dụ: Chúng ta nói rằng cuốn sách (book) là một thể hiện của class books

Dưới đây là một ví dụ về class LibraryItem

 class LibraryItem  
  attr_accessor :title, :author, :publication_year, :status  
  def initialize(title, author, publication_year, status)  
   @title = title  
   @author = author  
   @publication_year = publication_year  
   @status = status  
  end  
  def borrowing  
   # method implementation  
  end  
  def returning  
   # method implementation  
  end  
  def reserving  
   # method implementation  
  end  
 end  
Class LibraryItem trong Ruby là một mô hình (model) đại diện cho một mục trong thư viện. Nó có các thuộc tính và phương thức cơ bản giúp quản lý thông tin và trạng thái của mục đó. Dưới đây là chi tiết:

Thuộc tính (attr_accessor)
  • title: Tiêu đề của mục thư viện.
  • author: Tác giả của mục thư viện.
  • publication_year: Năm xuất bản của mục.
  • status: Trạng thái của mục, ví dụ như "đang mượn", "có sẵn", hoặc "đặt trước".
Phương thức attr_accessor cho phép cả đọc và ghi các thuộc tính này từ bên ngoài class.

Phương thức khởi tạo (initialize)
  • Phương thức này được gọi khi một đối tượng mới của class LibraryItem được tạo ra. Nó nhận bốn tham số (tiêu đề, tác giả, năm xuất bản, trạng thái) và gán chúng cho các biến instance (@title, @author, @publication_year, @status).

Phương thức (methods)
  • borrowing: Dành cho việc mượn một mục trong thư viện. 
  • returning: Dành cho việc trả lại mục đã mượn.
  • reserving: Dành cho việc đặt trước một mục,

Ví dụ: một cuốn sách có tựa đề "1984" của George Orwell, xuất bản năm 1949, có thể có trạng thái "có sẵn"


Định nghĩa một class trong Ruby

Để triển khai hướng đối tượng trong bằng ruby trước tiên chúng ta cần tìm hiểu cách tạo object và class bằng ruby

Một class trong ruby luôn bắt đầu bằng từ khóa class, theo sau là tên class.Tên class luôn phải viết hoa chữ cái đầu tiên

Một class có tên là Member sẽ trông như thế này:
 class Member  
 end  

Kết thúc class bằng từ khóa end

Biến trong một class ruby

Ruby cung cấp bốn loại biến:

  • Biến cục bộ (Local Variables): Biến cục bộ là các biến được định nghĩa trong một phương thức. Biến cục bộ không khả dụng bên ngoài phương thức. Biến cục bộ bắt đầu bằng một chữ cái thường hoặc _.
  • Biến instance (Instance Variables): Biến instance khả dụng giữa các phương thức trong bất kỳ instance (đối tượng) cụ thể nào. Điều này có nghĩa là biến instance thay đổi từ đối tượng này sang đối tượng khác. Biến instance được bắt đầu bằng ký tự @ và theo sau là tên biến.
  • Biến lớp (Class Variables): Biến lớp khả dụng giữa các đối tượng khác nhau. Biến lớp thuộc về lớp và là một đặc điểm của lớp. Chúng được bắt đầu bằng ký tự @@ và theo sau là tên biến.
  • Biến toàn cục (Global Variables): Biến toàn cục khả dụng giữa các lớp. Biến toàn cục luôn được bắt đầu bằng ký tự $.
Ở bài tiếp theo chúng ta sẽ tìm hiểu kỹ về biến trong ruby

Tạo object  trong ruby bằng phương thức new

Phương thức new là một loại phương thức đặc biệt, được định nghĩa sẵn trong thư viện Ruby. Phương thức new thuộc về các phương thức của lớp (class methods).


Ví dụ:
  member1 = Member.new  
  member2 = Member.new  

Chúng ta có thể truyền các tham số cho phương thức new và các tham số đó có thể được sử dụng để khởi tạo các biến của class.

Phương thức new tự động gọi phương thức khởi tạo initialize (nếu có) để gán các thuộc tính và thiết lập trạng thái cho object mới.

Phương thức initialize là một loại phương thức đặc biệt, nó sẽ được thực thi khi phương thức mới của lớp được gọi kèm theo các tham số.

Ví dụ:
 class Member  
   @@no_of_members = 0  
   def initialize(id, name, email)  
    @member_id = id  
    @member_name = name  
    @member_email = email  
   end  
  end  

Trong ví dụ này, chúng ta khai báo phương thức initialize với id, name, email dưới dạng biến cục bộ (local variables).Trong phương thức initialize  chúng ta chuyển giá trị của các biến cục bộ sang biến instance (instance variables) @member_id, @member_name, @member_email.

Bây giờ chúng ta có thể tạo object theo cách sau:
 member1 = Member.new("1", "Alice", "alice@example.com")  
 member2 = Member.new("2", "Bob", "bob@example.com")  

Các function trong class

Trong ruby các functions được gọi là method.Mỗi method trong một class bắt đầu bằng từ khóa def theo sau là tên method.Tên method luôn được ưu tiên bằng chữ thường, kết thúc một method bằng từ khóa end.

Dưới đây là ví dụ định nghĩa một ruby method:
 class Library  
  def open_hours  
   puts "The library is open from 9 AM to 5 PM."  
  end  
 end  

Để gọi phương thức trên chúng ta làm như sau:
 library_object = Library.new  
 library_object.open_hours  

Nhận xét

Bài đăng phổ biến từ blog này

Cài đặt SSL cho website sử dụng certbot

Xây dựng một hệ thống comment real-time hoặc chat đơn giản sử dụng Pusher

CÁC BÀI TẬP SQL CƠ BẢN - PART 1

Xây dựng một hệ thống tracking hành vi người dùng (phần 1)

Xây dựng một hệ thống tracking hành vi người dùng (phần 2)

Enterprise architecture trên 1 tờ A4

Web caching (P2)

Bàn về async/await trong vòng lặp javascript

Web caching (P1)

Cài đặt môi trường để code website Rails