Sự khác nhau giữa hướng đối tượng và hướng cấu trúc

  • 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
  • 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, trong đó chương trình được chia thành các hàm (chương trình con)
  • Mỗi chương trình còn có thể được chia ra nhiều chương trình con khác để đơn giản hóa công việc của chúng. (Quá trình làm mịn)

-- Ví dụ chương trình nhập và hiển thị thông tin người dùng sẽ chia thành hai chương trình con là chương trình nhập và xuất, nếu việc nhập thông tin phức tạp thì chương trình nhập thông tin có thể chia ra nhiều chương trình con khác nhau...

  • 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. (Điều này khiến cho dữ liệu khó kiểm soát)
  • Để liên kết giữa các hàm với nhau ta thường dùng biến toàn cục hoặc con trỏ.
  • Các tính chất cơ bản của lập trình hướng cấu trúc là:

-- Tập chung 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 hàm nhỏ hơn

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

-- Hàm biến đổi dữ liệu từ dạng này sang dạng khác

-- Sử dụng cách tiếp cận top-down trong thiết kế chương trình

  • Các ngôn ngữ lập trình hướng cấu trúc: Pascal, C...

Sự khác nhau giữa lập trình hướng đối tượng với lập trình cấu trúc (OOP vs POP)¶

  • Định nghĩa: OOP tập trung vào dữ liệu hơn là thuật toán còn POP tập trung vào việc xây dựng các hàm, thuật toán hơn là dữ liệu.
  • Chương trình: OOP chia chương trình thành các đối tượng còn POP chia chương trình thành các hàm.
  • Khả năng truy cập: OOP chia ra các modifier: Private, Public, Protected, Default còn POP thì không.
  • Thực thi: với OOP các chức năng có thể chạy đồng thời trong khi POP thì các hàm, chức năng chạy lần lượt.
  • **Điều khiển dữ liệu: **với OOP thì dữ liệu và hàm của một đối tượng giống như một thành phần riêng biệt và bị hạn chế truy cập bởi các đối tượng khác. Với POP, dữ liệu có thể truy cập một cách tự do giữa các hàm.
  • Bảo mật: OOP bảo mật hơn POP nhờ việc giới hạn truy cập dữ liệu.
  • Chỉnh sửa: với OOP dữ liệu có thể thêm mới một cách dễ dàng từ các đối tượng trong khi với POP thì rất khó.
So sánh lập trình cấu trúc với hướng đối tượng¶

References:

http://www.differencebetween.net/technology/difference-between-oop-and-pop/

https://en.wikipedia.org/wiki/Top-down_and_bottom-up_design

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ết này chúng ta sẽ cùng tìm hiểu sự khác biệt giữa OOP và POP.

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

Sự khác nhau giữa hướng đối tượng và hướng cấu trúc

Lập trình hướng đối tượng (Object Oriented Programming - OOP) là phương pháp lập trình lấy đối tượng làm nền tảng để xây dựng chương trình. Đối tượng là sự gắn kết giữa dữ liệu của đối tượng và các phương thức thao tác trên dữ liệu đó. Để thiết kế một chương trình bằng phương pháp lập trình hướng đối tượng, ta sử dụng các lớp và các đối tượng.

Trong đó đối tượng là thực thể mang tính vật lý, nó có trạng thái và hành vi. Còn lớp là một tập hợp các đối tượng có cùng trạng thái và hành vi hay là một nhóm các đối tượng có các thuộc tính chung. Nó mang tính logic.

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

Sự khác nhau giữa hướng đối tượng và hướng cấu trúc

Lập trình hướng cấu trúc (Procedure Oriented Programming - POP) hay còn được gọi là lập trình hướng thủ tục là kỹ thuật lập trình truyền thống, trong đó các chương trình được chia thành các hàm (chương trình con) để giải quyết công việc của chúng.

So sánh OOP và POP

Để so sánh OOP và POP  ta sẽ phân tích hai phương pháp này theo hướng tiếp cận, phương pháp thực hiện, phạm vi truy cập và khả năng bảo mật,... của cả hai phương pháp.

Sự khác nhau giữa hướng đối tượng và hướng cấu trúc

Về hướng tiếp cận

OOP sử dụng hướng tiếp cận down - top (từ dưới lên) để thiết kế chương trình.

Còn POP lại sử dụng hướng tiếp cận top - down (từ trên xuống).

Về phương pháp thực hiện

Các chương trình sử dụng phương pháp OOP được định nghĩa bởi các lớp, các lớp chứa các thuộc tính và phương thức. Lớp tạo đối tượng, các đối tượng này sẽ có các thuộc tính và phương thức được định nghĩa trong lớp và quản lý chúng.

Đối với POP, chương trình sẽ được chia ra nhiều hàm để giải quyết.

Về khả năng truy cập, bảo mật

OOP có các phạm vi truy cập khác nhau: private, public, protected, default, mỗi phạm vi truy cập sẽ có khả năng truy cập riêng, giúp đóng gói và bảo mật dữ liệu tốt hơn. Dữ liệu và phương thức của một đối tượng giống như một thành phần riêng biệt và bị hạn chế truy cập bởi các đối tượng khác.

Trong khi đó POP thì không  và dữ liệu có thể truy cập tự do giữa các hàm.

Về trọng tâm

Trọng tâm chính của OOP là bảo mật dữ liệu vì chỉ các đối tượng của một lớp mới được phép truy cập các thuộc tính hoặc chức năng của lớp đó

Còn trọng tâm chính của POP là về cách thức thực hiện nhiệm vụ

Tính kế thừa và đa hình

