Tính đóng gói trong lập trình hướng đối tượng¶
Estimated time to read: 3 minutes
Mar 01, 2021 · ~5 minutes
Khái niệm¶
Tính đóng gói của một lớp đối tượng giúp cho lớp đó có thể che giấu những thông điệp tuyệt mật mà những thông điệp này chỉ có thể truy xuất trong nội tại chính nó (một cách phá vỡ tính đóng gói là sử dụng hàm bạn, lớp bạn).
Đây là một tính chất giúp ràng buộc toàn vẹn dữ liệu của một lớp và đây cũng chính là điểm yếu chí mạng giúp cho rò rỉ thông tin của lớp đó bằng một số thủ thuật phá vỡ tính chất này. Xem xét đoạn mã bên dưới
Phương thức GET¶
Vì tính đóng gói giúp che giấu thông tin của lớp đối tượng, do vậy người lập trình viên muốn truy cập từ bên ngoài những thuộc tính đang trong trạng thái che giâu, đòi hỏ họ phải viết mã để truy xuất được dữ liệu bên trong. Đó là dùng phương thức GET
Hãy xem xét đoạn mã dưới đây
Làm thế nào ta có thể truy xuất được thuộc tính a
trong lớp đối tượng A tại hàm main()
?
Hiển nhiên, ta có thể thêm một hàm bạn, một lớp bạn nhưng tôi sẽ không đề cập tại đây vì nó sẽ phá vỡ tính đóng gói của lớp đối tượng. Nghe cũng không hay lắm.
Lúc này, ta có thể dùng phương thức GET (hay còn gọi là getter) để truy xuất thuộc tính a
mà không làm phá vỡ tính đóng gói. Hãy xem xét đoạn mã hoàn chỉnh bên dưới:
Hiển nhiên, chỉ cần 1 phương thức nhỏ, ta đã có thể truy xuất được thuộc tính a
rồi. Câu hỏi đặt ra là làm cách nào để có thể thay đổi luôn giá trị của a
mà lại không vi phạm tính đóng gói?
Lúc này, ta cần dùng đến phương thức SET (xem phần bên dưới)
Phương thức SET¶
Đoạn mã hoàn chỉnh thể hiện việc thay đổi giá trị của thuộc tính a
.
Các dòng code in đậm bên trên thể hiện phương thức set
để có thể đặt giá trị cho thuộc tính.