دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
Class Library در سی شارپ
1404/01/10 -
دستور BREAK در پایگاه داده sql
1404/01/02 -
دستور CONTINUE در پایگاه داده SQL
1404/01/01 -
دستور WAITFOR در پایگاه داده SQL
1403/12/26 -
دستور GOTO در پایگاه داده SQL
1403/12/25 -
حلقه WHILE در پایگاه داده SQL
1403/12/24
کپسوله سازی (Encapsulation) در سی شارپ

کپسولهسازی (Encapsulation) در سی شارپ
کپسولهسازی (Encapsulation) یکی از اصول مهم برنامهنویسی شیگرا (OOP) در سیشارپ است که برای مخفیسازی دادهها و کنترل دسترسی به اعضای کلاس استفاده میشود.
در این روش، فیلدهای کلاس معمولاً بهصورت private تعریف میشوند تا از تغییرات مستقیم خارج از کلاس جلوگیری شود.
سپس، با استفاده از متدهای عمومی (public) یا ویژگیها (properties)، امکان مشاهده یا تغییر دادهها بهصورت کنترلشده فراهم میشود.
این کار باعث افزایش امنیت، انسجام (cohesion) و کاهش وابستگی (coupling) در برنامه میشود.
با استفاده از کپسولهسازی، میتوان قوانین و محدودیتهایی برای مدیریت دادهها تعریف کرد، مثلاً بررسی کرد که یک مقدار معتبر باشد یا مانع از دسترسی غیرمجاز به اطلاعات حساس شد.
این رویکرد علاوه بر بهبود خوانایی و نگهداری کد، باعث میشود تغییرات داخلی کلاس بدون تأثیر بر سایر بخشهای برنامه انجام شود.
در نتیجه، کپسولهسازی به افزایش پایداری و امنیت کد کمک کرده و از بروز خطاهای ناخواسته در برنامه جلوگیری میکند.
کپسولهسازی چیست؟
کپسولهسازی (Encapsulation) یکی از مفاهیم اصلی برنامهنویسی شیگرا (OOP) است که برای مخفی کردن جزئیات پیادهسازی و کنترل دسترسی به دادهها در کلاسها استفاده میشود.
در این روش، متغیرهای یک کلاس بهصورت خصوصی (private) تعریف میشوند و دسترسی به آنها فقط از طریق متدهای عمومی (public methods) یا ویژگیها (Properties) امکانپذیر است.
چرا به کپسولهسازی نیاز داریم؟
-
افزایش امنیت دادهها
جلوگیری از تغییر مستقیم متغیرها و کنترل دقیق بر دادهها. -
ایجاد یکپارچگی در دادهها
کنترل مقداردهی و اعتبارسنجی دادهها قبل از ذخیرهسازی. -
کاهش وابستگی کلاسها
تغییرات داخلی یک کلاس بر سایر کلاسها تأثیر نمیگذارد. -
تسهیل نگهداری و توسعه کد
با جداسازی بخشهای مختلف کد، تغییرات راحتتر اعمال میشوند. -
مخفیسازی جزئیات پیادهسازی
کاربران کلاس نیازی به دانستن نحوه عملکرد داخلی آن ندارند.
کپسولهسازی با استفاده از Access Modifier
در سی شارپ، برای پیادهسازی کپسولهسازی از سطوح دسترسی (Access Modifiers) استفاده میشود. مهمترین سطوح دسترسی عبارتاند از:
-
private
فقط درون همان کلاس قابل دسترسی است. -
public
از هر جای برنامه قابل دسترسی است. -
protected
فقط در کلاس پایه و کلاسهای مشتقشده قابل استفاده است. -
internal
فقط درون همان اسمبلی (Assembly) قابل دسترسی است. -
protected internal
ترکیبی از protected و internal، فقط در همان اسمبلی یا کلاسهای مشتقشده قابل استفاده است.
مثال کپسولهسازی با استفاده از private و public
using System;
class Person
{
private string name; // متغیر خصوصی (Encapsulated Data)
public void SetName(string newName)
{
if (!string.IsNullOrEmpty(newName))
{
name = newName;
}
else
{
Console.WriteLine("نام نمیتواند خالی باشد.");
}
}
public string GetName()
{
return name;
}
}
class Program
{
static void Main()
{
Person person = new Person();
person.SetName("Ali Rezaei");
Console.WriteLine("نام شخص: " + person.GetName());
}
}
نتیجه اجرا
نام شخص: Ali Rezaei
در این مثال، متغیر name بهصورت private تعریف شده است و دسترسی مستقیم به آن امکانپذیر نیست.
مقدار آن فقط از طریق متدهای SetName و GetName قابل تنظیم و خواندن است.
کپسولهسازی با استفاده از Properties
ویژگیها (Properties) در سی شارپ یک روش استانداردتر برای کنترل خواندن و نوشتن متغیرهای خصوصی هستند.
ویژگیها به جای استفاده از متدهای Get و Set، از get و set برای کنترل مقدار متغیرهای خصوصی استفاده میکنند.
مثال کپسولهسازی با Properties
using System;
class Person
{
private string name;
public string Name
{
get { return name; }
set
{
if (!string.IsNullOrEmpty(value))
name = value;
else
Console.WriteLine("نام نمیتواند خالی باشد.");
}
}
}
class Program
{
static void Main()
{
Person person = new Person();
person.Name = "Sara Ahmadi"; // مقداردهی
Console.WriteLine("نام شخص: " + person.Name); // خواندن مقدار
}
}
نتیجه اجرا
نام شخص: Sara Ahmadi
در این روش، **ویژگی **Name بهصورت public تعریف شده، اما مقداردهی آن فقط درصورتی انجام میشود که مقدار معتبر باشد.
آیا به دنبال یک فرصت عالی برای یادگیری برنامهنویسی هستید؟ 🚀
با دوره آموزشی سیشارپ ما، شما میتوانید مهارتهای خود را به سطح جدیدی ارتقا دهید! این دوره بهطور کامل طراحی شده تا به شما کمک کند تا از مبتدی تا پیشرفته در دنیای برنامهنویسی سیشارپ پیش بروید.
👨🏫 چرا دوره ما را انتخاب کنید؟
- محتوای جامع و عملی: با پروژههای واقعی و تمرینات عملی، یادگیری را به تجربهای جذاب تبدیل کنید.
- مدرس مجرب: از تجربه و دانش مدرس حرفهای بهرهمند شوید که شما را در هر مرحله از یادگیری راهنمایی میکنند.
- پشتیبانی ۲۴/۷: هر زمان که سوالی داشتید، ما در کنار شما خواهیم بود تا به شما کمک کنیم.
- دسترسی مادامالعمر: به محتوای دوره دسترسی دائمی داشته باشید و هر زمان که خواستید، میتوانید به آن مراجعه کنید.
💡 فرصت را از دست ندهید!
بایادگیری سیشارپ، میتوانید در دنیای فناوری اطلاعات به یک متخصص تبدیل شوید و در پروژههای جذاب و چالشبرانگیز شرکت کنید.
همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آیندهای روشنتر بردارید!
شرکت در دوره آموزش برنامه نویسی سی شارپ
کپسولهسازی با استفاده از Auto-Implemented Properties
در سی شارپ میتوان ویژگیها را بهصورت خودکار (Auto-Implemented Properties) تعریف کرد، که باعث کاهش کدهای اضافی میشود:
class Person
{
public string Name { get; set; } // بدون نیاز به متغیر خصوصی
}
در این حالت، سی شارپ بهطور خودکار یک متغیر خصوصی برای Name ایجاد میکند و get و set را پیادهسازی میکند.
مثال پروژهمحور از کپسولهسازی در زبان سی شارپ
در اینجا یک مثال پروژهمحور از کپسولهسازی (Encapsulation) در زبان سی شارپ آورده شده است.
این مثال شامل یک کلاس BankAccount است که اطلاعات حساب بانکی را مدیریت میکند.
ویژگیهای مثال
- استفاده از فیلدهای خصوصی (private) برای پنهانسازی دادهها
- استفاده از متدهای عمومی (public) برای دسترسی ایمن به دادهها
- جلوگیری از تغییر مستقیم موجودی حساب
کد
using System;
class BankAccount
{
// فیلدهای خصوصی (Encapsulation)
private string accountNumber;
private double balance;
// سازنده کلاس
public BankAccount(string accNumber, double initialBalance)
{
accountNumber = accNumber;
balance = initialBalance;
}
// متد برای واریز وجه
public void Deposit(double amount)
{
if (amount > 0)
{
balance += amount;
Console.WriteLine($"✅ {amount} تومان به حساب اضافه شد. موجودی فعلی: {balance}");
}
else
{
Console.WriteLine("❌ مبلغ وارد شده معتبر نیست.");
}
}
// متد برای برداشت وجه
public void Withdraw(double amount)
{
if (amount > 0 && amount <= balance)
{
balance -= amount;
Console.WriteLine($"✅ {amount} تومان از حساب برداشت شد. موجودی فعلی: {balance}");
}
else
{
Console.WriteLine("❌ مبلغ وارد شده نامعتبر است یا موجودی کافی نیست.");
}
}
// متد برای نمایش موجودی حساب (Read-Only)
public void ShowBalance()
{
Console.WriteLine($"📢 شماره حساب: {accountNumber} | موجودی: {balance} تومان");
}
}
class Program
{
static void Main()
{
// ایجاد یک حساب جدید
BankAccount myAccount = new BankAccount("123456789", 100000);
// نمایش موجودی اولیه
myAccount.ShowBalance();
// واریز و برداشت وجه
myAccount.Deposit(50000);
myAccount.Withdraw(30000);
myAccount.Withdraw(200000); // مقدار نامعتبر
// نمایش موجودی نهایی
myAccount.ShowBalance();
}
}
توضیحات کد
- کپسولهسازی: فیلدهای accountNumber و balance خصوصی هستند تا از تغییرات مستقیم خارج از کلاس جلوگیری شود.
- متدهای عمومی: متدهای Deposit، Withdraw و ShowBalance برای تعامل ایمن با دادهها استفاده شدهاند.
- کنترل دادهها: از شرطها برای اطمینان از معتبر بودن مقدارهای واریز و برداشت استفاده شده است.
خروجی نمونه
📢 شماره حساب: 123456789 | موجودی: 100000 تومان
✅ 50000 تومان به حساب اضافه شد. موجودی فعلی: 150000
✅ 30000 تومان از حساب برداشت شد. موجودی فعلی: 120000
❌ مبلغ وارد شده نامعتبر است یا موجودی کافی نیست.
📢 شماره حساب: 123456789 | موجودی: 120000 تومان
دوره های مرتبط

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