سطح دسترسی Private (خصوصی) در سی شارپ

تیم تحریریه 1403/12/13 0 63
لینک کوتاه https://zoheirsoftware.com/z/d0f29bd46 |
سطح دسترسی Private (خصوصی) در سی شارپ,مزایای استفاده از سطح دسترسی Private ,تفاوت میان Private و سایر سطوح دسترسی

تعریف سطح دسترسی Private در سی‌شارپ

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

این ویژگی کپسوله‌سازی (Encapsulation) را تقویت می‌کند و از تغییر مستقیم داده‌ها توسط کلاس‌های دیگر جلوگیری می‌کند.

به‌طور پیش‌فرض، فیلدهای یک کلاس اگر سطح دسترسی مشخص نداشته باشند، private در نظر گرفته می‌شوند.

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

برای دسترسی کنترل‌شده، می‌توان متدهای public یا protected را به‌عنوان واسط ارائه کرد.

به‌عنوان مثال

class User {
    private string password;

    public void SetPassword(string pass) {
        password = pass;
    }

    public string GetPassword() {
        return "Access Denied!";
    }
}


در این مثال، مقدار password فقط داخل کلاس User قابل تغییر است، اما دسترسی به آن از طریق متدهای public کنترل می‌شود. 

 

تعریف سطح دسترسی Private در سی‌شارپ

 

مزایای استفاده از سطح دسترسی Private 

  • حفاظت از داده‌ها

    جلوگیری از تغییر داده‌ها یا متغیرهای کلاس به‌طور مستقیم از خارج از کلاس.
  • کنترل دسترسی

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

    پنهان کردن جزئیات داخلی کلاس باعث می‌شود که کد تمیزتر و خواناتر باشد.

 

مزایای استفاده از سطح دسترسی Private 

 

نحوه تعریف سطح دسترسی Private در سی‌شارپ

در سی‌شارپ، برای تعریف یک عضو کلاس با سطح دسترسی Private، از کلمه کلیدی private استفاده می‌کنیم. این کلمه کلیدی قبل از نوع داده عضو قرار می‌گیرد.

مثال

public class Car

{

    private string model;  // متغیر خصوصی




    public void SetModel(string modelName)

    {

        model = modelName;  // فقط داخل کلاس قابل دسترسی است

    }




    public string GetModel()

    {

        return model;  // فقط داخل کلاس قابل دسترسی است

    }

}

در این مثال، متغیر model به عنوان یک عضو خصوصی (Private) در کلاس Car تعریف شده است.

این متغیر از خارج از کلاس قابل دسترسی نیست و فقط از طریق متدهای عمومی مانند SetModel و GetModel می‌توان به آن دسترسی پیدا کرد.

 

 

 

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

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

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

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

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

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

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

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

 

 

 

مثال‌های کاربردی از سطح دسترسی Private 

مثال 1: محدود کردن دسترسی به ویژگی‌ها

فرض کنید می‌خواهیم یک کلاس بانک بسازیم که موجودی حساب را نگه دارد.

اگر موجودی حساب به طور مستقیم از خارج تغییر کند، این ممکن است منجر به ایجاد مشکلات امنیتی یا منطقی شود.

بنابراین، برای محافظت از این داده‌ها، آن را خصوصی تعریف می‌کنیم.

public class BankAccount

{

    private double balance;  // موجودی حساب به صورت خصوصی




    public void Deposit(double amount)

    {

        if (amount > 0)

        {

            balance += amount;  // فقط داخل کلاس می‌توانیم موجودی را تغییر دهیم

        }

    }




    public double GetBalance()

    {

        return balance;  // می‌توانیم موجودی را مشاهده کنیم

    }

}

در اینجا، موجودی حساب (balance) به صورت خصوصی تعریف شده است و تنها از طریق متدهای عمومی مانند Deposit و GetBalance می‌توان به آن دسترسی داشت.

 

مثال 2: جلوگیری از دسترسی مستقیم به داده‌های داخلی

فرض کنید که می‌خواهیم یک کلاس برای مدل‌سازی دانش‌آموزان بنویسیم.

نام و سن دانش‌آموزان باید به‌صورت خصوصی باشند و فقط از طریق متدهایی مانند SetName و SetAge قابل تغییر باشند.

public class Student

{

    private string name;  // نام به صورت خصوصی

    private int age;      // سن به صورت خصوصی




    public void SetName(string studentName)

    {

        name = studentName;  // تغییر نام تنها از طریق این متد امکان‌پذیر است

    }




