Class Method và Instance Method là những khái niệm quan trọng trong lập trình hướng đối tượng. Trong bài này chúng ta sẽ cùng tìm hiểu về Class Method, Instance Method trong ngôn ngữ lập trình Ruby.
Class method là gì?
Class method là method được định nghĩa trên class và có thể được gọi trực tiếp trên class, chứ không phải trên các đối tượng (instance) của class. Chúng thường được sử dụng cho các hoạt động liên quan đến class như một toàn thể.
Cách khai báo Class method
Cách khai báo class method trong Ruby rất linh hoạt. Dưới đây là 3 cách thường dùng để khai báo một class method
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Cách 1
class Car
def self.total
10
end
end
puts Car.total # => 10
# Cách 2
class Car
class << self
def total
10
end
end
end
puts Car.total # => 10
# Cách 3
class Car; end
def Car.total
10
end
puts Car.total # => 10
Instance method là gì?
Instance method là method được định nghĩa trong một class và có thể được gọi trên các đối tượng (instance) của lớp đó. Chúng giúp truy cập và thay đổi dữ liệu của từng đối tượng cụ thể.
Cách khai báo Instance method
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Cách 1
class Car
def name
'Toyota'
end
end
puts Car.new.name # "Toyota"
# Cách 2
class Car
attr_accessor :name
end
car = Car.new
car.name = 'Toyota'
puts car.name # "Toyota"
# Cách 3
class Car; end
car = Car.new
def car.name
'Toyota'
end
puts car.name # "Toyota"
- Cách 1: Đây là cách khai báo instance method phổ biến nhất, áp dụng cho tất cả các instance của class đó.
- Cách 2:
attr_accessor
tạo cácgetter
vàsetter
method cho thuộc tính name, áp dụng cho tất cả các instance của class. - Cách 3: Đây là cách khai báo method chỉ áp dụng cho một đối tượng cụ thể, không ảnh hưởng đến các instance khác của class.
Phân biệt Class Method và Instance Method
Class Method:
- Được gọi trên class.
- Sử dụng class method khi cần thực hiện các thao tác liên quan đến class như một toàn thể, như tạo ra các đối tượng mẫu, thực hiện thống kê dữ liệu hoặc thực hiện các tìm kiếm.
- Ví dụ:
User.create_sample_users
Instance Method:
- Được gọi trên một đối tượng cụ thể.
- Sử dụng instance method khi cần truy cập hoặc thay đổi dữ liệu của một đối tượng cụ thể.
- Ví dụ:
user.profile
Sự khác biệt giữa Class Method và Instance Method là một khía cạnh quan trọng trong lập trình Ruby. Hiểu và áp dụng đúng cách sẽ giúp bạn tạo ra những chương trình mạnh mẽ, dễ bảo trì và hiệu quả.