So sánh lập trình hướng đối tượng và lập trình hướng cấu trúc

Mặc dù đều là kỹ thuật lập trình sử dụng ngôn ngữ bậc cao, nhưng nếu so sánh lập trình hướng đối tượng và lập trình hướng cấu trúc thì ta có thể dễ dàng phát hiện những điểm không tương đồng giữa 2 phương pháp này. Vậy chúng khác nhau như thế nào? Cùng tìm hiểu qua bài viết dưới đây của Got It

So sánh lập trình hướng đối tượng và lập trình hướng cấu trúc

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.

Lập trình hướng đối tượng

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ả. 

Lập trình hướng cấu trúc

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:

Nếu bạn quan tâm, hãy xem các vị trí đang tuyển dụng của Got It tại: bit.ly/gotit-hanoi và đọc thêm về quy trình tuyển dụng tại đây.

https://d1iv5z3ivlqga1.cloudfront.net/wp-content/uploads/2021/04/29235048/1_QAG9RXQyyMAY7i9OYo84FA.png
Got It Vietnam
February 06, 2021
Share this post to:
Tags:
0 Comments
Inline Feedbacks
View all comments
Các bài viết liên quan
4 khóa học lập trình hướng đối tượng miễn phí cho người mới

4 khóa học lập trình hướng đối tượng miễn phí cho người mới

Nếu bạn muốn theo nghề IT thì sớm muộn cũng phải học lập trình hướng đối tượng. Đây là một kiến thức cơ bản, bắt buộc phải biết. Bài viết sẽ chia sẻ với bạn 4 khóa học miễn phí, phù hợp với người mới bắt đầu. Tìm hiểu thêm: Bài tập ôn luyện Lập […]
Phương pháp lập trình hướng đối tượng và các ưu, nhược điểm

Phương pháp lập trình hướng đối tượng và các ưu, nhược điểm

Từ lâu phương pháp lập trình hướng đối tượng đã không còn xa lạ với các lập trình viên. Bài viết sẽ chia sẻ với các bạn một số ưu điểm và nhược điểm của phương pháp này. Tìm hiểu thêm: Bài tập ôn luyện Lập trình hướng đối tượng từ cơ bản đến nâng […]
4 khái niệm bạn phải biết khi lập trình hướng đối tượng

4 khái niệm bạn phải biết khi lập trình hướng đối tượng

Lập trình hướng đối tượng (Object-oriented programming) là một phương pháp quen thuộc đối với các chuyên gia phát triển phần mềm. Sau đây là 4 khái niệm bạn bắt buộc phải biết để hiểu về lập trình hướng đối tượng. Mục lục1. Class (Lớp)2. Objects (Đối tượng)3. Attributes (Thuộc tính)4. Methods (Phương thức) 1. […]
Bài tập lập trình hướng đối tượng cơ bản, nâng cao

Bài tập lập trình hướng đối tượng cơ bản, nâng cao

Để nâng cao kỹ năng Lập trình hướng đối tượng – Object-Oriented Programming (OOP), bạn cần liên tục rèn luyện, thực hành. Trong bài viết hôm nay, Got It sẽ chia sẻ tới bạn các bài tập lập trình hướng đối tượng. Các bài tập này sẽ giúp bạn ôn lập trình hướng đối tượng […]
Inversion of control là gì? Tìm hiểu Dependency Inversion

Inversion of control là gì? Tìm hiểu Dependency Inversion

Các khái niệm như Dependency Injection, Dependency Inversion hay Inversion of Control là gì đều là những câu hỏi khó kể cả với những kỹ sư kỳ cựu. Nhiều bạn dù đã đi làm vài năm nhưng vẫn chưa thực sự hiểu rõ về các khái niệm này mà chỉ biết sử dụng chúng trong […]
Bộ 7 câu hỏi phỏng vấn lập trình hướng đối tượng

Bộ 7 câu hỏi phỏng vấn lập trình hướng đối tượng

Với nền kinh tế hiện đại ngày nay, lập trình viên đang là một nghề được nhiều doanh nghiệp săn đón. Bộ câu hỏi phỏng vấn lập trình hướng đối tượng được chia sẻ sau đây sẽ hỗ trợ bạn nắm bắt cơ hội nghề nghiệp. Cùng Got It tìm hiểu nhé. Mục lục1. Lập […]