Để tìm hiểu rõ hơn về tính đóng gói (encapsulation) trong C#, bạn đọc cùng tham khảo tiếp bài viết dưới đây của Taimienphi.vn nhé.
Tính đóng gói (encapsulation) trong C#
1. Tính đóng gói (encapsulation) trong C#
Trong C#, Encapsulation là quá trình kết hợp các 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# là ví dụ cho Encapsulation, vì lớp sẽ kết hợp các loại dữ liệu thành viên và các hàm thành viên vào một đơn vị.
Về cơ bản, tính đóng gói (encapsulation) trong C# được sử dụng để ngăn chặn việc thay đổi mã (dữ liệu) vô tình từ bên ngoài các hàm. Bằng cách định nghĩa các lớp với thuộc tính trong C# để bảo vệ dữ liệu không bị lỗi ngẫu nhiên.
2. Encapsulation sử dụng accessor và mutator
Nếu các lớp được định nghĩa với thuộc tính thì lớp đó sẽ được đóng gói, và không cho phép người dùng truy cập trực tiếp các trường, thay vào đó người dùng sẽ phải sử dụng các hàm get và set để đọc hoặc ghi dữ liệu dựa trên các yêu cầu.
Dưới đây là ví dụ về đị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ị các 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 nếu muốn thực hiện bất kỳ sửa đổi nào, sau đó định nghĩa các biến, bạn có thể thực hiện điều này bằng cách sử dụng các thuộc tính get accessor và set accessor.
3. Encapsulation sử dụng thuộc tính (property)
Thuộc tính (property) là tính năng ngôn ngữ mới được giới thiệu trong C#. Chỉ có một số ít ngôn ngữ hỗ trợ thuộc tính này. Các thuộc tính trong C# giúp bảo vệ một trường trong lớp bằng các đọc và ghi trường này. Tính đóng gói (Encapsulation) có thể thực thi mượt hơn với các thuộc tính.
Để hiểu rõ hơn, bạn đọc cùng tham khảo tiếp ví dụ dưới đây:
Ví dụ trên minh họa sử dụng tính đóng gói (Encapsulation) bằng cách sử dụng các thuộc tính. Thuộc tính bao gồm get accessor và set accessor. Get accessor trả về giá trị của một số trường thuộc tính. Set accessor thiết lập các giá trị của một số trường thuộc tính với nội dung của giá trị. Các thuộc tính có thể thực hiện chỉ đọc. Điều này có thể được thực thi bằng cách chỉ triển khai get accessor trong thuộc tính.
3.1. Thuộc tính chỉ đọc
Trong ví dụ trên minh họa cách triển khai thuộc tính chỉ đọc. Lớp ReadDepartment bao gồm thuộc tính Departname chỉ triển khai get accessor, giữ nguyên set accessor. Lớp đặc biệt này bao gồm một hàm dựng (constructor), chấp nhận tham số chuỗi. Phương thức Main của lớp ReadDepartmain tạo một đối tượng mới tên d.
Việc khởi tạo đối tượng d sử dụng hàm dựng của ReadDepartment, lấy tham số chuỗi. Vì chương trình trên chỉ đọc nên chúng ta không thể thiết lập giá trị cho trường Departname, và chỉ đọc hoặc nhận giá trị của dữ liệu từ trường.
Ngoài ra các thuộc tính cũng có thể thực hiện chỉ ghi, bằng cách chỉ triển khai set accessor trong thuộc tính.
3.2. Thuộc tính chỉ ghi
Trong ví dụ trên minh họa cách triển khai thuộc tính chỉ ghi. Lớp WriteDepartment bao gồm thuộc tính Departname chỉ triển khai set accessor, và giữ nguyên get accessor. Phương thức set accessor được thay đổi một chút vì nó in giá trị của Departname sau khi được gán.
Như vậy bài viết trên đây Taimienphi.vn vừa giới thiệu cho bạn 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 nào cần giải đáp, bạn đọc vui lòng để lại ý kiến của mình trong phần bình luận bên dưới bài viết, Taimienphi.vn sẽ giải đáp các thắc mắc của bạn sớm nhất có thể. Ngoài ra, bạn đọc có thể tham khảo thêm một số bài viết khác trên Taimienphi.vn để tìm hiểu rõ hơn về vòng lặp trong C# nhé.