Tính trừu tượng trong OOP và các loại trừu tượng bạn cần biết

Tính trừu tượng trong OOP là một khái niệm quan trọng nhưng nhiều người vẫn thường hiểu sai về nó. Bài viết sau sẽ trình cho bạn một số thông tin bạn nên biết về tính chất này.

Tổng quan về Tính trừu tượng

Khái niệm

Tính trừu tượng (Abstraction) là một trong bốn tính chất cơ bản của Lập trình hướng đối tượng (Object-oriented programming – viết tắt là OOP). Các tính chất còn lại bao gồm: Tính đóng gói (Encapsulation), Tính kế thừa (Inheritance) và Tính đa hình (Polymorphism).

Hiểu đơn giản, Tính trừu tượng dùng để chỉ quá trình ẩn việc triển khai thực tế của một ứng dụng khỏi người dùng. Thay vào đó, lập trình viên chỉ nhấn mạnh vào cách sử dụng ứng dụng.

Mục đích

Thông qua Tính trừu tượng, lập trình viên có thể ẩn tất cả dữ liệu hoặc quy trình không liên quan của ứng dụng. Đối với người dùng, đó chỉ là những chi tiết không cần thiết. Từ đó, ta có thể để giảm độ phức tạp và tăng hiệu quả sử dụng của phần mềm.

Có thể xem Tính trừu tượng là một phần mở rộng của Tính đóng gói. Bạn có thể tìm hiểu thêm về Tính đóng gói để hiểu rõ hơn về hai thuộc tính này.

Ý nghĩa

Một số lợi ích của Tính trừu tượng có thể kể đến là:

  • Giao diện người dùng đơn giản, cấp cao.
  • Các đoạn mã phức tạp bị ẩn đi.
  • Nâng cao vấn đề bảo mật, bảo vệ dự liệu không bị lộ.
  • Việc bảo trì phần mềm dễ dàng hơn.
  • Việc cập nhật hay thay đổi mã sẽ rất ít khi ảnh hưởng đến Tính trừu tượng.

Minh họa về Tính trừu tượng

Tính trừu tượng trong đời sống

Trừu tượng là một khái niệm khá phổ biến trong thực tế. Nó xuất hiện trong nhiều lĩnh vực như hội họa, kiến trúc hay thiết kế,…

Chẳng hạn, một chiếc xe hoạt động cần rất nhiều bộ phận bên trong làm việc, nhưng tất cả những thông tin đó không cần thiết với người lái. Người lái chỉ cần sử dụng những công cụ như: bàn đạp ga, phanh, vô lăng, đèn nháy. Các kỹ thuật phức tạp đều được ẩn khỏi trình điều khiển. Nghĩa là bạn chỉ cần biết cách lái xe, chứ không cần quan tâm những chi tiết về cách thức động cơ hoạt động.

Tương tự, có rất nhiều cách để máy tính của bạn kết nối với một mạng cục bộ, như Ethernet, Wi-Fi, modem quay số,… Tuy nhiên, trình duyệt Web không phải bận tâm đến việc bạn dùng mạng nào, bởi vì các phần mềm sẽ cung cấp một khái niệm trừu tượng chung để trình duyệt hiểu. Trong trường hợp này, “kết nối mạng” là sự trừu tượng, còn Ethernet và Wi-Fi,… là những triển khai cho sự trừu tượng đó.

Tính trừu tượng trong OOP

Trong Python, một lớp chứa một hoặc nhiều phương thức trừu tượng được gọi là lớp trừu tượng. Còn các phương thức trừu tượng không chứa bất kỳ lệnh triển khai (implements) nào. Thay vào đó, tất cả các lệnh triển khai có thể được định nghĩa trong các phương thức của lớp con kế thừa lớp trừu tượng.

Sau đây là một ví dụ về Tính trừu tượng trong OOP được viết theo ngôn ngữ lập trình Python:

Minh họa về Tính trừu tượng của ngôn ngữ Python.
Minh họa về Tính trừu tượng của ngôn ngữ Python.

Từ đoạn mã trên, chúng ta thấy lớp “Shape” sẽ kế thừa lớp “ABC”. Trong trường hợp này, lớp “Shape” được gọi là lớp trừu tượng. Chúng ta sẽ tiếp tục định nghĩa các phương thức trừu tượng bên trong nó.

Cụ thể, “Calcul_area” chính là phương thức trừu tượng của “Shape”. Như đã nói ở trên, phương thức trừu tượng không cần phải thêm mã mới, mà chỉ cần dùng lệnh “pass”.

Các loại hình trừu tượng trong OOP

Trong OOP, có hai loại trừu tượng là: Trừu tượng hóa dữ liệu (Data Abstraction) và Trừu tượng hóa quy trình (Process Abstraction).

Trừu tượng hóa dữ liệu

Khi dữ liệu của đối tượng không hiển thị ra bên ngoài, thì đó gọi là Trừu tượng hóa dữ liệu. Nếu cần, lập trình viên có thể cấp quyền truy cập vào dữ liệu của đối tượng bằng nhiều cách. Thông thường họ sử dụng một số phương thức, chẳng hạn như get, set.

Trừu tượng hóa quy trình

Lập trình viên không cần phải cung cấp chi tiết về tất cả các chức năng khác nhau của một đối tượng. Khi họ ẩn việc triển khai nội bộ của các chức năng liên quan đến hoạt động của người dùng, đó gọi là Trừu tượng hóa quy trình.

Một điểm lưu ý cuối cùng, đó là tùy vào mỗi ngôn ngữ mà Tính trừu tượng sẽ khác nhau. Khi sử dụng ngôn ngữ nào, bạn cần nghiên cứu kỹ về Tính trừu tượng của ngôn ngữ đó. Hy vọng qua bài viết này, các bạn đã hiểu rõ hơn về Tính trừu tượng trong OOP.


Tham khảo: Journaldev.com

Đọ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
January 28, 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 […]