    public string GetName()

    {

        return name;  // مشاهده نام از طریق این متد

    }




    public void SetAge(int studentAge)

    {

        if (studentAge > 0)

        {

            age = studentAge;  // تغییر سن تنها از طریق این متد امکان‌پذیر است

        }

    }




    public int GetAge()

    {

        return age;  // مشاهده سن از طریق این متد

    }

}

در این مثال، متغیرهای name و age از خارج از کلاس به هیچ عنوان قابل دسترسی یا تغییر نیستند.

برای دسترسی به آن‌ها، باید از متدهای عمومی استفاده کنیم.

 

تفاوت میان Private و سایر سطوح دسترسی

در سی‌شارپ، علاوه بر سطح دسترسی Private، چندین سطح دسترسی دیگر نیز وجود دارند که عبارتند از:

  • Public

    اعضای Public از هر جایی در برنامه قابل دسترسی هستند.
  • Protected

    اعضای Protected تنها از داخل کلاس و از کلاس‌های مشتق‌شده (subclasses) قابل دسترسی هستند.
  • Internal

    اعضای Internal فقط در داخل همان اسمبلی (assembly) قابل دسترسی هستند.
  • Protected Internal

    اعضای Protected Internal هم از داخل کلاس‌های مشتق‌شده و هم از داخل همان اسمبلی قابل دسترسی هستند.
  • Private Protected

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

 

استفاده از Private در شی‌گرایی

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

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

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

اینگونه محافظت‌ها با استفاده از سطح دسترسی Private اعمال می‌شوند.

 

استفاده از Private در شی‌گرایی

مثال پروژه محور از سطح دسترسی Private 

پروژه: سیستم مدیریت حساب بانکی

ویژگی‌ها:

  • اطلاعات حساب (مانند موجودی) خصوصی است.

  • متدهای واریز و برداشت از موجودی به‌طور امن انجام می‌شوند.

  • متدهایی برای دریافت موجودی حساب وجود دارد.

کد پروژه:

using System;

public class BankAccount

{

    // متغیر خصوصی برای نگهداری موجودی حساب

    private double balance;

    // سازنده برای ایجاد حساب جدید با موجودی اولیه

    public BankAccount(double initialBalance)

    {

        if (initialBalance >= 0)

        {

            balance = initialBalance;

        }

        else

        {

            Console.WriteLine("موجودی اولیه نمی‌تواند منفی باشد.");

        }

    }

    // متد برای واریز مبلغ به حساب

    public void Deposit(double amount)

    {

        if (amount > 0)

        {

            balance += amount;

            Console.WriteLine($"مبلغ {amount} به حساب شما واریز شد.");

        }

        else

        {

            Console.WriteLine("مبلغ واریز باید مثبت باشد.");

        }

    }

    // متد برای برداشت مبلغ از حساب

    public void Withdraw(double amount)

    {

        if (amount > 0 && amount <= balance)

        {

            balance -= amount;

            Console.WriteLine($"مبلغ {amount} از حساب شما برداشت شد.");

        }

        else

        {

            Console.WriteLine("مبلغ برداشت باید مثبت و کمتر از موجودی حساب باشد.");

        }

    }

    // متد برای نمایش موجودی حساب

    public double GetBalance()

    {

        return balance;

    }

}

public class Program

{

    public static void Main()

    {

        // ایجاد یک حساب بانکی با موجودی اولیه 1000

        BankAccount account = new BankAccount(1000);

        // واریز مبلغ به حساب

        account.Deposit(500);
       
        // برداشت مبلغ از حساب

        account.Withdraw(200);

        // نمایش موجودی حساب

        Console.WriteLine($"موجودی فعلی حساب: {account.GetBalance()}");

    }

}

توضیحات:

  • متغیر balance به‌عنوان یک متغیر Private تعریف شده است، بنابراین فقط از داخل کلاس BankAccount قابل دسترسی است.

  • متدهای Deposit و Withdraw برای واریز و برداشت پول از حساب استفاده می‌شوند و تنها از طریق این متدها می‌توان موجودی حساب را تغییر داد.

  • متد GetBalance موجودی حساب را به‌صورت امن برای نمایش گرفتن به کاربران ارائه می‌دهد.

نتیجه اجرای برنامه:

مبلغ 500 به حساب شما واریز شد.

مبلغ 200 از حساب شما برداشت شد.

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

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

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

999,000 تومان

2.5k بازدید

ارسال دیدگاه

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