Saturday, December 7, 2019

Đóng gói trong C# - C# cơ bản

Đóng gói được định nghĩa 'là quá trình bao quanh một hoặc nhiều mục trong gói vật lý hoặc logic'. Đóng gói, trong phương pháp lập trình hướng đối tượng, ngăn chặn truy cập vào chi tiết thực hiện.

Trừu tượng hóa và đóng gói là các tính năng liên quan trong lập trình hướng đối tượng. Trừu tượng cho phép hiển thị thông tin liên quan và đóng gói cho phép lập trình viên thực hiện mức độ trừu tượng mong muốn .
Đóng gói trong C#

Đóng gói được thực hiện bằng cách sử dụng các chỉ định truy cập . Một specifier truy cập xác định phạm vi và khả năng hiển thị của một thành viên lớp. C # hỗ trợ các chỉ định truy cập sau -
public
private
Được bảo vệ
Nội bộ
Bảo vệ nội bộ
Công cụ xác định truy cập public
Trình xác định truy cập public cho phép một lớp hiển thị các biến thành viên và các hàm thành viên của nó cho các hàm và đối tượng khác. Bất kỳ thành viên nào cũng có thể được truy cập từ bên ngoài lớp học.
Ví dụ sau minh họa điều này
using System;
namespace RectangleApplication {
   class Rectangle {
      //member variables
      public double length;
      public double width;
     
      public double GetArea() {
         return length * width;
      }
      public void Display() {
         Console.WriteLine("Length: {0}", length);
         Console.WriteLine("Width: {0}", width);
         Console.WriteLine("Area: {0}", GetArea());
      }
   }//end class Rectangle
 
   class ExecuteRectangle {
      static void Main(string[] args) {
         Rectangle r = new Rectangle();
         r.length = 4.5;
         r.width = 3.5;
         r.Display();
         Console.ReadLine();
      }
   }
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau -
Length: 4.5
Width: 3.5
Area: 15.75
Trong ví dụ trước, chiều dài và chiều rộng của biến thành viên được khai báo công khai , do đó chúng có thể được truy cập từ hàm Main () bằng cách sử dụng một thể hiện của lớp Hình chữ nhật, có tên r .

Hàm thành viên Display () và GetArea () cũng có thể truy cập trực tiếp các biến này mà không cần sử dụng bất kỳ trường hợp nào của lớp.

Các hàm thành viên Display () cũng được khai báo công khai , do đó, nó cũng có thể được truy cập từ Main () bằng cách sử dụng một thể hiện của lớp Hình chữ nhật, có tên r .
Công cụ xác định truy cập riêng
Trình xác định truy cập riêng cho phép một lớp ẩn các biến thành viên và các hàm thành viên khỏi các hàm và đối tượng khác. Chỉ các chức năng của cùng một lớp có thể truy cập các thành viên tư nhân của nó. Ngay cả một thể hiện của một lớp cũng không thể truy cập các thành viên riêng của nó.

Ví dụ sau minh họa điều này
using System;
namespace RectangleApplication {
   class Rectangle {
      //member variables
      private double length;
      private double width;
     
      public void Acceptdetails() {
         Console.WriteLine("Enter Length: ");
         length = Convert.ToDouble(Console.ReadLine());
         Console.WriteLine("Enter Width: ");
         width = Convert.ToDouble(Console.ReadLine());
      }
      public double GetArea() {
         return length * width;
      }
      public void Display() {
         Console.WriteLine("Length: {0}", length);
         Console.WriteLine("Width: {0}", width);
         Console.WriteLine("Area: {0}", GetArea());
      }
   }//end class Rectangle
 
   class ExecuteRectangle {
      static void Main(string[] args) {
         Rectangle r = new Rectangle();
         r.Acceptdetails();
         r.Display();
         Console.ReadLine();
      }
   }
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau -

Enter Length:
4.4
Enter Width:
3.3
Length: 4.4
Width: 3.3
Area: 14.52
Trong ví dụ trước, chiều dài và chiều rộng của biến thành viên được khai báo là private , do đó chúng không thể được truy cập từ hàm Main (). Các hàm thành viên AcceptDetails () và Display () có thể truy cập các biến này. Vì các hàm thành viên AcceptDetails () và Display () được khai báo công khai , chúng có thể được truy cập từ Main () bằng cách sử dụng một thể hiện của lớp Hình chữ nhật, có tên r .
Công cụ xác định truy cập nội bộ
Trình xác định truy cập nội bộ cho phép một lớp hiển thị các biến thành viên và các hàm thành viên của nó cho các hàm và đối tượng khác trong cụm hiện tại. Nói cách khác, bất kỳ thành viên nào có chỉ định truy cập nội bộ đều có thể được truy cập từ bất kỳ lớp hoặc phương thức nào được xác định trong ứng dụng mà thành viên được xác định.

Chương trình sau đây minh họa điều này
using System;
namespace RectangleApplication {
   class Rectangle {
      //member variables
      internal double length;
      internal double width;
     
      double GetArea() {
         return length * width;
      }
      public void Display() {
         Console.WriteLine("Length: {0}", length);
         Console.WriteLine("Width: {0}", width);
         Console.WriteLine("Area: {0}", GetArea());
      }
   }//end class Rectangle
 
   class ExecuteRectangle {
      static void Main(string[] args) {
         Rectangle r = new Rectangle();
         r.length = 4.5;
         r.width = 3.5;
         r.Display();
         Console.ReadLine();
      }
   }
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau -

Length: 4.5
Width: 3.5
Area: 15.75
Trong ví dụ trước, lưu ý rằng hàm thành viên GetArea () không được khai báo với bất kỳ chỉ định truy cập nào. Sau đó, điều gì sẽ là trình xác định truy cập mặc định của một thành viên lớp nếu chúng ta không đề cập đến bất kỳ? Nó là riêng tư .

Công cụ xác định truy cập nội bộ được bảo vệ
Trình xác định truy cập nội bộ được bảo vệ cho phép một lớp ẩn các biến thành viên và các hàm thành viên khỏi các đối tượng và hàm khác của lớp, ngoại trừ một lớp con trong cùng một ứng dụng. Điều này cũng được sử dụng trong khi thực hiện kế thừa.

No comments:

Post a Comment