آموزش سی شارپ

مباحث پایه سی شارپ

مباحث پیشرفه سی شارپ

دستورات سی شارپ

کپسوله سازی (Encapsulation) در سی شارپ – آموزش سی شارپ

csharp encapsulation 4469 تصویر

کپسوله سازی (Encapsulation) در سی شارپ

کپسوله سازی (Encapsulation) در سی شارپ به عنوان فرآیند محصور کردن یک یا چند آیتم در یک بسته فیزیکی و یا منطقی تعریف شده است. این مفهوم در برنامه نویسی شیء گرا به جلوگیری از دسترسی به جزئیات پیاده سازی اطلاق می شود.

Abstraction و Encapsulation دو ویژگی مرتبط در برنامه نویسی شیء گرا هستند. Abstraction اجازه می دهد تا اطلاعات مربوطه قابل مشاهده باشد و کپسوله سازی یک برنامه نویس را قادر می سازد تا سطوح مناسبی از Abstraction را پیاده سازی کند. کپسوله سازی با استفاده از مشخصه های دسترسی پیاده سازی می شود. مشخصه دسترسی، دامنه و محدوده یک عضو از کلاس را مشخص می کند.

زبان برنامه نویسی C# از مشخصه های دسترسی زیر پشتیبانی می کند:

  • Public
  • Private
  • Protected
  • Internal
  • Protected internal

مشخصه دسترسی عمومی (Public)

مشخصه دسترسی عمومی به یک کلاس در زبان سی شارپ اجازه می دهد تا بتواند متغیرهای عضو، توابع و اشیاء دیگر خود را در اختیار سایر کلاس ها قرار دهد. هر عضوی که به صورت عمومی تعریف شود، خارج از آن کلاس هم قابل دسترسی است.

مثال زیر این موضوع را نشان می دهد:

امتحان کنید

زمانی که کد بالا توسط کامپایلر زبان سی شارپ اجرا شود، نتیجه زیرا را تولید خواهد کرد:

در کد بالا، متغیرهای عضو length و width به صورت عمومی (public) تعریف شده اند، بنابراین خارج از کلاس قابل دسترسی هستند. توابع عضو GetArea() و Display() چون عضو همان کلاس هستند می توانند به طور مستقیم به این متغیرهای عضو دسترسی داشته باشند، بدون این که نیاز باشد از آن کلاس نمونه سازی کنند.

مشخصه دسترسی خصوصی (Private)

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

مثال زیر این موضوع را نشان می دهد:

امتحان کنید

زمانی که کد بالا کامپایل و اجرا شود، نتیجه زیرا را تولید خواهد کرد:

در کد بالا به خاطر این که متغیرهای عضو length و Width به صورت خصوصی تعریف شده اند، در خارج از کلاس قابل دسترسی نیستند. اما توابع عضو Display() و Acceptdetails() که عضو همان کلاس هستند، به طور مستقیم می توانند به این متغیرها دسترسی داشته باشند.

مشخصه دسترسی محافظت شده (Protected)

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

مشخصه دسترسی داخلی (Internal)

مشخصه دسترسی داخلی به یک کلاس اجازه می دهد تا بتواند متغیرهای عضو، توابع و اشیاء دیگر خود را در اختیار سایر کلاس های موجود در assembly فعلی قرار دهد. به عبارت دیگر کلاسی که در فایل sample.dll به صورت internal تعریف شده باشد، در فایل های دیگر مانند other.dll قابل دسترسی نیست.

مثال زیر این موضوع را نشان می دهد:

امتحان کنید

زمانی که کد بالا کامپایل و اجرا شود، نتیجه زیر را تولید خواهد کرد:

در کد بالا تابع GetArea() بدون مشخصه دسترسی تعریف شده است و از آنجایی که مشخصه دسترسی پیش فرض private می باشد، این تابع نیز مشخصه خصوصی را می گیرد و خارج از کلاس قابل دسترسی نیست.

مشخصه دسترسی محافظت شده داخلی (Protected Internal)

این مشخصه ترکیبی از دو مشخصه Protected و Internal می باشد، به این معنی که هم داخل Assembly فعلی قابل دسترسی است و هم در کلاس های فرزند. این مشخصه هم بیشتر در مبحث ارث بری مورد استفاده قرار می گیرد.

ثبت نظر
ریفریش کنید!
نظرات کاربران (۲ مورد)
  1. تصویر آواتار کاربر 0
    Ludwig دوشنبه , ۱ بهمن

    مشخصه دسترسی داخلی (Internal) مشخصه دسترسی عمومی به یک کلاس اجازه می دهد...... در این بخش به صورت اشتباهی نوشته شده است مشخصه دسترسی عمومی. به نظرم باید نوشته می شد دسترسی داخلی.

    • تصویر آواتار کاربر 124
      AmRoسه شنبه , ۲ بهمن

      ممنون که اطلاع دادید. اصلاح شد