Lập trình hướng đối tượng trong VBA

Lập trình hướng đối tượng là môn tương đối khó vì nó mang tính trừu tượng, bởi vậy lập trình viên cần ứng dùng mềm dễu trong kỹ thuật này trong khi làm phần mềm Access.

  1. Lập trình hướng đối tượng là gì
  2. Một số khái niệm chính trong OOP VBA
  3. Cấu trúc cơ bản của OOP trong VBA
  4. Chia sẽ kinh nghiệm lập trình hướng đối tượng trong VBA
  5. Video về lập trình hướng đối tượng trong VBA

1. Lập trình hướng đối tượng là gì

Là 1 kỹ thuật phân tích code dựa theo các thuộc tính và chức năng của đối tượng cần xử lý.

Lập trình hướng đối tượng (OOP - Object-Oriented Programming) trong VBA có thể được thực hiện bằng cách sử dụng các khái niệm cơ bản như Class (lớp), Property (thuộc tính), Method (phương thức), và Event (sự kiện).

Lập trình hướng đối tượng trong VBA

Vậy không sử dụng hướng đối tượng thì phần mềm có chạy được hay không ? câu trả lời là vẫn chạy bình thường, nhưng nếu lập trình hệ thống lớn thì bạn vận dùng lập trình hướng đối tượng giúp bạn tư duy vấn đề  dễ dàng và nhanh hơn gấp nhiều lần.

2. Một số khái niệm chính trong OOP VBA

    Class (Lớp): Định nghĩa một loại đối tượng với các thuộc tính và phương thức.
    Property (Thuộc tính): Là các biến chứa thông tin của đối tượng.
    Method (Phương thức): Là các hàm hoặc quy trình thực hiện hành động cho đối tượng.
    Event (Sự kiện): Là các hành động mà đối tượng có thể phát ra và các chương trình khác có thể xử lý.

3. Cấu trúc cơ bản của OOP trong VBA

    Class Module: Tạo một lớp đối tượng.
    Standard Module: Sử dụng và tạo đối tượng từ lớp.

Ví dụ tạo lớp đối tượng đơn giản

Bước 1: Tạo một Class Module

    Trong VBA, mở trình soạn thảo và tạo một Class Module.
    Đặt tên lớp là Person.
    Trong Class Module, khai báo các thuộc tính và phương thức.

 

' Tạo lớp Person trong Class Module
Public FirstName As String
Public LastName As String

' Phương thức khởi tạo
Public Sub Initialize(fName As String, lName As String)
    FirstName = fName
    LastName = lName
End Sub

' Phương thức để lấy tên đầy đủ
Public Function GetFullName() As String
    GetFullName = FirstName & " " & LastName
End Function


Bước 2: Sử dụng lớp trong Standard Module

    Quay lại Standard Module và viết mã để tạo và sử dụng đối tượng Person.
 
' Khai báo một biến kiểu Person
    Dim p As Person   
    ' Tạo đối tượng mới từ lớp Person
    Set p = New Person
    
    ' Gọi phương thức Initialize để khởi tạo giá trị
    p.Initialize "John", "Doe"
    
    ' Gọi phương thức GetFullName để lấy tên đầy đủ
    MsgBox p.GetFullName ' Sẽ hiển thị "John Doe"
 

Giải thích:

    Public: Các biến và phương thức trong lớp được khai báo là Public, nghĩa là chúng có thể được truy cập từ bên ngoài lớp.
    Initialize là một phương thức khởi tạo dùng để gán giá trị cho các thuộc tính FirstName và LastName.
    GetFullName là một phương thức trả về tên đầy đủ của người.

Ví dụ sử dụng thuộc tính với Getter và Setter

Trong VBA, bạn có thể tạo các thuộc tính với phương thức Get Set thay vì khai báo trực tiếp như trong ví dụ trước. Điều này giúp kiểm soát việc truy cập và thay đổi giá trị của thuộc tính, các hệ thống bảo mật cao thường ứng dụng kỹ thuật này.

Bước 1: Tạo lớp với thuộc tính Get Set

 

' Tạo lớp Person với thuộc tính Get và Set trong Class Module
Private pFirstName As String
Private pLastName As String

' Phương thức khởi tạo
Public Sub Initialize(fName As String, lName As String)
    pFirstName = fName
    pLastName = lName
End Sub

' Getter cho FirstName
Public Property Get FirstName() As String
    FirstName = pFirstName
End Property

' Setter cho FirstName
Public Property Let FirstName(fName As String)
    pFirstName = fName
End Property

' Getter cho LastName
Public Property Get LastName() As String
    LastName = pLastName
End Property

' Setter cho LastName
Public Property Let LastName(lName As String)
    pLastName = lName
End Property

' Phương thức để lấy tên đầy đủ
Public Function GetFullName() As String
    GetFullName = pFirstName & " " & pLastName
End Function


Bước 2: Sử dụng lớp với thuộc tính Getter và Setter trong Standard Module

 
Sub TestPersonWithProperties()
    ' Khai báo một biến kiểu Person
    Dim p As Person
    
    ' Tạo đối tượng mới từ lớp Person
    Set p = New Person
    
    ' Gọi phương thức Initialize để khởi tạo giá trị
    p.Initialize "Jane", "Doe"
    
    ' Sử dụng Setter để thay đổi tên
    p.FirstName = "Mary"
    p.LastName = "Smith"
    
    ' Hiển thị tên đầy đủ sau khi thay đổi
    MsgBox p.GetFullName ' Sẽ hiển thị "Mary Smith"
End Sub


Giải thích:

    Property Get: Dùng để lấy giá trị của một thuộc tính.
    Property Let: Dùng để thiết lập giá trị cho một thuộc tính (thay vì gán trực tiếp).
    FirstName và LastName là các thuộc tính có thể đọc và thay đổi thông qua phương thức Getter và Setter.

3. Chia sẽ kinh nghiệm lập trình hướng đối tượng trong VBA

    Class trong VBA giúp bạn tạo ra các đối tượng với các thuộc tính và phương thức riêng biệt.
    Property Get và Property Let cho phép bạn kiểm soát cách truy cập và thay đổi giá trị của thuộc tính.
    Lập trình hướng đối tượng trong VBA có thể rất mạnh mẽ, giúp bạn tổ chức mã dễ dàng và tái sử dụng lại.

    Nếu bạn làm 1 phần mềm bán hàng bằng Access, quản lý nhân sự bằng Access bạn nên sử dụng lập trình hướng đối tượng nó giúp bạn tư duy giải quyết vấn đề rất nhanh.

4. Video về lập trình hướng đối tượng trong VBA


   

Tìm kiếm:

Bài viết liên quan:

Lập trình hướng đối tượng là môn tương đối khó vì nó mang tính trừu tượng, bởi vậy lập trình viên cần ứng dùng mềm dễu trong kỹ thuật này trong khi làm phần mềm Access.