Cấu trúc và liên kết
Cấu trúc là loại đối tượng dễ hiểu nhất, vì vậy chúng ta sẽ bắt đầu giới thiệu về OOP với nó. Cấu trúc có nhiều điểm chung với lớp, vốn là các khối xây dựng chính trong OOP, nên việc hiểu biết về cấu trúc sẽ hữu ích trong tương lai khi chuyển sang lớp. Đồng thời, cấu trúc có một số điểm khác biệt, một số có thể được coi là hạn chế, còn một số được coi là lợi thế. Đặc biệt, cấu trúc không thể có hàm ảo, nhưng chúng có thể được sử dụng để tích hợp với các DLL bên thứ ba.
Việc lựa chọn giữa cấu trúc và lớp trong việc triển khai thuật toán thường dựa trên yêu cầu về quyền truy cập vào các phần tử của đối tượng và sự hiện diện của logic nghiệp vụ nội bộ. Nếu cần một bộ chứa đơn giản với dữ liệu có cấu trúc và không cần kiểm tra tính đúng đắn của trạng thái của nó (trong lập trình, điều này được gọi là "bất biến" - invariant), thì cấu trúc sẽ hoàn toàn phù hợp. Nếu bạn muốn hạn chế truy cập và hỗ trợ việc ghi và đọc theo một số quy tắc (được chính thức hóa dưới dạng các hàm được gán cho đối tượng, mà chúng ta sẽ thảo luận sau), thì tốt hơn nên sử dụng lớp.
MQL5 có các loại cấu trúc tích hợp sẵn mô tả các thực thể được yêu cầu trong giao dịch, đặc biệt là tỷ giá (MqlRates
), tick (MqlTick
), ngày và giờ (MqlDateTime
), yêu cầu giao dịch (MqlTradeRequest
), kết quả của yêu cầu (MqlTradeResult
) và nhiều loại khác. Chúng ta sẽ nói về chúng trong Phần 6 của cuốn sách này.