در دنیای برنامه نویسی شی گرا ، یک کلاس دارای تعدادی مشخص فیلد ، صفت ، رویداد و متد است. یک کلاس انواع داده و عملکرد هایی که اشیا دارند را مشخص میکند.
یک کلاس مانند نقشه ای کامل از یک شی مشخص است. در جهان واقعی هر شی ایی دارای یک سری خصوصیات مانند رنگ ، شکل و نوع عملکرد است. برای مثال شما یک اتومبیل فراری را درنظر بگیرید. فراری یک شی از نوع اتومبیل است و اتومبیل در اینجا نقش کلاس را برای ما بازی میکند. یک کلاس اتومبیل میتواند دارای خصوصیات معینی مانند سرعت ، رنگ و شکل باشد.
بنابراین هر شرکت خودرو سازی که یک اتومبیل را با ویژگی های مورد نظرش تولید کند، شی ایی از یک اتومبیل را ساخته است. با این اوصاف اتومبیل های فراری ، لامبورگینی و کادیلاک همگی شی ایی از کلاس اتومبیل هستند.
در دنیای برنامه نویسی شی گرا ، یک کلاس دارای تعدادی مشخص فیلد ، صفت ، رویداد و متد است. یک کلاس انواع داده و عملکرد هایی که اشیا دارند را مشخص میکند. در یک کلاس میتوانید نوع مورد نظر خود را از طریق گروه بندی متغیر ها و دیگر انواع ایجاد کنید.
در زبان برنامه نویسی #C(سی شارپ) یک کلاس میتواند با استفاده از کلمه ی رزرو شده ی class
تعریف شود :
public class Customer
{
//Fields, properties, methods and events go here...
}
در نمونه مثال فوق قبل از کلمه ی class از کلمات رزرو شده ی سطوح دسترسی استفاده شده است. و چون در این مورد از کلمه ی public استفاده شده ، هر کسی میتواند شی ایی از این کلاس را ایجاد کند. به دنبال کلمه ی class نام دلخواه کلاس (Customer) قرار گرفته است. باقی مانده ی تعریف یک کلاس بدنه ی آن است که داده ها و رفتار های کلاس در آن تعریف میشود. فیلد ها ، صفات ، متد ها و رویداد ها در مجموع اعضای کلاس را تشکیل میدهند.
اگرچه یک شی (object) و کلاس در مواقعی به عنوان جایگزینی برای هم دیگر استفاده میشوند ، در واقع آنها دو چیز متفاوت هستند. یک کلاس نوع یک شی را مشخص میکند. گاهی اوقات از شی به عنوان نمونه ایی از یک کلاس یاد میشود. اشیا میتوانند با استفاده از کلمه ی رزرو شده ی new که به دنبال آن نام کلاس می آید تعریف شوند :
Customer object1 = new Customer();
وقتی نمونه ای از یک کلاس ایجاد میشود ، ارجاع آن به یک شی توسط برنامه نویس انجام میشود. در نمونه مثال قبل object1 با مقداردهی به شی ایی از نوع customer ارجاع پیدا کرده است.
در زیر نمونه مثالی آورده شده است که اعضای کلاس در آن مشخص شده اند :
public class MyClass
{
public string myField = string.Empty;
public MyClass()
{
}
public void MyMethod(int parameter1, string parameter2)
{
Console.WriteLine("First Parameter {0}, second parameter {1}",
parameter1, parameter2);
}
public int MyAutoImplementedProperty { get; set; }
private int myPropertyVar;
public int MyProperty
{
get { return myPropertyVar; }
set { myPropertyVar = value; }
}
}
در نمونه مثال بالا کلاسی به نام MyClass
ایجاد شده است که دارای فیلد ، صفت و متد است.
قسمت های مهمی که در نمونه کد بالا آمده است در شکل زیر مشخص شده اند :
در زیر به طور جداگانه به بررسی هر کدام از این قسمت های مهم خواهیم پرداخت.
سطوح دسترسی کلمات رزرو شده ای هستند که بر روی اعلان یک کلاس ، متد ، صفت ، فیلد و دیگر اعضای یک کلاس میتوانند اعمال شوند.
کلمات رزرو شده برای سطوح دسترسی در زبان سی شارپ عبارت اند از :
public
private
protected
internal
این کلمات، چگونگی و سطح دسترسی یک کلاس و یا اعضای آن را در برنامه مشخص میکنند. برای آشنایی بیشتر با آنها به فصل کلمات رزرو شده در سی شارپ رجوع کنید.
متغیری که در سطح یک کلاس تعریف میشود فیلد نامیده میشود. فیلد ها میتوانند مقادیری از یک نوع مشخص را در خود نگه دارند. عموما فیلد ها در کلاس دارای سطح دسترسی private
(فقط قابل دسترسی در محدوده ی همان کلاس ) هستند و در صفت ها (property) استفاده میشوند.
یک کلاس میتواند دارای سازنده های پارامتر دار و یا بدون پارامتر باشد. سازنده ها در هنگام تعریف یک شی از یک کلاس فراخوانی میشوند. سازنده ها به وسیله ی یک کلمه ی سطح دسترسی و کلمه ای که همنام با نام کلاس باشند تعریف میشوند :
class MyClass
{
public MyClass()
{
}
}
یک متد در زبان برنامه نویسی سی شارپ میتواند به شکل الگوی زیر تعریف شود :
{access modifier} {return type} MethodName({parameterType parameterName})
public void MyMethod(int parameter1, string parameter2)
{
// write your method code here..
}
یک صفت میتواند با استفاده از کلمات رزرو شده ی get
و set
مانند نمونه کد زیر ایجاد شود :
private int _myPropertyVar;
public int MyProperty
{
get { return _myPropertyVar; }
set { _myPropertyVar = value; }
}
دقت داشته باشید که در یک صفت از یک فیلد استفاده میشود. در نمونه مثال بالا با توجه به تعریف صفت MyProperty
، هر گاه بخواهیم مقدار این صفت را بدست آوریم مقدار فیلد myPropertyVar_
به ما نشان داده میشود و هرگاه این صفت را مقدار دهی کنیم این مقدار در فیلد myPropertyVar_
قرار میگیرد.
عموما صفات در زبان #C دارای سطح دسترسی public
(قابل دسترسی در خارج از محدوده ی کلاس) هستند. به عبارت دیگر فیلد myPropertyVar_
در خارج از کلاس به طور غیر مستقیم از طریق صفت MyProperty
قابل دسترسی است.
نکته : الزامی برای وجود هر دو کلمه ی رزرو شده ی get
و set
در تعریف یک صفت وجود ندارد. برای مثال اگر صفتی فقط داری قسمت get باشد آن صفت فقط خواندنی است. حتی میتوان منطقی خاص را در قسمت های get
و set
برای یک صفت به کار برد.
در نمونه مثال زیر در هنگام خوانده شدن مقدار صفت، همیشه نیمی از فیلد مورد نظر، نشان داده میشود و در هنگام مقدار دهی نیز مقادیر بزرگتر از 100 در فیلد مربوطه قرار نمیگیرد.
private int _myPropertyVar;
public int MyProperty
{
get {
return _myPropertyVar / 2;
}
set {
if (value > 100)
_myPropertyVar = 100;
else
_myPropertyVar = value; ;
}
}
از زمان انتشار #C نسخه 3.0 تعاریف صفات ساده تر شد. این برای زمانی است که نیاز به اعمال منطق خاصی در صفت خود نداریم.
نمونه مثال زیر یک صفت Auto-implemented را نشان میدهد :
public int MyAutoImplementedProperty { get; set; }
دقت داشته باشید که هیچ فیلدی برای این صفت تعریف نشده است. یک فیلد به صورت ضمنی بعدا توسط کامپایلر ایجاد شده و این نوع صفات را مدیریت میکند.
با صفات Auto-implemented میتوان همانند یک صفت معمولی رفتار کرد و تا زمانی که منطقی نباشد تفاوتی با دیگر صفات ندارد.
یک فضای نام مکانی برای قرار گیری کلاس ها و یا مجموعه ای از فضای نام هاست. فضای نام را میتوان نام منحصر به فردی دانست که کلاس های داخل خود را از دیگر کلاس ها متمایز میکند. در زبان #C ، فضای نام میتواند با استفاده از کلمه ی رزرو شده ی namespace
تعریف شود :
namespace CSharpTutorials
{
class MyClass
{
}
}
در نمونه مثال بالا نام کامل کلاس MyClass به این شکل است : CSharpTutorials.MyClass.
یک فضای نام میتواند دیگر فضای نام ها را در خود نگه دارد. فضای نام های داخلی در هنگام دسترسی با کارکتر نقطه (.) مشخص میشوند.
namespace CSharpTutorials.Examples
{
class MyClassExample
{
}
}
در نمونه مثال بالا نام کامل کلاس MyClassExample به این شکل است : CSharpTutorials.Example.MyClassExample
دیدگاه ها
برای ارسال دیدگاه لازم است ابتدا وارد سایت شوید
آموزش سی شارپ
لرن سورس با هدف ایجاد یک مرجع کامل و جامع در زمینه آموزش دوره محور زبان های برنامه نویسی و وب پا به عرصه وب گذاشته است.
ما در لرن سورس همیشه سعی خواهیم کرد تا نیاز های آموزشی شما کاربران عزیز را در قالب آموزش های مختلف پاسخ دهیم.
با استفاده از لینک های زیر میتوانید به بخش های اصلی سایت دسترسی داشته باشید:
شما کاربران عزیز میتوانید با هر کدام از راه های ارتباطی زیر با تیم آموزشی لرن سورس در ارتباط باشید: