Lớp và giao diện
Lớp là khối xây dựng chính trong việc phát triển chương trình dựa trên cách tiếp cận lập trình hướng đối tượng (OOP). Theo nghĩa tổng quát, thuật ngữ lớp đề cập đến một tập hợp của một thứ gì đó (sự vật, con người, công thức, v.v.) có một số đặc điểm chung. Trong bối cảnh của OOP, logic này được duy trì: một lớp tạo ra các đối tượng có cùng tập hợp các thuộc tính và hành vi.
Trong các chương trước của cuốn sách này, chúng ta đã làm quen với các kiểu tích hợp của MQL5 như double
, int
hoặc string
. Trình biên dịch biết cách lưu trữ giá trị của các kiểu này và những phép toán nào có thể được thực hiện trên chúng. Tuy nhiên, các kiểu này có thể không thuận tiện lắm khi sử dụng để mô tả bất kỳ lĩnh vực ứng dụng nào. Ví dụ, một nhà giao dịch phải làm việc với các thực thể như chiến lược giao dịch, bộ lọc tín hiệu, giỏ tiền tệ và danh mục các vị thế đang mở. Mỗi thực thể trong số đó bao gồm một tập hợp các thuộc tính liên quan, chịu sự xử lý và các quy tắc nhất quán cụ thể.
Một chương trình để tự động hóa các hành động với các đối tượng này có thể chỉ bao gồm các kiểu tích hợp và các hàm đơn giản, nhưng khi đó bạn sẽ phải nghĩ ra những cách phức tạp để lưu trữ và liên kết các thuộc tính. Đây là lúc công nghệ OOP đến để giải cứu, cung cấp các cơ chế sẵn có, thống nhất và trực quan cho việc này.
OOP đề xuất viết tất cả các hướng dẫn để lưu trữ thuộc tính, điền chúng một cách chính xác và thực hiện các phép toán được phép trên các đối tượng của một kiểu do người dùng định nghĩa trong một bộ chứa duy nhất với mã nguồn. Nó kết hợp các biến và hàm theo một cách nhất định. Các bộ chứa được chia thành lớp, cấu trúc và liên hợp nếu liệt kê theo thứ tự giảm dần về khả năng và mức độ liên quan.
Chúng ta đã gặp qua cấu trúc và liên hợp trong chương trước. Kiến thức này cũng sẽ hữu ích cho lớp, nhưng lớp cung cấp nhiều công cụ hơn từ kho vũ khí của OOP.
Tương tự như cấu trúc, một lớp là mô tả của một kiểu do người dùng định nghĩa với phương thức lưu trữ nội bộ tùy ý và các quy tắc để làm việc với nó. Dựa trên đó, chương trình có thể tạo các phiên bản của lớp này, các đối tượng nên được coi là biến tổng hợp.
Tất cả các kiểu do người dùng định nghĩa đều chia sẻ một số khái niệm cơ bản mà bạn có thể gọi là lý thuyết OOP, nhưng chúng đặc biệt quan trọng đối với lớp. Chúng bao gồm:
abstraction
(trừu tượng hóa)encapsulation
(đóng gói)inheritance
(kế thừa)polymorphism
(đa hình)composition (design)
(tổng hợp (thiết kế))
Mặc dù có những cái tên nghe phức tạp, chúng chỉ ra các chuẩn mực khá đơn giản và quen thuộc của thế giới thực, được chuyển sang thế giới lập trình. Chúng ta sẽ bắt đầu hành trình khám phá OOP bằng cách xem xét các khái niệm này. Còn về cú pháp để mô tả lớp và cách tạo đối tượng — chúng ta sẽ thảo luận sau.