POP và OOP Khác Nhau Như Thế Nào?
NỘI DUNG BÀI VIẾT
Lập trình được chia làm 3 giai đoạn, giai đoạn đầu tiên là lập trình tuyến tính kế tiếp là lập trình cấu trúc sau đó là lập trình hướng đối tượng. Trong bài viết này mình sẽ nói và lập trình hướng cấu trúc (POP) và lập trình hướng đối tượng (OOP).
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)
- 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.
Nói cho dễ hiểu thì trong lập trình hướng cấu trúc chương trình sẽ được chia thành nhiều hàm con và được gọi trong hàm chính. Một số ngôn ngữ hướng cấu trúc như C, Pascal…
Đặ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.
Lâp trình hướng đối tượng (OOP) là gì?
Lập trình hướng đối tượng là lập trình hỗ trợ công nghệ đối tượng (OOP) giúp tăng năng suất và đơn giản hóa công việc xây dựng phần mềm, bảo trì phần mềm, cho phép lập trình viên tập trung vào các đối tượng giống như trong thực tế.
Đa phần các ngôn ngữ thông dụng ngày nay đều là ngôn ngữ lập trình hướng đối tượng như C#, java…
Ưu điểm
- Dễ dàng quản lý code khi có sự thay đổi chương trình.
- Dễ mở rộng dự án.
- Tiết kiệm được tài nguyên đáng kể cho hệ thống.
- Có tính bảo mật cao.
- Có tính tái sử dụng cao.
- Nó có khả năng lập biểu đồ cho các đối tượng.
- Cho phép phân loại các đối tượng thành các lớp khác nhau.
Sự khác nhau giữa POP và OOP
1. Đối tượng hướng tới
Sự khác nhau dễ thấy nhất là trong OOP những thứ được viết trong chương trình sẽ được thể hiện giống như các đối tượng. Các đối tượng cũng giống như những thứ trong thực tế như ông già, trẻ em, lợn , gà, chim chóc, hoa lá cành. … Còn POP hướng tới đối tượng là thủ tục.
2. Phương pháp thực hiện
Trong POP chương trình sẽ chia ra nhiều hàm để giải quyết một bài toán cụ thể. Vì vậy POP phù hợp với nhiều bài toán nhỏ, có luồng dữ liệu rõ ràng, cần phải tư duy giải thuật rõ ràng và người lập trình có khả năng tự quản lý được mọi truy cập đến các dữ liệu của chương trình.
Trong OOP chương trình được định nghĩa bởi các lớp … Các lớp này chứa thuộc tính (biến thành viên) và phương thức( hàm thành viên). Các lớp (Class) này sẽ tạo ra các đối tượng (instance) .Các instance sau khi tạo ra sẽ có các thuộc tính và phương thức đc định nghĩa trong lớp (Class) và quản lí nó. Vì vậy mà OPP được sinh ra để giải quyết các bài toán lớn, phức tạp.
3. Khả năng truy cập, bảo mật
OOP chia ra các modifier: Private, Public, Protected, Default còn POP thì không. Nhờ việc giới hạn truy cập dữ liệu mà bảo mật trong OPP cao hơn.
4. Đ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. Vì vậy bảo mật của OOP sẽ cao hơn POP
5. Quản lý dữ liệu
Lập trình hướng đối tượng sẽ làm cho việc viết chương trình trở nên trực quan và đơn giản, giống như việc ta đang tương tác với những thứ xung quanh mình vậy. Do nó đơn giản hơn nên sẽ mất ít công sức hơn, làm được nhiều hơn, dễ bảo trì và phát triển hơn. Trong 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ó.
6. Trọng tâm chính
Trọng tâm chính của POP là về cách thức thực hiện nhiệm vụ của hệ thống, nó tuân theo biểu đồ dòng chảy để hoàn thành nhiệm vụ. 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 một lớp.
7. Các ngôn ngữ thường sử dụng
Trong khi POP sử dụng các ngôn ngữ cơ bản như c, pascal thì OPP sử dụng các ngôn ngữ thông dụng hiện tại như ruby, c++, java…
8. Tính kế thừa, đa hình
OOP hỗ trợ khái niệm Overloading/polymorphism, nghĩa là sử dụng cùng tên hàm để thực hiện các chức năng khác nhau. Chúng ta có thể Overload các hàm, hàm tạo và toán tử trong OOP. Không có khái niệm thừa kế trong POP trong khi đó OOP 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 bằng cách kế thừa nó.
Ngoài ra thì POP dễ học, dễ hiểu hơn OPP.
Tạm kết
OOP ra đời nhằm khắc phục các sai sót của POP bằng cách đưa ra khái niệm về đối tượng và các lớp. Qua bài viết này hy vọng các bạn đã hiểu thêm về lập trình hướng cấu trúc và lập trình hướng đối tượng.
Nguồn: codelearn.io
Trả lời