Tính trừu tượng trong OOP là một định nghĩa quan trọng mặc dù vậy nhiều người vẫn thường hiểu sai về nó. Bài content 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 trong OOP
Khái niệm
Tính trừu tượng (Abstraction) là một trong bốn thuộc tính 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 dễ dàng, Tính trừu tượng dùng để chỉ quá trình ẩn việc khai triển thực tế của một phần mềm khỏi người sử dụng. Thay vào đó, lập trình viên chỉ nhấn mạnh vào cách dùng phần mềm.
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 phần mềm. Đối với người dùng, đấy chỉ là những chi tiết không cần thiết. Từ đó, ta có thể để giảm độ phức tạp & tăng hiệu quả dùng của ứng dụng.
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 hơn về hai thuộc tính này.
Tính trừu tượng trong OOP sử dụng để ẩn những chi tiết không quan trọng của phần mềm khỏi người dùng (Nguồn: Unsplash)
>>> Xem thêm: Lập trình viên có khó không và những điều cần biết
Ý nghĩa
Một vài ích lợi của Tính trừu tượng có thể kể đến là:
- Giao diện người sử 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ì ứng dụng đơn giản hơn.
- Việc cập nhật hay thay đổi mã sẽ gần như không có khi ảnh hưởng đến Tính trừu tượng.
Hiểu về khái niệm Abtraction bằng VD
Giả sử bạn ước muốn tạo một phần mềm ngân hàng và bạn được yêu cầu thu thập tất cả thông tin về khách hàng của bạn.
Có nhiều năng lực bạn có thể đưa ra thông tin sau đây về khách hàng:
Nhưng mà, không phải tất cả các thông tin trên là bắt buộc để tạo một phần mềm ngân hàng.
Bởi vậy, bạn chỉ phải chọn thông tin hữu ích cho ứng dụng ngân hàng của mình từ nhóm đấy. Dữ liệu như tên, địa chỉ, thông tin thuế, v.v … Có ý nghĩa đối với phần mềm ngân hàng.
Vì chúng ta đã tìm nạp / xóa / chọn thông tin khách hàng từ một nhóm lớn hơn, quy trình này có cách gọi khác là Trừu tượng hóa.
Nhưng, thông tin tương tự sau khi được trích xuất có thể được dùng cho nhiều ứng dụng. Chẳng hạn, bạn sẽ sử dụng cùng một dữ liệu cho phần mềm bệnh viện, ứng dụng cổng thông tin việc làm, cơ sở dữ liệu của Chính phủ, v.v … Với rất ít hoặc không sửa đổi.
Vì lẽ đó, nó trở thành dữ liệu chính của bạn. Đây là một lợi thế của Trừu tượng.
>>> Xem thêm: Các tính chất của OOP [Lập trình hướng đối tượng] mới nhất 2020
3. Sự khác nhau giữa abstract & interface
Bảng dưới đây sẽ giúp các em có cái nhìn rõ hơn về sự không giống nhau giữa abstract và interface. Khi nào thì chúng ta nên dùng abstract hoặc interface cho hợp lý
Các điểm so sánh | Abstract | Interface |
---|---|---|
Đa kế thừa | Không hỗ trợ đa kế thừa | Một class có thể kế thừa nhiều Interface |
Default (mặc định) | Có thể khái niệm tính chất , và thân phương thức có thể chứa code | chỉ chứa hằng số , không có code trong phần thân method |
Access Modifier | có thể đặt toàn bộ modifier | Mọi phương thức và tính chất là public |
Mục đích sử dụng | IS A (quan hệ cha con) | HAS A (Can do, có năng lực làm được việc gì) |
Khi nào dùng abstract
- Khả năng mở rộng không cần xoá hết code làm lại.
- Tăng tính bảo mật che dấu các dữ liệu quan trọng
- Khi các lớp có mối liên hệ cha con với nhau Ví dụ như con gà , chó , mèo chúng đều là động vật (Animal)
Khi nào sử dụng interface
- Mục đích chính của interface là sử dụng cho tính đa hình. năng lực thực hiện các hành động không giống nhau trên các ngữ cảnh không giống nhau.
- Chúng ta muốn các lớp không liên quan với nhau liên kết lại với nhau. Anh Ví dụ như mình có cách thức thanh toán HSBC , mình có thanh toán Vietcombank . 2 Class này hoàn toàn không liên quan gì với nhau. VD như trong phần mềm của anh. Anh ước muốn hỗ trợ người dùng cả 2 cách thức thanh toán, có nghĩa là nếu họ có tài khoản bên HSBC họ có thể thực hiện giao dịch thanh toán , chuyển khoản bên Vietcombank. Để thực hiện được việc đấy thì 2 class HSBC & Vietcombank phải nói chuyện được với nhau, có nghĩa là 2 class đấy phải có cùng một điểm chung. Thì lúc này anh sẽ tạo ra một Interface là Payment. Sau đó HSBC & Vietcombank cùng implements nó. Như vậy 2 cái đấy sẽ có một điểm chung phải có thể nói chuyện được với nhau.
- Chúng ta ước muốn chú trọng vào hành động hơn về cấu trúc đối tượng.
- Chúng ta muốn sử dụng đa thừa kế.
- Tăng cường tính bảo mật . Người dùng chỉ có thể thấy được method thế nhưng không thấy được nội dung code bên trong
Kết
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 phải cần nghiên cứu kỹ về Tính trừu tượng của ngôn ngữ đấy. 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.
Nhật Minh – Tổng hợp và bổ sung
Nguồn: vn.got-it.ai, niithanoi.edu.vn, levunguyen.com
Bình luận về chủ đề post