سطح دسترسی Protected در سی‌شارپ

تیم تحریریه 1403/10/27 0 35
لینک کوتاه https://zoheirsoftware.com/z/e67ee00df |
سطح دسترسی Protected در سی‌شارپ,کاربردهای سطح دسترسی Protected,مزایا و معایب استفاده از Protected

سطح دسترسی Protected در سی‌شارپ

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

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

این بدان معناست که اعضای Protected از دسترسی مستقیم اشیاء کلاس یا سایر کلاس‌هایی که در سلسله‌مراتب ارث‌بری قرار ندارند، محافظت می‌شوند.

این ویژگی برای طراحی کلاس‌هایی که نیاز به گسترش در آینده دارند بسیار مفید است و امکان اشتراک‌گذاری داده‌ها و رفتارهای ضروری میان کلاس پایه و کلاس‌های مشتق‌شده را بدون افشای آنها برای دیگران فراهم می‌کند

یکی از مزایای اصلی سطح دسترسی Protected، افزایش قابلیت گسترش (Extensibility) در کد است.

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

به عنوان مثال، می‌توان متغیرها یا متدهایی را Protected تعریف کرد که کلاس مشتق‌شده برای تکمیل یا سفارشی‌سازی رفتارها به آنها نیاز دارد.

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

 

سطح دسترسی Protected در سی‌شارپ

 

تعریف سطح دسترسی Protected

سطح دسترسی Protected به اعضای یک کلاس این امکان را می‌دهد که فقط توسط خود کلاس و کلاس‌های مشتق‌شده از آن (Inherited Classes) قابل دسترسی باشند.

به عبارت دیگر، اعضای Protected در خارج از محدوده کلاس پایه یا کلاس‌های مشتق‌شده در دسترس نیستند.

نحوه تعریف:

class BaseClass
{
    protected int protectedValue;

    protected void ProtectedMethod()
    {
        Console.WriteLine("This is a protected method.");
    }
}

class DerivedClass : BaseClass
{
    public void AccessProtectedMember()
    {
        protectedValue = 10;
        ProtectedMethod();
    }
}

در مثال بالا:

متغیر protectedValue و متد ProtectedMethod به صورت Protected تعریف شده‌اند.

کلاس مشتق‌شده DerivedClass به این اعضا دسترسی دارد.

 

 

 

🌟 آیا به دنبال یک فرصت عالی برای یادگیری برنامه‌نویسی هستید؟ 🚀

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

👨‍🏫 چرا دوره ما را انتخاب کنید؟

  • محتوای جامع و عملی: با پروژه‌های واقعی و تمرینات عملی، یادگیری را به تجربه‌ای جذاب تبدیل کنید.
  • مدرس مجرب: از تجربه و دانش مدرس حرفه‌ای بهره‌مند شوید که شما را در هر مرحله از یادگیری راهنمایی می‌کنند.
  • پشتیبانی ۲۴/۷: هر زمان که سوالی داشتید، ما در کنار شما خواهیم بود تا به شما کمک کنیم.
  • دسترسی مادام‌العمر: به محتوای دوره دسترسی دائمی داشته باشید و هر زمان که خواستید، می‌توانید به آن مراجعه کنید.

💡 فرصت را از دست ندهید!

بایادگیری سی‌شارپ، می‌توانید در دنیای فناوری اطلاعات به یک متخصص تبدیل شوید و در پروژه‌های جذاب و چالش‌برانگیز شرکت کنید.

همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده‌ای روشن‌تر بردارید!

شرکت در دوره آموزش برنامه نویسی سی شارپ

 

 

 

ویژگی‌های سطح دسترسی Protected

  • دسترسی محدود به ارث‌بری

    اعضای Protected فقط برای کلاس پایه و کلاس‌های مشتق‌شده قابل دسترسی هستند. اشیاء کلاس یا کلاس‌های دیگر نمی‌توانند به این اعضا دسترسی داشته باشند.
  • پشتیبانی از اصول شیءگرایی

    این سطح دسترسی امکان کپسوله‌سازی (Encapsulation) و ارث‌بری (Inheritance) را فراهم می‌کند.
  • محافظت از داده‌ها

    اعضای Protected داده‌ها را از دسترسی غیرمجاز توسط اشیاء یا کلاس‌های خارجی محافظت می‌کنند.
  • افزایش انعطاف‌پذیری

    با استفاده از Protected، می‌توانید قابلیت گسترش (Extendability) کد را بدون افشای جزئیات داخلی فراهم کنید.

 

ویژگی‌های سطح دسترسی Protected

 

 

تفاوت Protected با سایر سطوح دسترسی

  • Protected vs Public

Protected: فقط کلاس پایه و کلاس‌های مشتق‌شده می‌توانند به عضو دسترسی داشته باشند.

Public: همه کلاس‌ها و اشیاء به عضو دسترسی دارند.

مثال:

class BaseClass
{
    public int publicValue = 10;
    protected int protectedValue = 20;
}

class DerivedClass : BaseClass
{
    public void ShowValues()
    {
        Console.WriteLine(publicValue); // Accessible
        Console.WriteLine(protectedValue); // Accessible
    }
}

class OtherClass
{
    public void TryAccess()
    {
        BaseClass obj = new BaseClass();
        Console.WriteLine(obj.publicValue); // Accessible
        // Console.WriteLine(obj.protectedValue); // Error
    }
}

 

 

  • Protected vs Private

Protected: قابل دسترسی در کلاس پایه و کلاس‌های مشتق‌شده.

Private: فقط در داخل همان کلاس قابل دسترسی است.

مثال:

class BaseClass
{
    private int privateValue = 10;
    protected int protectedValue = 20;
}

