برنامه نویسی شی گرا را با کلاس ها و اشیاء در سی شارپ کاوش کنید.
برنامه نویسی شی گرا یکی از محبوب ترین پارادایم های برنامه نویسی است. این به این دلیل است که داده ها و توابع را مدل سازی می کند و به شما امکان می دهد در مورد اشیاء دنیای واقعی فکر کنید. کلاس ها جنبه اساسی برنامه نویسی شی گرا هستند زیرا طرح اولیه مورد نیاز برای ایجاد اشیاء را ارائه می دهند.
سی شارپ یک زبان برنامه نویسی چند پارادایم محبوب است که از پارادایم شی گرا استفاده می کند. در این مقاله با نحوه ایجاد و استفاده از کلاس ها در سی شارپ آشنا می شوید.
ایجاد یک اعلامیه کلاس
در سی شارپ، یک کلاس یک نوع مرجع است که تا زمانی که یک شی جدید از کلاس ایجاد کنید، حاوی مقدار null خواهد بود. برای ایجاد یک کلاس جدید در سی شارپ به چندین مؤلفه نیاز دارید:
- یک اصلاح کننده دسترسی
- کلمه کلیدی کلاس
- نامی که می خواهید به کلاس اختصاص دهید.
- یک جفت مهاربند مجعد باز و بسته (که صفات، سازندهها و متدهای کلاس را در بر میگیرد).
internal classCustomer{ }
کد بالا یک کلاس جدید ایجاد می کند که توسط کلاس های دیگر در همان اسمبلی قابل دسترسی است (فایل کامپایل). سی شارپ دقیقاً شش تغییر دهنده دسترسی دارد که می توانید از آنها برای کنترل سطوح دسترسی کلاس ها، متغیرها و متدهای خود استفاده کنید. شش اصلاح کننده دسترسی عبارتند از:
- public: هر کلاس (صرف نظر از اسمبلی آن) می تواند به کلاس عمومی و اعضای عمومی آن (ویژگی ها، سازنده ها و متدها) دسترسی داشته باشد.
- private: فقط کلاس خصوصی و اعضای آن می توانند به آن دسترسی داشته باشند.
- محافظت شده: فقط کلاس های مشتق شده (کلاس های فرزند و نوه) می توانند به کلاس محافظت شده دسترسی داشته باشند.
- داخلی: فقط کلاس های موجود در همان اسمبلی می توانند به کلاس داخلی دسترسی داشته باشند.
- محافظت داخلی: فقط کلاس های موجود در همان اسمبلی یا یک کلاس مشتق شده از اسمبلی دیگر می توانند به کلاس داخلی محافظت شده دسترسی داشته باشند.
- private protected: فقط کلاس های مشتق شده در یک اسمبلی می توانند به کلاس خصوصی محافظت شده دسترسی داشته باشند.
اعلام و دسترسی به ویژگی ها
ویژگی ها بلوک های سازنده کلاس هایی هستند که ایجاد می کنید. آنها داده های حساس را نگه می دارند و معمولاً یک اصلاح کننده دسترسی خصوصی یا محافظت شده دارند. بنابراین، برای دسترسی به این کلاسها از کلاسهای خارجی، باید از Accessorها و mutatorها (getters و setters) استفاده کنید.
سی شارپ به شما این امکان را میدهد تا ویژگیها، جهشیافتهها و دسترسیها را به صورت زیر اعلام کنید:
internal classCustomer
{
// attributes
privateint IdNumber;
private string Name;
privatedouble Total;
// setters
publicvoidSetIdNumber(int IdNumber) { this.IdNumber = IdNumber; }
publicvoidSetName(string Name) { this.Name = Name; }
publicvoidSetTotal(double Total) { this.Total = Total; }
// getters
publicintGetIdNumber() { returnthis.IdNumber; }
public string GetName() { returnthis.Name; }
publicdoubleGetTotal() { returnthis.Total; }
}
سایر زبان های شی گرا محبوب نیز از رویکرد بالا استفاده می کنند. در واقع، اگر می خواهید کلاس های جاوا ایجاد کنید، باید از ساختار بالا استفاده کنید. با این حال، سی شارپ اکنون راه سادهتری برای ایجاد ویژگیها و دسترسیها دارد. در سی شارپ، این کلاس همان عملکرد بالا را دارد:
internal classCustomer
{
public int IdNumber { get; set; }
public string Name { get; set; }
public double Total { get; set; }
}
کلاس بالا حاوی چیزی است که سی شارپ خواص می نامد که ترکیبی از ویژگی ها (فیلدها) و متدها است. با ویژگیها، میتوانید اعلان ویژگی، جهشدهندهها و کد دسترسیها را به نصف کاهش دهید.
اعلام سازندگان
سازنده ها یکی دیگر از جنبه های اساسی یک کلاس هستند. برای ایجاد یک شی از یک کلاس، باید یکی از سازنده های آن را فراخوانی کنید. هر سازنده یک اصلاح کننده دسترسی اختیاری و همنام کلاس خود دارد. برای زبان های برنامه نویسی شی گرا، به طور کلی سه نوع سازنده وجود دارد:
- سازنده پیشفرض: هیچ آرگومان نمیگیرد و برای هر ویژگی یک مقدار پیشفرض ارائه میکند.
- سازنده اولیه: یک یا چند آرگومان (بسته به تعداد متغیرهای کلاس) می گیرد.
- Copy constructor: سازنده دیگری را به عنوان آرگومان می گیرد.
سی شارپ دارای یک اصطلاح چتر برای سازنده های پیش فرض و اصلی بالا – سازنده های نمونه است. این زبان برنامه نویسی دو سازنده دیگر نیز دارد (خصوصی و استاتیک). این مقاله بر روی سه سازنده سنتی تمرکز دارد.
سازنده پیش فرض
// default constructor
public Customer()
{
IdNumber = 0;
Name = "unknown";
Total = 0;
}
سازنده اولیه
// primary constructor
publicCustomer(int IdNumber, string Name, string CustomerType, double Total)
{
this.IdNumber = IdNumber;
this.Name = Name;
this.Total = Total;
}
سازنده کپی
// copy constructor
public Customer(Customer previousCustomer)
{
this.IdNumber = previousCustomer.IdNumber;
this.Name = previousCustomer.Name;
this.Total = previousCustomer.Total;
}
روش های ایجاد
متدها جزء مهم کلاس نیستند، اما مفید هستند. یک کلاس می تواند یک یا چند متد داشته باشد. یک متد دارای یک اصلاح کننده دسترسی، یک نوع بازگشتی، یک نام و یک بدنه است.
// method
public string CustomerDetail()
{
return" ID: " + IdNumber + " Name: " + Name + " Total: " + Total;
}
کد بالا یک نمایش رشته ای از شی مشتری را برمی گرداند.
ایجاد اشیاء
پس از ایجاد یک کلاس کامل، تجهیز آن به ویژگی ها، سازنده ها و یک متد، می توانید با استفاده از سازنده های مختلف شروع به ایجاد اشیا کنید. برای ایجاد یک شی بدون ویژگی، می توانید از سازنده پیش فرض استفاده کنید:
Customer John = new Customer();
خط کد بالا یک مشتری پیش فرض ایجاد می کند و آن را به متغیری به نام John اختصاص می دهد. با جان، می توانید به مقدار پیش فرض هر ویژگی مشتری دسترسی داشته باشید.
Console.WriteLine(John.Name);
اجرای کد بالا موارد زیر را در کنسول چاپ می کند:
Unknown
همچنین می توانید از متغیر John برای دسترسی به هر متد در کلاس مشتری استفاده کنید.
Console.WriteLine(John.CustomerDetail());
اجرای خط کد بالا خروجی زیر را در کنسول چاپ می کند:
ID: 0 Name: unknown Total: 0
برای ایجاد یک شی با ویژگی ها، از سازنده اصلی استفاده می کنید:
Customer John = new Customer(1001, "John Doe", 250.20);
Console.WriteLine(John.CustomerDetail());
با اجرای کد بالا خروجی زیر در کنسول چاپ می شود:
ID: 1001 Name: JohnDoeTotal: 250.2
برای ایجاد یک کپی از شی بالا می توانید از سازنده کپی استفاده کنید:
Customer Johnny = new Customer(John);
Console.WriteLine(Johnny.CustomerDetail());
با اجرای کد بالا خروجی زیر در کنسول چاپ می شود:
ID: 1001 Name: JohnDoeTotal: 250.2
همانطور که می بینید سازنده کپی یک کپی از سازنده اولیه است. سازنده کپی همچنین می تواند یک سازنده پیش فرض را به عنوان آرگومان بگیرد:
Customer John = new Customer();
Customer Johnny = new Customer(John);
Console.WriteLine(Johnny.CustomerDetail());
با اجرای کد بالا خروجی زیر در کنسول چاپ می شود:
ID: 0 Name: unknown Total: 0
اکنون می توانید کلاس های C# ایجاد و استفاده کنید
می توانید از پارادایم شی گرا در سی شارپ برای تعریف کلاس ها و ایجاد اشیاء از آنها استفاده کنید. میتوانید برای هر کلاس متدهایی ایجاد کنید که میتوانند روی ویژگیهای اشیاء آنها کار کنند.
با این حال، پارادایم شی گرا تنها موردی نیست که باید با آن آشنا باشید. سه پارادایم اصلی برنامه نویسی ضروری، شی گرا و کاربردی هستند.