1. Đặc Điểm của Lập Trình Hướng Đối Tượng và Lập Trình Hướng Cấu Trúc
1.1. Lập Trình Hướng Đối Tượng
Lập trình hướng đối tượng (OOP) là kỹ thuật lập trình dựa trên "công nghệ đối tượng", tạo ra các đối tượng trong code trừu tượng hóa các đối tượng thực tế trong thế giới thực. Đối tượng trong OOP có thuộc tính và phương thức. Chúng có thể tương tác qua lại lẫn nhau.
OOP có 4 tính chất:
- Encapsulation - tính đóng gói: các phương thức và dữ liệu có mối quan hệ với nhau được lưu vào một lớp để thuận tiện cho việc quản lý, sử dụng. Chỉ có phương thức nội tại của chính đối tượng mới có thể thay đổi trạng thái nội tại của nó.
- Abstraction - tính trừu tượng: chỉ tập trung vào những thuộc tính và phương thức cần thiết cho việc giải quyết vấn đề trong lập trình và bỏ qua các thông tin không quan trọng.
- Inheritance - tính kế thừa: các đối tượng "con" có thể thừa hưởng các đặc tính có sẵn từ đối tượng "cha" mà không cần định nghĩa lại (tùy theo ngôn ngữ lập trình).
- Polymorphism - tính đa hình: các đối tượng không cùng một lớp, khi tiếp nhận cùng một thông điệp thì sẽ phản hồi theo những cách khác nhau.
1.2. Lập Trình Hướng Cấu Trúc
Lập trình hướng cấu trúc (POP) là kỹ thuật lập trình chia nhỏ một chương trình lớn thành các chương trình con (còn được gọi là các hàm). Mỗi hàm sẽ đảm nhiệm một chức năng khác nhau trong hệ thống. Quá trình phân nhỏ sẽ được thực hiện cho đến khi ra được các hàm đơn giản nhất. Mục đích của việc này là để đơn giản hóa cấu trúc của chương trình, thuận tiện cho việc kiểm tra, sửa đổi và thực thi một cách hiệu quả.
POP có đặc điểm:
- Chỉ tập trung vào việc phát triển các hàm, ít chú trọng đến dữ liệu.
- Dữ liệu của hệ thống di chuyển từ hàm này qua hàm khác, được dùng chung giữa các hàm.
- Tuân theo hình thức tiếp cận top-down khi thiết kế chương trình.
- Dùng con trỏ hoặc biến toàn cục để liên kết các hàm với nhau.
2. So Sánh Lập Trình Hướng Đối Tượng và Lập Trình Hướng Cấu Trúc
Có rất nhiều điểm khác biệt giữa lập trình hướng đối tượng và lập trình hướng cấu trúc mà bạn nên quan tâm như:
Trọng tâm
OOP chú ý vào dữ liệu hơn là thuật toán. POP chú ý đến việc xây dựng các hàm và thuật toán hơn là dữ liệu.
Sự phân chia
OOP chia nhỏ chương trình thành các đối tượng. POP chia nhỏ chương trình thành các hàm con.
Chế độ truy cập
Các từ khóa phạm vi truy cập trong OOP được chia thành Public, Private, Protected và Default. POP không có thành phần này.
Hướng tiếp cận khi thiết kế chương trình
OOP tiếp cận từ dưới lên. POP tiếp cận từ trên xuống.
Quá trình thực thi
OOP cho phép các chức năng chạy cùng một lúc. POP cho phép các hàm và chức năng chạy lần lượt.
Truy cập dữ liệu
OOP hạn chế truy cập dữ liệu giữa các đối tượng. POP cho phép dữ liệu tự do di chuyển trong hệ thống và các hàm có thể chia sẻ dữ liệu cho nhau.
Bảo mật
OOP ẩn dữ liệu trong chế độ Public, Protected và Private nên có bảo mật cao. POP không có chế độ ẩn dữ liệu, độ an toàn thấp.
Thêm mới dữ liệu
Hoạt động này có thể được thực hiện dễ dàng với các đối tượng trong OOP, còn POP thì khó hơn.
Nạp chồng/Đa hình
OOP hỗ trợ nạp chồng các hàm, hàm tạo và toán tử còn POP thì không.
Ứng dụng
OOP có thể áp dụng trong xây dựng các chương trình có độ phức tạp cao. POP chỉ nên được dùng với chương trình đơn giản.
Sự ra đời của phương pháp OOP đã khắc phục được nhược điểm của kỹ thuật POP truyền thống, giúp ích cho lập trình viên trong quá trình xây dựng các chương trình. Nếu bạn muốn tìm hiểu thông tin về so sánh lập trình hướng đối tượng và lập trình hướng cấu trúc thì đây chính là bài viết dành cho bạn.
Tìm hiểu thêm:
- 5 ngôn ngữ lập trình hướng đối tượng phổ biến nhất
- 7 câu hỏi thường gặp trong phỏng vấn lập trình hướng đối tượng.