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 - تاریخ‌ها (Dates)

JavaScript – تاریخ‌ها (Dates)

آبجکت‌های تاریخ (Date) در جاوااسکریپت آبجکت‌های تاریخ در جاوااسکریپت به ما امکان کار با تاریخ و زمان را می‌دهند....

بیشتر بخوانید
JavaScript - آرایه‌های ثابت (Array Const)

JavaScript – آرایه‌های ثابت (Array Const)

جاوااسکریپت: تعریف آرایه با const در سال 2015، جاوااسکریپت کلمه کلیدی مهمی به نام const را معرفی کرد. این...

بیشتر بخوانید
JavaScript - تکرار آرایه‌ها (Array Iteration)

JavaScript – تکرار آرایه‌ها (Array Iteration)

جاوا اسکریپت: تکرار بر روی آرایه‌ها جاوا اسکریپت روش‌های مختلفی برای تکرار (Iteration) بر روی آرایه‌ها ارائه می‌دهد که...

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

نظرات

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

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