class DerivedClass : BaseClass
{
    public void AccessMembers()
    {
        // Console.WriteLine(privateValue); // Error
        Console.WriteLine(protectedValue); // Accessible
    }
}

 

  • Protected vs Internal

    • Protected

      فقط در کلاس پایه و کلاس‌های مشتق‌شده قابل دسترسی است.
    • Internal

      فقط در داخل یک اسمبلی (Assembly) قابل دسترسی است.

Protected Internal

ترکیب Protected و Internal به اعضا اجازه می‌دهد که علاوه بر کلاس پایه و کلاس‌های مشتق‌شده، در تمام کلاس‌های همان اسمبلی نیز قابل دسترسی باشند.

مثال:

protected internal int protectedInternalValue;

 

 

کاربردهای سطح دسترسی Protected

  • ایجاد کدهای قابل گسترش

    با استفاده از Protected، می‌توان کلاس‌هایی طراحی کرد که کلاس‌های مشتق‌شده بتوانند رفتار یا داده‌های آن را گسترش دهند.
  • محافظت از داده‌های حساس

    از Protected برای محافظت از داده‌ها یا متدهایی استفاده می‌شود که باید برای کلاس‌های مشتق‌شده قابل دسترسی باشند اما برای سایر کلاس‌ها خیر.
  • استفاده در چارچوب‌های نرم‌افزاری

    بسیاری از چارچوب‌ها (Frameworks) از Protected برای تعریف رفتارهای اساسی که باید توسط توسعه‌دهندگان گسترش یابند، استفاده می‌کنند.

 

کاربردهای سطح دسترسی Protected

 

مزایا و معایب استفاده از Protected

مزایا

  • قابلیت استفاده مجدد کد

    کلاس‌های مشتق‌شده می‌توانند از اعضای Protected استفاده کنند و رفتار جدیدی به کلاس پایه اضافه کنند.
  • کپسوله‌سازی بهتر

    این سطح دسترسی به محافظت از داده‌ها کمک می‌کند.
  • انعطاف‌پذیری در طراحی

    امکان ایجاد سلسله‌مراتب کلاس‌ها بدون افشای جزئیات غیرضروری.

معایب

  • پیچیدگی بیشتر

    استفاده نادرست می‌تواند کد را پیچیده کند.
  • احتمال استفاده نادرست

    اگر توسعه‌دهنده کلاس مشتق‌شده از اعضای Protected به‌درستی استفاده نکند، ممکن است باگ‌هایی در برنامه ایجاد شود.

 

مزایا و معایب استفاده از Protected

 

 

نکات مهم در استفاده از Protected

  • اصل طراحی کمینه‌گرایی

    فقط اعضایی را Protected کنید که واقعاً لازم است توسط کلاس‌های مشتق‌شده استفاده شوند.
  • امنیت و کپسوله‌سازی

    از Protected برای حفاظت از داده‌هایی که نباید در معرض اشیاء خارجی باشند، استفاده کنید.
  • ترکیب با سایر سطوح دسترسی

    در صورت نیاز، از Protected Internal برای کنترل دقیق‌تر دسترسی استفاده کنید.

 

 

مثال پروژه‌محور برای سطح دسترسی Protected در سی‌شارپ

فرض کنید می‌خواهیم یک سیستم مدیریت حساب‌های بانکی طراحی کنیم. کلاس پایه BankAccount شامل اطلاعات اولیه حساب و متدی برای محاسبه سود سالیانه است.

این متد و اطلاعات تنها برای کلاس‌های مشتق‌شده مانند SavingsAccount و CurrentAccount قابل دسترسی هستند.

using System;

class BankAccount
{
    protected decimal Balance; // فقط برای کلاس‌های مشتق‌شده قابل دسترسی است.

    public BankAccount(decimal initialBalance)
    {
        Balance = initialBalance;
    }

    protected virtual decimal CalculateAnnualInterest()
    {
        return Balance * 0.03m; // سود پایه 3 درصد.
    }

    public void ShowBalance()
    {
        Console.WriteLine($"Current Balance: {Balance:C}");
    }
}

class SavingsAccount : BankAccount
{
    public SavingsAccount(decimal initialBalance) : base(initialBalance) { }

    protected override decimal CalculateAnnualInterest()
    {
        return Balance * 0.05m; // سود بالاتر برای حساب پس‌انداز.
    }

    public void ApplyAnnualInterest()
    {
        Balance += CalculateAnnualInterest();
        Console.WriteLine("Annual interest applied!");
    }
}

class Program
{
    static void Main()
    {
        SavingsAccount account = new SavingsAccount(1000);
        account.ShowBalance();
        account.ApplyAnnualInterest();
        account.ShowBalance();
    }
}

توضیحات:

کلاس پایه BankAccount: شامل متغیر Balance و متدی Protected به نام CalculateAnnualInterest برای محاسبه سود سالیانه.
کلاس مشتق‌شده SavingsAccount: متد CalculateAnnualInterest را بازنویسی کرده و سود بیشتری را برای حساب پس‌انداز محاسبه می‌کند.
خروجی: کاربران تنها می‌توانند موجودی را مشاهده کنند و عملیات اضافه کردن سود به طور امن توسط متدهای داخلی انجام می‌شود.

 

 

دوره های مرتبط
آموزش برنامه نویسی سی شارپ,آموزش پروژه محور سی شارپ,آموزش مقدماتی تا پیشرفته سی شارپ,طراحی نرم افزار تحت ویندوز

آموزش برنامه نویسی سی شارپ

زبان شی گرایی حرفه ای سی شارپ یک زبان قدرتمند برای طراحی نرم افزار به شمار میرود.

999,000 تومان

2.2k بازدید

ارسال دیدگاه

برای ارسال نظر لطفا ورود یا ثبت نام کنید.