Lập trình hướng đối tượng (Object-Oriented Programming - OOP) là một cách viết mã máy tính tập trung vào việc tạo ra các "đối tượng" (Object). Những đối tượng này giống như phiên bản kỹ thuật số của những thứ mà chúng ta thấy trong thế giới thực. Cũng như các đối tượng thực tế có các đặc điểm và có thể làm những việc nhất định, các đối tượng OOP có dữ liệu và chức năng được tích hợp sẵn.
Hãy cùng nhau làm rõ các khái niệm OOP chính:
Trừu tượng cho phép lập trình viên tạo ra các mô hình đơn giản hóa của các đối tượng hoặc quy trình trong thế giới thực, giúp mã dễ hiểu và duy trì hơn. Nó thường được coi là một trong những nguyên tắc cơ bản của OOP bên cạnh đóng gói, kế thừa và đa hình.
OOP giúp tổ chức mã, làm cho nó dễ tái sử dụng và có thể làm cho các chương trình phức tạp trở nên đơn giản hơn để hiểu và duy trì.
# Trừu tượng và Đóng gói (Abstraction và Encapsulation)
class Vehicle
def initialize(brand)
@brand = brand # Biến thể hiện (instance variable) được đóng gói
end
def start_engine
puts "Động cơ đang khởi động..."
end
# Phương thức trừu tượng (Abstract method)
def move
raise NotImplementedError, "Bạn phải triển khai phương thức move"
end
end
# Kế thừa (Inheritance)
class Car < Vehicle
def initialize(brand, model)
super(brand)
@model = model
end
# Đóng gói (Encapsulation): Phương thức getter
def info
"#{@brand} #{@model}"
end
# Đa hình (Polymorphism): Triển khai phương thức trừu tượng (abstract method)
def move
puts "Xe hơi đang chạy trên đường"
end
end
# Một lớp khác cho ví dụ về Đa hình (Polymorphism)
class Boat < Vehicle
def move
puts "Thuyền đang đi trên nước"
end
end
# Tạo đối tượng (object)
my_car = Car.new("Toyota", "Corolla")
my_boat = Boat.new("Yamaha")
# Sử dụng đối tượng
puts my_car.info # Output: Toyota Corolla
my_car.start_engine # Output: Động cơ đang khởi động...
my_car.move # Output: Xe hơi đang chạy trên đường
my_boat.move # Output: Thuyền đang đi trên nước
# Đa hình (Polymorphism)
vehicles = [my_car, my_boat]
vehicles.each { |vehicle| vehicle.move }
Mã này minh họa:
my_car
và my_boat
là các đối tượng.Vehicle
, Car
, và Boat
là các lớp.Car
và Boat
kế thừa từ Vehicle
.@brand
là riêng tư, được truy cập thông qua các phương thức.Car
và Boat
đều triển khai move
theo cách khác nhau.Vehicle
cung cấp một phương thức trừu tượng move
.Những khái niệm này mô tả các cách mà các đối tượng có thể liên quan đến nhau trong OOP, giúp mô hình hóa các hệ thống và mối quan hệ phức tạp một cách chính xác hơn.