C# – کپسوله‌سازی (Encapsulation)

کپسوله‌سازی (Encapsulation) در C#

کپسوله‌سازی به معنای فرآیند قرار دادن یک یا چند آیتم در یک بسته فیزیکی یا منطقی است. در برنامه‌نویسی شی‌گرا، کپسوله‌سازی برای جلوگیری از دسترسی به جزئیات پیاده‌سازی به کار می‌رود.

کپسوله‌سازی با استفاده از مشخص‌کننده‌های دسترسی (Access Specifiers) پیاده‌سازی می‌شود. این مشخص‌کننده‌ها محدوده و قابلیت مشاهده اعضای کلاس را تعریف می‌کنند. در C#، مشخص‌کننده‌های دسترسی زیر پشتیبانی می‌شوند:

  1. Public: اعضای کلاس با این مشخص‌کننده می‌توانند از هر جایی در برنامه دسترسی پیدا کنند.
  2. Private: اعضای کلاس با این مشخص‌کننده فقط از داخل همان کلاس قابل دسترسی هستند.
  3. Protected: اعضای کلاس با این مشخص‌کننده فقط از داخل همان کلاس و کلاس‌های مشتق‌شده قابل دسترسی هستند.
  4. Internal: اعضای کلاس با این مشخص‌کننده فقط در داخل همان اسمبلی (Assembly) قابل دسترسی هستند.
  5. Protected Internal: ترکیبی از Protected و Internal که به اعضا اجازه می‌دهد از داخل اسمبلی فعلی یا از کلاس‌های مشتق‌شده دسترسی پیدا کنند.

مشخص‌کننده Public

مشخص‌کننده public اجازه می‌دهد که متغیرها و متدهای عضو یک کلاس از بیرون آن کلاس قابل دسترسی باشند.

مثال:

using System;

namespace RectangleApplication {
   class Rectangle {
      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());
      }
   }
   
   class ExecuteRectangle {
      static void Main(string[] args) {
         Rectangle r = new Rectangle();
         r.length = 4.5;
         r.width = 3.5;
         r.Display();
      }
   }
}

در این مثال، متغیرهای length و width به عنوان عمومی تعریف شده‌اند، بنابراین می‌توانند از متد Main به آن‌ها دسترسی پیدا کرد.

مشخص‌کننده Private

مشخص‌کننده private اجازه می‌دهد که متغیرها و متدهای عضو یک کلاس فقط از داخل همان کلاس قابل دسترسی باشند و از بیرون کلاس، حتی از طریق یک شیء هم قابل دسترسی نیستند.

مثال:

using System;
namespace RectangleApplication {
   class Rectangle {
      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());
      }
   }
   
   class ExecuteRectangle {
      static void Main(string[] args) {
         Rectangle r = new Rectangle();
         r.Acceptdetails();
         r.Display();
      }
   }
}

در این مثال، متغیرهای length و width به صورت خصوصی تعریف شده‌اند و فقط از طریق متدهای Acceptdetails و Display که عمومی هستند، قابل دسترسی می‌باشند.

مشخص‌کننده Internal

مشخص‌کننده internal اجازه می‌دهد که اعضای کلاس از داخل همان اسمبلی قابل دسترسی باشند. این مشخص‌کننده بیشتر برای کاربردهای داخلی اسمبلی‌ها مفید است.

مثال:

using System;

namespace RectangleApplication {
   class Rectangle {
      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());
      }
   }
   
   class ExecuteRectangle {
      static void Main(string[] args) {
         Rectangle r = new Rectangle();
         r.length = 4.5;
         r.width = 3.5;
         r.Display();
      }
   }
}

در این مثال، متغیرهای length و width به صورت داخلی تعریف شده‌اند و فقط از داخل همان اسمبلی قابل دسترسی هستند.

مشخص‌کننده Protected Internal

مشخص‌کننده protected internal ترکیبی از protected و internal است که اجازه می‌دهد اعضای کلاس از داخل همان اسمبلی یا از کلاس‌های مشتق‌شده دسترسی پیدا کنند. این مشخص‌کننده معمولاً در پیاده‌سازی وراثت استفاده می‌شود.

کپسوله‌سازی با استفاده از این مشخص‌کننده‌ها به شما اجازه می‌دهد تا سطح دسترسی به داده‌ها و متدها را کنترل کنید و به بهبود امنیت و سازماندهی کد کمک می‌کند.

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
Python - محدود کردن داده (MongoDB Limit)

Python – محدود کردن داده (MongoDB Limit)

Python MongoDB محدود کردن نتایج برای محدود کردن نتایج در MongoDB، از متد limit() استفاده می‌کنیم. متد limit() یک...

بیشتر بخوانید
Python - بروزرسانی (MongoDB Update)

Python – بروزرسانی (MongoDB Update)

به‌روزرسانی یک رکورد برای به‌روزرسانی یک رکورد یا سند در MongoDB، از متد update_one() استفاده می‌کنیم. پارامتر اول متد...

بیشتر بخوانید
Python - حذف کالکشن (MongoDB Drop Collection)

Python – حذف کالکشن (MongoDB Drop Collection)

حذف کالکشن شما می‌توانید یک جدول یا کالکشن در MongoDB را با استفاده از متد drop() حذف کنید. مثالحذف...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.