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 است که اجازه می‌دهد اعضای کلاس از داخل همان اسمبلی یا از کلاس‌های مشتق‌شده دسترسی پیدا کنند. این مشخص‌کننده معمولاً در پیاده‌سازی وراثت استفاده می‌شود.

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

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - رویدادها (Events)

JavaScript – رویدادها (Events)

رویدادهای HTML رویدادها در HTML، “اتفاقاتی” هستند که برای عناصر HTML رخ می‌دهند. این اتفاقات می‌توانند ناشی از کار...

بیشتر بخوانید
JavaScript - سازنده‌های شیء (Object Constructors)

JavaScript – سازنده‌های شیء (Object Constructors)

ساخت آبجکت با تابع سازنده (Object Constructor Function) برای ساخت چندین آبجکت مشابه، از تابع سازنده استفاده می‌شود. این...

بیشتر بخوانید
JavaScript - نمایش شیء (Object Display)

JavaScript – نمایش شیء (Object Display)

نحوه نمایش آبجکت‌ها در جاوااسکریپت هنگام نمایش یک آبجکت جاوااسکریپت به صورت مستقیم، خروجی معمولاً به شکل [object Object]...

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

نظرات

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

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