Ruby là ngôn ngữ lập trình hướng đối tượng (Object Oriented Programming viết tắt là OOP), và hầu hết mọi thứ trong Ruby để là object. Trong phần này chúng ta sẽ tìm hiểu về OOP trong Ruby.
Class và Object
Hai khái niệm là trung tâm trong OOP là Class và Object. Bạn có thể hình dùng Class giống như một bản vẽ thiết kế để xây dựng nhà còn Object là sản phẩm tạo ra từ bản vẽ này. Như vậy từ một bản vẽ bạn có thể xây dựng được bao nhiêu ngôi nhà tùy ý muốn.
Mặc dù 2 khái niệm này có liên quan chặt chẽ với nhau, tuy nhiên chúng không phải là một. Vì vậy bạn cần phải lưu ý sự khác nhau này.
Tạo Class
Bây giờ hãy tạo một class có tên là Person, cấu trúc để tạo class trong Ruby khá đơn giản:
class Person
end
Tạo Object
Để tạo object từ class Person trên chúng ta dùng cú pháp như sau:
person = Person.new
Class Variable và Class Method
Trong mỗi class bạn có thể định nghĩa biến hoặc hàm cho class này. Biến thuộc về class được gọi là class variable, hàm thuộc về class được gọi là class method.
Class Variable
Để định nghĩa biến thuộc class, chúng ta sử dụng 2 ký tự @ trước tên biến:
class Rectangle @@sides = 4 end
Để xem tất cả các biến class của một class, bạn có thể sử dụng class_variables trên class đó (bạn sẽ tìm hiể về method ở phần sau, bây giờ bạn tạm hiểu method là một hàm của class hoặc object):
class Rectangle
@@sides = 4
end
puts Rectangle.class_variables
Một số bạn mới học Ruby thường hay nhầm lẫn việc truy cập (access) biến trong class (hoặc object) có thể được thực hiện trực tiếp như các ngôn ngữ khác, ví dụ:
class Rectangle
@@sides = 4
end
puts Rectangle.sides
Tuy nhiên, khi làm như trên thì Ruby sẽ hiểu sides ở đây như một method và như vậy nó sẽ báo lỗi do trong class Rectangle hiện tại chưa có method nào với tên là sides.
Class Method
Method hoạt động giống như một hàm trong class tuy nhiên hàm này chỉ tồn tại bên trong class. Bây giờ chúng ta thử xem một ví dụ về một method như sau:
class Rectangle
@@sides = 4
def self.say
puts "Hello, I'm a class method"
ends
end
puts Rectangle.say
Lưy ý: Bạn đừng quên cho thêm từ khóa self trong khi đặt tên các class method.
Bây giờ, chúng ta cùng tham khảo thêm một ví dụ khác. Trong ví dụ này chúng ta định nghĩa một class method tên là sides và nó trả về giá trị của class variable @@sides:
class Rectangle
@@sides = 4
def self.sides
@@sides
ends
end
puts Rectangle.sides
Lưu ý: Class method chỉ có thể tham chiếu tới các class variable mà không thể tham chiếu tới instance variable.
Object Variable và Object Method
Tương tự class variable và class method, object variable và object method là 2 khái niệm được dùng gắn với object.
Object variable
Nguồn: CodeHub.vn
Không có nhận xét nào:
Đăng nhận xét