Trong Ruby, việc định nghĩa một lớp mới là một trong những khía cạnh cơ bản và quan trọng của lập trình hướng đối tượng. Dưới đây là cách bạn có thể tạo ra một lớp mới sử dụng từ khóa class
.
Khái Niệm Lớp Trong Ruby
Lớp là một bản thiết kế (blueprint) cho các đối tượng. Lớp định nghĩa các thuộc tính và phương thức mà các đối tượng của lớp đó sẽ có. Trong Ruby, một lớp được tạo ra bằng từ khóa class
theo sau là tên của lớp.
Cú Pháp Định Nghĩa Lớp
Cú pháp cơ bản để định nghĩa một lớp trong Ruby rất đơn giản. Dưới đây là ví dụ minh họa:
class Animal
def initialize(name, species)
@name = name
@species = species
end
def introduce
"I am #{@name} and I am a #{@species}."
end
end
Phân Tích Ví Dụ
-
Từ khóa
class
: Bắt đầu định nghĩa lớp bằng từ khóaclass
theo sau là tên lớp (trong ví dụ này làAnimal
). -
Phương thức khởi tạo
initialize
: Đây là phương thức đặc biệt được gọi khi một đối tượng mới của lớp được tạo ra. Nó có nhiệm vụ khởi tạo các biến instance (biến bắt đầu bằng dấu@
) với các giá trị được truyền vào. -
Biến instance: Các biến instance như
@name
và@species
lưu trữ thông tin riêng biệt cho mỗi đối tượng của lớp. -
Phương thức: Các phương thức như
introduce
định nghĩa hành vi của đối tượng. Trong ví dụ trên, phương thứcintroduce
trả về một chuỗi giới thiệu tên và loài của đối tượng.
Tạo Đối Tượng Từ Lớp
Sau khi định nghĩa lớp, bạn có thể tạo đối tượng (instance) từ lớp đó và sử dụng các phương thức của nó:
dog = Animal.new("Rex", "Dog")
puts dog.introduce
# Output: I am Rex and I am a Dog.
Kế Thừa Trong Ruby
Một trong những tính năng mạnh mẽ của Ruby là khả năng kế thừa. Bạn có thể tạo ra một lớp mới kế thừa từ một lớp đã tồn tại bằng cách sử dụng ký hiệu <
:
class Dog < Animal
def bark
"Woof!"
end
end
dog = Dog.new("Rex", "Dog")
puts dog.introduce
puts dog.bark
# Output: I am Rex and I am a Dog.
# Woof!
Kết Luận
Việc định nghĩa một lớp mới trong Ruby là cơ bản nhưng cực kỳ quan trọng đối với lập trình hướng đối tượng. Ruby cung cấp cú pháp đơn giản và dễ hiểu để bạn có thể nhanh chóng tạo và vận hành các lớp với các thuộc tính và phương thức riêng biệt. Thêm vào đó, khả năng kế thừa giúp bạn tận dụng mã đã viết và mở rộng chức năng một cách dễ dàng và hiệu quả.
Comments