Để hiểu rõ hơn về tính đóng gói (encapsulation) trong C#, hãy theo dõi bài viết này của Mytour.
Khám phá bí mật của tính đóng gói (encapsulation) trong C#
1. Bí Mật về Tính Đóng Gói (Encapsulation) trong C#.
2. Tính Đóng Gói Sử Dụng Accessor và Mutator.
3. Tính Đóng Gói Sử Dụng Thuộc Tính (Property).
3.1. Thuộc Tính Chỉ Đọc.
3.2. Thuộc Tính Chỉ Ghi.
1. Bí Mật về Tính Đóng Gói (Encapsulation) trong C#
Trong ngôn ngữ lập trình C#, Tính Đóng Gói (Encapsulation) là quá trình tổ hợp dữ liệu thành viên và các hàm thành viên vào một đơn vị. Lớp (class) trong C# được coi là ví dụ xuất sắc về Tính Đóng Gói, vì lớp này sẽ tổ hợp các loại dữ liệu thành viên và các hàm thành viên thành một đơn vị duy nhất.
Về cơ bản, Tính Đóng Gói (Encapsulation) trong C# được áp dụng để ngăn chặn sự thay đổi không cần thiết trong mã (dữ liệu) từ bên ngoài các hàm. Điều này được thực hiện thông qua việc định nghĩa các lớp với các thuộc tính trong C# nhằm bảo vệ dữ liệu tránh lỗi ngẫu nhiên.
2. Sử Dụng Accessor và Mutator trong Việc Đóng Gói
Khi các lớp được định nghĩa với thuộc tính, điều này tạo nên tính đóng gói, không cho phép người dùng truy cập trực tiếp vào các trường. Thay vào đó, người dùng cần sử dụng các hàm get và set để đọc hoặc ghi dữ liệu theo yêu cầu.
Dưới đây là ví dụ về cách định nghĩa lớp đóng gói bằng cách sử dụng các thuộc tính với các get accessor và set accessor:
Trong đoạn mã trên, bạn có thể thấy chúng ta định nghĩa một biến với access modifier riêng tư và hiển thị biến đó công khai bằng cách sử dụng các thuộc tính get accessor và set accessor.
Trong trường hợp bạn muốn thực hiện bất kỳ sửa đổi nào, bạn có thể định nghĩa các biến bằng cách sử dụng các thuộc tính get accessor và set accessor.
3. Sử Dụng Thuộc Tính (Property) trong Việc Đóng Gói
Thuộc tính (property) là một tính năng mới trong ngôn ngữ C#. Rất ít ngôn ngữ hỗ trợ tính năng này. Các thuộc tính trong C# giúp bảo vệ một trường trong lớp thông qua quyền đọc và ghi. Tính đóng gói (Encapsulation) có thể thực thi mượt mà hơn với sự hỗ trợ của các thuộc tính.
Để hiểu rõ hơn, mời bạn đọc thêm ví dụ dưới đây:
Trong ví dụ này, chúng ta thấy sự ứng dụng của tính đóng gói (Encapsulation) thông qua việc sử dụng các thuộc tính. Các thuộc tính này bao gồm cả get accessor và set accessor. Get accessor trả về giá trị của một số trường thuộc tính, trong khi set accessor thiết lập giá trị cho một số trường thuộc tính dựa trên giá trị được cung cấp. Đặc biệt, các thuộc tính này có khả năng thực hiện chỉ đọc, được triển khai bằng cách chỉ sử dụng get accessor trong thuộc tính.
3.1. Thuộc Tính Chỉ Đọc
Trong ví dụ này, chúng ta thấy cách triển khai của thuộc tính chỉ đọc. Lớp ReadDepartment chứa thuộc tính Departname chỉ triển khai get accessor và giữ nguyên set accessor. Lớp đặc biệt này có một hàm dựng (constructor) chấp nhận tham số là chuỗi. Phương thức Main của lớp ReadDepartmain tạo một đối tượng mới với tên d.
Khi khởi tạo đối tượng d bằng hàm dựng của ReadDepartment, chúng ta truyền tham số là chuỗi. Vì chương trình chỉ có quyền đọc, nên không thể thiết lập giá trị cho trường Departname. Chúng ta chỉ có thể đọc hoặc nhận giá trị của dữ liệu từ trường này.
Ngoài ra, thuộc tính cũng có khả năng thực hiện chế độ chỉ ghi thông qua việc chỉ triển khai set accessor trong thuộc tính.
3.2. Thuộc Tính Chỉ Ghi
Trong ví dụ trên, chúng ta thấy cách triển khai của thuộc tính chỉ ghi. Lớp WriteDepartment chứa thuộc tính Departname chỉ triển khai set accessor và giữ nguyên get accessor. Phương thức set accessor đã được điều chỉnh một chút để in giá trị của Departname sau khi được gán.
Do đó, bài viết này từ Mytour đã giới thiệu chi tiết về tính đóng gói (encapsulation) trong C#. Nếu có bất kỳ thắc mắc hoặc câu hỏi cần được giải đáp, bạn đọc vui lòng chia sẻ ý kiến trong phần bình luận dưới bài viết. Mytour sẽ nhanh chóng giải đáp. Hãy khám phá thêm về vòng lặp trong C# qua những bài viết khác trên trang Mytour.