مفهوم public در سی شارپ
در سیشارپ،public یک اصلاحکننده دسترسی است که مشخص میکند کلاسها،متدها و ویژگیها از بخشهای مجاز دیگر برنامه قابل دسترسی باشند
20 مهر 1405
لینک کوتاه
مفهوم public در سیشارپ
در زبان برنامهنویسی سیشارپ (#C)، کلمه public یکی از مهمترین اصلاحکنندههای دسترسی (Access Modifier) است که برای مشخص کردن سطح دسترسی به کلاسها، متدها، متغیرها، ویژگیها و سایر اعضای برنامه استفاده میشود.به زبان ساده، public به این معناست که یک عضو برنامه از قسمتهای مجاز دیگر برنامه نیز قابل دسترسی است.
برای مثال، اگر متدی را با سطح دسترسی public تعریف کنیم، میتوانیم در شرایط مناسب از کلاسهای دیگر نیز آن متد را فراخوانی کنیم.
در برنامهنویسی شیءگرا، مدیریت دسترسی به اعضای کلاس اهمیت زیادی دارد؛ زیرا مشخص میکند کدام بخشهای برنامه اجازه استفاده از اطلاعات و قابلیتهای یک کلاس را دارند.
کلمه public چیست؟
کلمه public یک Access Modifier یا اصلاحکننده دسترسی است.اصلاحکنندههای دسترسی تعیین میکنند که کلاسها و اعضای آنها در چه محدودهای قابل مشاهده و استفاده باشند.
برای مثال، کد زیر یک کلاس ساده با یک متد عمومی را نشان میدهد:
public class Student
{
public void ShowName()
{
Console.WriteLine("نام دانشجو: علی");
}
}
در این مثال، کلاس Student با کلمه public تعریف شده است.
متد ShowName نیز دارای سطح دسترسی عمومی است.
بنابراین، در صورتی که کلاس از نظر ساختار پروژه قابل دسترسی باشد، میتوان از متد آن در بخشهای دیگر برنامه استفاده کرد.
آیا به دنبال یک فرصت عالی برای یادگیری برنامهنویسی هستید؟ 🚀با دوره آموزشی سیشارپ ما، شما میتوانید مهارتهای خود را به سطح جدیدی ارتقا دهید! این دوره بهطور کامل طراحی شده تا به شما کمک کند تا از مبتدی تا پیشرفته در دنیای برنامهنویسی سیشارپ پیش بروید.
👨🏫 چرا دوره ما را انتخاب کنید؟
- محتوای جامع و عملی: با پروژههای واقعی و تمرینات عملی، یادگیری را به تجربهای جذاب تبدیل کنید.
- مدرس مجرب: از تجربه و دانش مدرس حرفهای بهرهمند شوید که شما را در هر مرحله از یادگیری راهنمایی میکنند.
- پشتیبانی ۲۴/۷: هر زمان که سوالی داشتید، ما در کنار شما خواهیم بود تا به شما کمک کنیم.
- دسترسی مادامالعمر: به محتوای دوره دسترسی دائمی داشته باشید و هر زمان که خواستید، میتوانید به آن مراجعه کنید.
💡 فرصت را از دست ندهید!
بایادگیری سیشارپ، میتوانید در دنیای فناوری اطلاعات به یک متخصص تبدیل شوید و در پروژههای جذاب و چالشبرانگیز شرکت کنید.
همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آیندهای روشنتر بردارید!
استفاده از public برای تعریف کلاس
در سیشارپ میتوان از public برای تعریف کلاس استفاده کرد تا آن کلاس از محدودههای مجاز خارج از محل تعریف خود نیز قابل دسترسی باشد.مثال:
public class Car
{
public string Brand = "Toyota";
}
در این مثال، کلاس Car عمومی است و متغیر Brand نیز بهصورت عمومی تعریف شده است.
حالا میتوانیم از این کلاس در بخش دیگری از برنامه استفاده کنیم:
Car car = new Car();
Console.WriteLine(car.Brand);
خروجی:
Toyota
در اینجا، ابتدا یک شیء از کلاس Car ساختهایم و سپس مقدار ویژگی عمومی Brand را نمایش دادهایم.
نکته مهم این است که عمومی بودن کلاس بهتنهایی کافی نیست؛ سایر شرایط دسترسی، مانند فضای نام، اسمبلی و نحوه تعریف نوع نیز باید رعایت شوند.
استفاده از public برای متدها
یکی از رایجترین کاربردهای public، تعریف متدهایی است که کلاسهای دیگر بتوانند آنها را فراخوانی کنند.مثال:
public class Calculator
{
public int Add(int a, int b)
{
return a + b;
}
}
در این مثال، کلاس Calculator دارای متد عمومی Add است.
این متد دو عدد دریافت میکند و مجموع آنها را برمیگرداند.
برای استفاده از این متد میتوانیم بنویسیم:
Calculator calculator = new Calculator();
int result = calculator.Add(10, 20);
Console.WriteLine(result);
خروجی:
30
از آنجا که متد Add عمومی است، کد فراخواننده میتواند به آن دسترسی داشته باشد؛ البته به شرط آنکه خود کلاس و سایر شرایط دسترسی نیز برقرار باشند.
استفاده از public برای ویژگیها (Properties)
در سیشارپ، ویژگیها یا Properties راهی برای ارائه دسترسی کنترلشده به دادههای یک کلاس هستند.مثال:
public class Person
{
public string Name { get; set; }
}
در این مثال، ویژگی Name عمومی است.
بخش get امکان خواندن مقدار و بخش set امکان تغییر مقدار را فراهم میکند.
استفاده از این کلاس:
Person person = new Person();
person.Name = "رضا";
Console.WriteLine(person.Name);
خروجی:
رضا
با وجود عمومی بودن ویژگی، میتوان دسترسی به مقدار آن را نیز محدود کرد.
برای مثال:
public string Name { get; private set; }
در این حالت، خواندن Name از بیرون کلاس امکانپذیر است، اما تغییر مستقیم آن از بیرون کلاس مجاز نیست.
مقدار ویژگی میتواند از داخل کلاس تغییر کند.
این روش به حفظ یکپارچگی دادهها کمک میکند.
تفاوت public و private در سی شارپ
دو مورد از پرکاربردترین اصلاحکنندههای دسترسی در سیشارپ، public و private هستند.کلمه public امکان دسترسی از بخشهای مجاز دیگر برنامه را فراهم میکند؛ اما private دسترسی را به همان نوع تعریفکننده محدود میکند.
مثال:
public class Account
{
public string Owner = "محمد";
private decimal balance = 5000;
public void ShowBalance()
{
Console.WriteLine(balance);
}
}
در این مثال، ویژگی Owner عمومی است؛ بنابراین میتوان از بیرون کلاس به آن دسترسی داشت.
اما متغیر balance خصوصی است و نمیتوان مستقیماً از بیرون کلاس به آن دسترسی پیدا کرد.
کد زیر مجاز است:
Account account = new Account();
Console.WriteLine(account.Owner);
account.ShowBalance();
ولی دستور زیر خطای دسترسی ایجاد میکند:
Console.WriteLine(account.balance);
علت این است که balance با کلمه private تعریف شده است.نکته: در پروژههای واقعی، بهتر است اطلاعات مهمی مانند موجودی حساب بانکی را از طریق متدها و ویژگیهای کنترلشده مدیریت کنیم.
آیا public امنیت اطلاعات را تضمین میکند؟
خیر. عمومی بودن یک عضو به این معنی نیست که اطلاعات آن از نظر امنیتی محافظت شدهاند.اگر اطلاعاتی مانند رمز عبور، کلیدهای محرمانه یا اطلاعات حساس را بهصورت عمومی در دسترس قرار دهیم، ممکن است طراحی برنامه با مشکل مواجه شود.
برای مثال:
public string Password = "123456";
این شیوه برای نگهداری رمز عبور مناسب نیست؛ زیرا اعضای عمومی میتوانند از محدودههای مجاز دیگر برنامه قابل دسترسی باشند.بهتر است اطلاعات حساس با طراحی مناسب، اعتبارسنجی ورودیها و سازوکارهای امنیتی صحیح مدیریت شوند.
همچنین باید توجه داشت که private بهتنهایی جایگزین رمزنگاری، احراز هویت یا سایر تدابیر امنیتی نیست.
استفاده از public در پروژههای چندکلاسه
در پروژههای بزرگ سیشارپ، معمولاً برنامه از چند کلاس تشکیل میشود.هر کلاس وظیفه مشخصی دارد و برای برقراری ارتباط میان کلاسها میتوان از اعضای عمومی استفاده کرد.
مثال:
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
}
کلاس دیگری میتواند از این کلاس استفاده کند:
public class Store
{
public void ShowProduct()
{
Product product = new Product();
product.Name = "Laptop";
product.Price = 45000000;
Console.WriteLine(product.Name);
Console.WriteLine(product.Price);
}
}
در این مثال، کلاس Store با استفاده از ویژگیهای عمومی کلاس Product اطلاعات محصول را تنظیم و نمایش میدهد.
این شیوه ارتباط میان کلاسها را سادهتر میکند و به سازماندهی بهتر کد کمک میکند.
تفاوت public با سایر اصلاحکنندههای دسترسی
سیشارپ اصلاحکنندههای دسترسی مختلفی دارد که هرکدام محدوده مشخصی را برای دسترسی تعیین میکنند.مهمترین آنها عبارتاند از:
-
public
دسترسی از هر محدودهای که از نظر زبان و ساختار برنامه مجاز باشد. -
private
دسترسی فقط در داخل نوع تعریفکننده. -
protected
دسترسی در داخل نوع تعریفکننده و انواع مشتقشده. -
internal
دسترسی در محدوده اسمبلی جاری. -
protected internal
دسترسی از داخل اسمبلی جاری یا از انواع مشتقشده در اسمبلیهای دیگر. -
private protected
دسترسی در نوع تعریفکننده و انواع مشتقشدهای که در همان اسمبلی قرار دارند.
آیا تعریف تمام اعضا بهصورت public درست است؟
خیر. اگر تمام اعضای یک کلاس را عمومی تعریف کنیم، ممکن است بخشهای مختلف برنامه بتوانند دادهها را بدون کنترل کافی تغییر دهند.برای مثال، در کلاس حساب بانکی بهتر است موجودی حساب مستقیماً از بیرون تغییر نکند.
میتوانیم بهجای آن، متدهایی برای واریز و برداشت تعریف کنیم:
public class BankAccount
{
public decimal Balance { get; private set; }
public void Deposit(decimal amount)
{
if (amount > 0)
{
Balance += amount;
}
}
}
در این کلاس، ویژگی Balance عمومی است، اما فقط امکان خواندن مستقیم آن از بیرون وجود دارد. تغییر مقدار از طریق متد Deposit انجام میشود.
متد نیز بررسی میکند که مبلغ واریزی مثبت باشد.
این طراحی از تغییر مستقیم موجودی توسط کدهای دیگر جلوگیری میکند و کنترل بیشتری روی رفتار کلاس فراهم میسازد.
البته در یک سیستم مالی واقعی، برای مدیریت موجودی باید کنترلهای بیشتری مانند تراکنشها، همزمانی و ثبت رویدادها نیز در نظر گرفته شود.
نکته مهم درباره public در سیشارپ
سطح دسترسی پیشفرض اعضای کلاس در سیشارپ معمولاً private است؛ بنابراین اگر برای یک متد یا فیلد داخل کلاس اصلاحکنندهای مشخص نکنیم، آن عضو بهصورت پیشفرض خصوصی خواهد بود.مثال:
public class Example
{
int number = 10;
public void Show()
{
Console.WriteLine(number);
}
}
در این مثال، متد Show عمومی است؛ اما فیلد number بهصورت پیشفرض خصوصی است.
همچنین سطح دسترسی پیشفرض برای یک کلاس سطح بالا که مستقیماً در فضای نام تعریف شده، معمولاً internal است؛ نه private.
به همین دلیل، لازم است تفاوت میان سطح دسترسی کلاس و سطح دسترسی اعضای آن را بدانیم.
جمعبندی
کلمه public در سیشارپ برای مشخص کردن اعضایی استفاده میشود که باید از محدودههای مجاز دیگر برنامه قابل دسترسی باشند. این کلمه را میتوان برای کلاسها، متدها، ویژگیها و سایر اعضای مناسب به کار برد.
استفاده صحیح از public ارتباط میان کلاسها را آسان میکند و امکان طراحی ساختارهای قابل استفاده مجدد را فراهم میسازد.
بااینحال، نباید همه اعضای کلاس را بدون دلیل عمومی تعریف کرد. بهتر است فقط قابلیتهایی که واقعاً باید در اختیار بخشهای دیگر برنامه قرار بگیرند عمومی باشند و اطلاعات داخلی کلاس تا حد امکان با سطح دسترسی مناسب محافظت شوند.
اگر مفهوم public را در کنار private، protected و internal یاد بگیرید، درک بهتری از کپسولهسازی و اصول برنامهنویسی شیءگرا در سیشارپ خواهید داشت.




کاربران ما
شما هم نظرتون با ما دریاره “مفهوم public در سی شارپ” اشتراک بزارید
برای ارسال نظر لطفا ورود یا ثبت نام کنید