Tính đóng gói trong OOP là một khái niệm cơ bản và quan trọng, nhưng nhiều lập trình viên thường bỏ qua. Trong bài viết này, chúng ta sẽ tìm hiểu những thông tin cần biết về Tính đóng gói trong OOP và lý do tại sao nó quan trọng.
Tính đóng gói trong OOP là gì?
Tính đóng gói (Encapsulation) là một trong bốn tính chất cơ bản của Lập trình hướng đối tượng (OOP). Ngoài Tính đóng gói, còn có Tính đa hình (Polymorphism), Tính kế thừa (Inheritance) và Tính trừu tượng (Abstraction).
Đơn giản, Tính đóng gói là việc đưa tất cả thông tin và dữ liệu quan trọng vào bên trong một đối tượng (object). Khi một đối tượng được khởi tạo từ một lớp (class), dữ liệu và phương thức đã được đóng gói trong đối tượng đó. Khi sử dụng, ta chỉ cần gọi tên phương thức mà không cần truy cập đến dữ liệu bên trong.
Mục đích của Tính đóng gói trong OOP
Trong tư duy lập trình, việc lấy thông tin từ bên trong đối tượng để phục vụ cho một hành động bên ngoài không được xem là cách viết mã hay. Do đó, Tính đóng gói được dùng để che giấu dữ liệu bên trong của một đối tượng và ngăn chặn quyền truy cập trực tiếp đến các phần tử bên trong.
Lập trình viên có thể tận dụng Tính đóng gói khi muốn bảo vệ dữ liệu bên trong của đối tượng. Dữ liệu đó không thể bị sửa đổi một cách bất ngờ bởi mã lệnh từ bên ngoài của chương trình.
Vì sao nên tận dụng Tính đóng gói?
Tính đóng gói có nhiều ưu điểm như sau:
- Tính linh hoạt: Mã được đóng gói linh hoạt và dễ dàng sửa đổi hơn so với những đoạn mã độc lập.
- Khả năng tái sử dụng: Mã đã đóng gói có thể tái sử dụng trong một hoặc nhiều ứng dụng. Người dùng có thể chuyển từ một đối tượng sang một đối tượng khác mà không cần thay đổi mã.
- Khả năng bảo trì: Mã được đóng gói trong các phần riêng biệt như lớp, phương thức, giao diện... Điều này giúp thay đổi và cập nhật một phần của ứng dụng không ảnh hưởng đến phần còn lại, tiết kiệm thời gian và công sức cho các nhà phát triển.
- Khả năng kiểm thử: Với một lớp được đóng gói, việc kiểm thử sẽ dễ dàng hơn. Các biến thành viên được tập trung ở một nơi chứ không phân tán khắp nơi, giúp kiểm thử viên tiết kiệm thời gian và công sức.
- Che giấu dữ liệu: Khi sử dụng phương thức, người dùng chỉ cần quan tâm kết quả mà không cần biết chi tiết bên trong đối tượng.
Một số thuật ngữ liên quan
Private, public, protected và default là những thuật ngữ liên quan đến Tính đóng gói. Chúng được gọi là Access modifier (bổ từ truy cập), dùng để giới hạn hoặc quy định phạm vi truy cập của phương thức trong lớp.
- Private (riêng tư): Phương thức có khai báo private chỉ có thể truy cập trong cùng lớp được khai báo.
- Public (công cộng): Phương thức có khai báo public có thể truy cập từ bất kỳ lớp nào khác.
- Protected (được bảo vệ): Phương thức có khai báo protected chỉ có thể truy cập thông qua Tính kế thừa.
- Default (Mặc định): Phương thức không được khai báo rõ ràng sẽ được hiểu là public theo mặc định.
Thực tế, nhiều người thường nhầm lẫn giữa việc che giấu dữ liệu và Tính đóng gói, mặc dù chúng là hai khái niệm khác nhau. Hy vọng qua bài viết này, các bạn đã hiểu rõ hơn về Tính đóng gói trong OOP.
Tham khảo: Medium.com