Lập trình hướng đối tượng
Lập trình hướng đối tượng (OOP) là lập trình tập trung chủ yếu vào dữ liệu, trong đó dữ liệu và hành vi được liên kết chặt chẽ không thể tách rời. Dữ liệu và hành vi cùng nhau tạo thành một lớp, trong khi các đối tượng là các thực thể của lớp.
Các thành phần của phương pháp hướng đối tượng bao gồm:
OOP xem xét tính toán như là mô phỏng hành vi. Mục được mô phỏng là đối tượng, được biểu diễn bằng các abstraction tính toán. Giả sử chúng ta muốn viết trò chơi nổi tiếng "Tetris". Để làm điều này, chúng ta phải học cách mô phỏng sự xuất hiện của các hình dạng ngẫu nhiên gồm bốn ô vuông được nối với nhau bằng các cạnh. Chúng ta cũng cần điều chỉnh tốc độ rơi của các hình dạng, xác định các thao tác xoay và dịch chuyển hình dạng. Việc di chuyển các hình dạng trên màn hình bị giới hạn bởi ranh giới của giếng, yêu cầu này cũng phải được mô phỏng. Ngoài ra, các hàng đầy ô vuông phải bị phá hủy và điểm số đạt được phải được tính.
Vì vậy, trò chơi dễ hiểu này yêu cầu tạo ra nhiều mô hình - mô hình hình dạng, mô hình giếng, mô hình di chuyển hình dạng, v.v. Tất cả các mô hình này là các abstraction, được biểu diễn bằng các phép tính trong máy tính. Để mô tả các mô hình này, khái niệm Kiểu Dữ liệu Trừu tượng, ADT (hoặc kiểu dữ liệu phức tạp) được sử dụng. Nói một cách chặt chẽ, mô hình chuyển động của "hình dạng" trong DOM không phải là một kiểu dữ liệu, mà là một tập hợp các thao tác trên kiểu dữ liệu "hình dạng", sử dụng các hạn chế của kiểu dữ liệu "giếng".
Các đối tượng là các biến của lớp. Lập trình hướng đối tượng cho phép dễ dàng tạo và sử dụng ADT. Lập trình hướng đối tượng sử dụng cơ chế kế thừa. Lợi ích của kế thừa nằm ở chỗ nó cho phép thu được các kiểu dẫn xuất từ các kiểu dữ liệu đã được người dùng định nghĩa trước đó.
Ví dụ, để tạo các hình dạng Tetris, việc tạo một lớp cơ sở Shape trước là rất thuận tiện. Các lớp khác đại diện cho tất cả bảy loại hình dạng có thể có thể được dẫn xuất dựa trên lớp này. Hành vi của các hình dạng được định nghĩa trong lớp cơ sở, trong khi việc triển khai hành vi của từng hình dạng riêng lẻ được định nghĩa trong các lớp dẫn xuất.
Trong OOP, các đối tượng chịu trách nhiệm cho hành vi của chúng. Nhà phát triển ADT nên bao gồm mã để mô tả bất kỳ hành vi nào thường được mong đợi từ các đối tượng tương ứng. Việc đối tượng tự chịu trách nhiệm cho hành vi của mình giúp đơn giản hóa đáng kể nhiệm vụ lập trình cho người dùng đối tượng này.
Nếu chúng ta muốn vẽ một hình dạng trên màn hình, chúng ta cần biết tâm của nó sẽ ở đâu và cách vẽ nó. Nếu một hình dạng riêng biết cách tự vẽ chính nó, lập trình viên chỉ cần gửi thông điệp "vẽ" khi sử dụng hình dạng đó.
Ngôn ngữ MQL5 tương tự C++ và cũng có cơ chế đóng gói để triển khai ADT. Một mặt, đóng gói kết hợp các chi tiết triển khai bên trong của một kiểu cụ thể, mặt khác, nó kết hợp các hàm có thể truy cập bên ngoài có thể ảnh hưởng đến các đối tượng của kiểu này. Các chi tiết triển khai có thể không thể truy cập được đối với chương trình sử dụng kiểu này.
Khái niệm OOP có một tập hợp các khái niệm liên quan, bao gồm:
- Mô phỏng các hành động từ thế giới thực
- Kiểu dữ liệu do người dùng định nghĩa
- Ẩn chi tiết triển khai
- Khả năng tái sử dụng mã thông qua kế thừa
- Diễn giải các lời gọi hàm trong quá trình thực thi
Một số khái niệm này khá mơ hồ
, một số là trừu tượng, những cái khác thì chung chung.