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

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

Sự khác biệt giữa lập trình hướng đối tượng [OOP] và lập trình hướng cấu trúc [POP]

04 tháng 04, 2021 - 15560 lượt xem

TechMaster OOP

Lập trình hướng đối tượng và lập trình hướng cấu trúc là hai phương pháp lập trình. Trong bài viếtnày chúng ta sẽ cùng tìm hiểu sự khác biệt giữa OOP và POP.

Mở bài

Bài viết mang ý kiến chủ quan về cách tư duy : Use the right tool for right job, với mục đích sử dụng chúng để thiết kế 1 phần mềm tốt hơn là khi không dùng chúng.

OOP và FP [viết tắt cho lập trình theo hướng đối tượng và lập trình hàm], là 2 công cụ sắc bén cho các lập trình viên thiết kế, mở rộng 1 phần mềm.

Vậy, điều đầu tiên, chúng ta phải hiểu đúng về các công cụ này đã.
Ở đây, tôi dùng khai niệm đúng mang ý nghĩa kinh nghiệm cá nhân nhiều hơn, vì mọi thứ sẽ chỉ đúng trong cái context của nó.

Sau khi đã hiểu đúng về 2 công cụ trên, chúng ta bắt đầu suy nghĩ, làm thế nào để áp dụng đúng nó cho cái bài toán của mình.

Lập trình tuyến tính Linear Programing là gì?

Lập trình tuyến tính là phương pháp lập trình đơn giản, đơn luồng. Các câu lệnh được thực hiện tuần tự từ đầu đến cuối, lệnh này kế tiếp lệnh kia cho đến khi kết thúc chương trình.

Đặc trưng của lập trình tuyến tính:

  • Đơn giản: Chương trình được thực hiện theo lối tuần tự.
  • Đơn luồng: Chỉ có duy nhất một luồng công việc và các công việc được thực hiện tuần tự trong luồng đó.

Tuy là một dạng lập trình hiện giờ ít gặp, hiện tại chỉ thấy khi sử dụng ngôn ngữ ASM [Asembly] thế nhưng chung quy mọi thứ đều quy về phương pháp này, mọi câu lệnh đều được MCU hoặc CPU xử lý một cách tuần tự, hết lệnh này mới đến lệnh khác.

Lập trình hướng cấu trúc [POP] là gì?

Lập trình hướng cấu trúc hay còn gọi là lập trình hướng thủ tục [Procedure Oriented Programming – POP]: là một kỹ thuật lập trình truyền thống, trong đó chương trình được chia thành các hàm [chương trình con]. Các chương trình con lại sử dụng các hàm hoặc chương trình con khác nhỏ hơn để thực thi.

Nói một cách đơn giản, lập trình hướng cấu trúc sẽ chia nhỏ một vẫn đề lớn thành vấn đề nhỏ, một vấn đề nhỏ thành một vấn đề siêu nhỏ. Cứ như vậy đến khi vấn đề được giải quyết một cách đơn giản.

Lấy một ví dụ:

Bạn muốn xây 1 căn nhà, đầu tiên bạn phải chia nhỏ xây căn nhà gồm những công đoạn nào:

  • Xây Nền móng: lại được chia nhỏ thành các phần như: đào móng, tạo khung sắt thép, đổ bê tông, …
  • Xây tường: lại chia thành các thành phần như xây tường gạch, chát, sơn …
  • Xây mái: lại chia thành tạo khung, lát mái …

Các thứ bên trong sẽ được chia nhỏ thêm nữa, để khi mỗi người công nhân thực thi, họ chỉ cần thực thi đúng nhiệm vụ của mình từ đó xây nên một ngôi nhà. Mọi việc vẫn sẽ được thực hiện tuần tự nhưng sẽ được những cú pháp rẽ nhanh như if/else, vòng lặp for, while điều hướng việc thực thi.

Đặc điểm

  • Tập trung vào công việc cần thực hiện [thuật toán]
  • Chương trình lớn được chia thành các chương trình con, mỗi chương trình con có thể gọi tới một hoặc nhiều lần theo thứ tự bất kỳ.
  • Phần lớn các hàm sử dụng dữ liệu chung
  • Dữ liệu trong hệ thống được chuyển động từ hàm này sang hàm khác.
  • Sử dụng cách tiếp cận top-down trong thiết kế chương trình

Ưu điểm:

  • Tư duy giải thuật rõ ràng.
  • Đơn giản, dễ hiểu.
  • Cung cấp khả năng tái sử dụng cùng một mã tại nhiều nơi khác nhau.
  • Tạo điều kiện trong việc theo dõi dòng chương trình.

Nhược điểm:

  • Trong lập trình hướng cấu trúc ta thường quan tâm đến việc phát triển các hàm mà ít quan tâm tới dữ liệu – thứ mà chúng dùng để xử lý công việc.
  • Không hỗ trợ sử dụng lại mã nguồn: mỗi cấu trúc dữ liệu chỉ phù hợp với một số giải thuật, khi thay đổi cấu trúc dữ liệu thì giải thuật phải thay đổi theo.

Các ngôn ngữ hiện nay sử dụng

C, Pascal

Lập trình hướng đối tượng là gì?

  • Lập trình hướng đối tượng [Object Oriented Programming – OOP]: là một kỹ thuật lập trình, trong đó chương trình sẽ được chia ra thành các phần nhỏ được gọi là đối tượng [Object].
  • Đối tượng trong lập trình hướng đối tượng sẽ tương ứng với các thực thể trong bài toán, nó sẽ có các thuộc tính [attribute], các hành động [method].
  • Các đối tượng có thể tương tác với nhau.
  • Các ngôn ngữ lập trình hướng đối tượng: Java, C#, Python, Ruby, Swift, Object-C
  • Các tính chất cơ bản của lập trình hướng đối tượng: tính trừu tượng, tính đóng gói, tính đa hình, tính kế thừa
  • [Xem thêm:Các tính chất hướng đối tượng của Java]
  • Lập trình hướng đối tượng được đánh giá là dễ học, năng suất, đơn giản, dễ bảo trì, dễ mở rộng…
    So sánh lập trình cấu trúc với hướng đối tượng

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

Sao chép

Sự khác biệt giữa lập trình hướng thủ tục [POP] và lập trình hướng đối tượng [OOP]

  • Báo cáo
  • Thêm vào series của tôi

Bài đăng này đã không được cập nhật trong 2 năm

Lập trình hướng thủ tục [POP]Lập trình hướng đối tượng [OOP] đều là phương pháp lập trình, sử dụng ngôn ngữ cấp cao. Một chương trình có thể được viết bằng cả hai ngôn ngữ, nhưng nếu tác vụ rất phức tạp, OOP hoạt động tốt so với POP. Trong POP, 'data security' có nguy cơ khi dữ liệu di chuyển tự do trong chương trình, cũng như, ‘code reusability' không đạt được, khiến cho việc lập trình trở nên dài và khó hiểu. Các chương trình lớn dẫn đến nhiều lỗi hơn và nó làm tăng thời gian gỡ lỗi.

Tất cả những sai sót này dẫn đến một cách tiếp cận mới, cụ thể là lập trình hướng đối tượng. Trong lập trình hướng đối tượng, mối quan tâm chính được đưa ra về 'data security ' nó liên kết dữ liệu chặt chẽ với các chức năng đã được xây dựng từ trước.

OOP cũng giải quyết vấn đề về ‘code reusability', vì nếu một lớp được tạo, nhiều thể hiện [đối tượng] của nó có thể được sử dụng để tái sử dụng các thành viên và các hàm thành viên được xác định bởi một lớp.

Video liên quan

Chủ Đề