Có nhiều phương pháp lập trình như lập trình hướng tác tử (Agent-oriented), hướng thủ tục (Procedural), hướng sự kiện (Event-driven), lập trình cấu trúc (Structured), lập trình hàm (Functional), lập trình logic, lập trình ràng buộc (Constraint), hướng mệnh lệnh (Imperative), hướng đối tượng (Object-oriented),…
Bài này sẽ giới thiệu đến các bạn các đặc điểm của 3 phương pháp lập trình phổ biến: hướng mệnh lệnh, hướng thủ tục và hướng đối tượng.
1. Phương pháp lập trình hướng mệnh lệnh
Người ta xem chương trình là tập hợp các lệnh. Khi đó việc viết chương trình là xác định xem chương trình gồm những lệnh nào, thứ tự thực hiện của các lệnh ra sao. Chương trình sẽ thực thi từng lệnh theo thứ tự câu lệnh 1 đến câu lệnh 2, câu lệnh 3,… để hoàn thành mục tiêu của chương trình.
Các ngôn ngữ hỗ trợ phương pháp lập trình này như C, C++, Java, Kotlin, PHP, Python, Ruby.
2. Phương pháp lập trình hướng thủ tục
Trong phương pháp này, người ta xem chương trình là một hệ thống các thủ tục và hàm. Trong đó, mỗi thủ tục và hàm là một dãy các lệnh được sắp xếp có thứ tự. Khi đó, việc viết chương trình là xác định xem chương trình gồm các thủ tục và hàm nào, mối quan hệ giữa chúng ra sao?
Các ngôn ngữ hỗ trợ phương pháp lập trình này như C, C++, Lisp, PHP, Python.
3. Phương pháp lập trình hướng đối tượng
3.1. Tư duy của phương pháp lập trình hướng đối tượng
Người ta xem chương trình là một hệ thống các đối tượng. Trong đó, mỗi đối tượng bao gồm 2 thành phần:
– Các dữ liệu (data), các trường (fields), thường được gọi là các thuộc tính (attributes).
– Các phương thức (methods) là các khả năng mà đối tượng có thể thực hiện.
Trong chương trình, một đối tượng là một thể hiện cụ thể của một lớp (class). Một lớp là một thiết kế (blueprint) hay mẫu (prototype) cho các đối tượng cùng kiểu, định nghĩa các thuộc tính và các phương thức chung cho tất cả các đối tượng.
Các ngôn ngữ hỗ trợ phương pháp lập trình này như Common Lisp, C++, C#, Java, Kotlin, PHP, Python, Ruby, Scala, JavaScript.
3.2. 4 tính chất của lập trình hướng đối tượng
Tính trừu tượng (abstraction)
Là quá trình phân tích, lựa chọn những thuộc tính chung, quan trọng và cốt lõi của các đối tượng. Tính trừu tượng sẽ loại bỏ những thông tin phức tạp, không cần thiết của đối tượng. Từ đó, phân biệt được các loại đối tượng khác nhau.
Tính đóng gói (encapsulation)
Tính đóng gói là cơ chế ràng buộc dữ liệu và thao tác trên dữ liệu đó thành một thể thống nhất. Thể thống nhất này gọi là đối tượng. Tính đóng gói đảm bảo sự đồng nhất giữa dữ liệu và các thao tác tác động lên dữ liệu đó. Cơ chế đóng gói là một cách tốt để giúp che dấu thông tin trong đối tượng.
Tính kế thừa (inheritace)
Chúng ta có thể xây dựng các lớp mới từ các lớp cũ thông qua sự kế thừa. Một lớp mới gọi là lớp dẫn xuất (derived class). Lớp dẫn xuất có thể thừa hưởng dữ liệu và các phương thức của lớp cơ sở (base class) ban đầu.
Với tính kế thừa, chúng ta không phải mất công xây dựng lại từ đầu các lớp mới, chỉ cần bổ sung để có được trong các lớp dẫn xuất với thuộc tính cần thiết.
Tính đa hình (polymorphism)
Khi một lớp dẫn xuất được tạo ra, nó có thể thay đổi cách thực hiện các phương thức nào đó mà nó thừa hưởng từ lớp cơ sở của nó.
Tính đa hình giúp các đối tượng có tính đa dạng, phong phú và thể hiện đặc trưng của riêng chúng giữa các loại đối tượng khác nhau.