OOP hỗ trợ khái niệm overloading (nạp chồng), nghĩa là sử dụng cùng tên phương thức để thực hiện các chức năng khác nhau. Ngoài ra, OOP có hỗ trợ kế thừa cho phép sử dụng thuộc tính và chức năng của lớp khác nhau bằng kế thừa.

Ngược lại, POP không có khái niệm kế thừa và đa hình.

Các ngôn ngữ sử dụng

OOP: Ruby, C++, Java,...

POP: Pascal, C,...

Nguồn: techmaster.vn

Nếu bạn đang thắc mắc giữa lập trình hướng cấu trúc và hướng đối tượng, thì bài viết này sẽ mang đến nhiều thông tin bổ ích dành cho bạn.

Lập trình hướng thủ tục (POP) và lập trình hướng đối tượng (OOP) đều là những ngôn ngữ bậc cao trong lĩnh vực công nghệ. Chúng được mọi lập trình viên sử dụng để phát triển Web App. 

Sau đây, Tự Học Lập Trình sẽ tiến hành so sánh lập trình hướng cấu trúc và hướng đối tượng, để bạn biết được cả hai ngôn ngữ này sở hữu cách tiếp cận phân biệt dựa trên cơ sở bản chất của công việc phát triển mã.

Định nghĩa

Lập trình hướng đối tượng dùng để duy trì, sửa đổi mã có sẵn, nhờ sự kế thừa của những đối tượng mới được tạo ra. Sở dĩ nó làm được điều này là vì, OOP sử dụng các class, hàm để xây dựng chương trình dựa trên môi trường thực tế.

Mặt khác, thông qua chuỗi lệnh, lập trình hướng cấu trúc thực hiện chia nhỏ nhiệm vụ thành biến, quy trình hoặc chương trình. Mỗi bước được thao tác theo trình tự của hệ thống, giúp máy tính hiểu được công việc mình cần thực hiện. 

Sự khác nhau giữa hướng đối tượng và hướng cấu trúc

Đối tượng hướng tới

Sự khác nhau dễ nhận biết nhất là trong POP sử dụng thủ tục để hướng tới đối tượng.

Còn OOP sẽ nhằm vào những đối tượng thực tế, cụ thể như người lớn, phụ nữ, hoa, lá... Đa phần những thứ này được viết trong chương trình, thể hiện giống như một đối tượng.

Cách tiếp cận

Trong lập trình hướng cấu trúc, dựa trên chức năng, chương trình sẽ được chia thành nhiều phần riêng cho mỗi chương trình nhỏ. Hiểu đơn giản, POP sử dụng nhiều hàm để giải quyết một bài toán cụ thể. Chính vì thế, nó tích hợp cùng các bài toán đơn giản, cần tư duy giải thuật rõ ràng, nguồn dữ liệu rành mạch, nhất là người lập trình có thể kiểm soát chặt chẽ được mọi  việc, từ truy cập đến mã hóa dữ liệu. 

Còn lập trình hướng đối tượng, do chương trình được chia thành nhiều đối tượng, thể hiện dạng lớp. Nên chúng chứa thuộc tính hay phương thức, đồng thời tương tác qua lại với các đối tượng. Ví dụ như các thuộc tính, phương thức định nghĩa trong lớp, cũng như trực tiếp quản lý nó. Do vậy, OOP được ứng dụng phần lớn trong những bài toán khó và phức tạp.

Sự khác nhau giữa hướng đối tượng và hướng cấu trúc

Bảo mật

Lập trình hướng đối tượng mang tính trừu tượng cao trong việc ẩn dữ liệu. Nó chia các modifier thành Private, Protected, Public, Default. Điều này cho thấy giới hạn truy cập và bảo mật trong OOP khá cao, không thể tùy tiện truy cập vào hàm.

Còn lập trình hướng cấu trúc thì ngược lại.

Quản lý dữ liệu

Giống như việc chúng ta đang tương tác trực tiếp với thế giới bên ngoài, chương trình sử dụng lập trình hướng đối tượng mang tính trực quan, cụ thể hơn. Chính vì thế, công việc thực hiện sẽ được tối giản về cả công sức lẫn thời gian. 

Nếu việc quản lý dữ liệu của OOP đơn giản bao nhiêu thì POP lại khó bấy nhiêu, nhất là thao tác thêm bớt đối tượng.

Sự khác nhau giữa hướng đối tượng và hướng cấu trúc

Công việc chính

Do chỉ có đối tượng của lớp mới  được thực hiện hành vi trong đó, nên  trọng tâm của lập trình hướng đối tượng là bảo mật dữ liệu.

Còn lập trình hướng cấu trúc sẽ thể hiện cách thức hoàn thành hiện nhiệm vụ của hệ thống dựa trên biểu đồ dòng chảy. 

Tính kế thừa, đa hình

POP được cho là dễ học hơn so với OOP, vì nó sử dụng cùng tên hàm để thực hiện nhiều chức năng khác nhau. Bên cạnh đó, OOP còn cho phép kế thừa thuộc tính và chức này sẵn có trên đối tượng. Điều này không tồn tại trong lập trình hướng cấu trúc.

Sự khác nhau giữa hướng đối tượng và hướng cấu trúc

Kết luận

Điểm mấu chốt của sự khác nhau giữa lập trình hướng cấu trúc và hướng đối tượng là, OOP được thiết kế nhằm khắc phục khuyết điểm của POP bằng cách đưa ra khái niệm về đối tượng và các lớp. 

Hy vọng với những thông tin Tự Học Lập Trình vừa chia sẻ sẽ giúp bạn hiểu rõ hơn về hai ngôn ngữ bậc cao này!