ما در سایت تجاری اپ بخشی تحت عنوان مدرسه تجاری اپ در نظر گرفته ایم و قصد داریم در این بخش به آموزش آنلاین (در قالب پست) زبان های برنامه نویسی و نرم افزارهای مختلف بپردازیم.در ادامه ما آموزش شی گرایی را در در قالب چند قسمت به شما آموزش می دهیم،با ما همراه باشید.
در این آموزشات سعی شده با زبانی ساده شی گرایی را باز کرده و راجع به آن توضیحاتی مفید و کاربردی ارایه شود.
میتوان گفت بهترین مقدمه برای آشنایی بیشتر با شی گرایی درک کردن تفاوت بین دو مفهوم کلاس و شی(Object) میباشد چون در ادامه با این دو مفهوم بسیار کار خواهیم کرد و همچنین مفوم بسیار نزدیک به همی دارند.
برای توضیح کلاس Class)) میتوان گفت کلاس در واقع یک الگو یا تعریف یا حتی ساختار یک موجودیت میباشد و در مقابل شی یا Object یک نمونه یا Instance از نوع کلاس میباشد با خصوصیات و ویژگی های کلاس تعریف شده برای مثال میتوان گفت رضا اسدی یک شی از نوع کلاس انسان میباشد با خصوصیاتی (Property) مثل رنگ مو و رنگ چشم و قد و وزن و همچنین دارای رفتارهایی (Method) میباشد.
برای مثال
Int i;
در شبه کد فوق متغیر i تعریف شده از کلاس int بدین معنی که تمامی خصوصیات کلاس int که یک کلاس از پیش تعریف شده میباشد را دارا میباشد و در ادامه نیز اگر از این متغیر و یک دات (.) استفاده شود تمامی متدها و خصوصیاتی که در این کلاس تعریف شده میتوان دید. که در ادامه بیشتر توضیح خواهیم داد.
حال میخواهیم خود یک کلاس با ویژگی های مدنظر خود ایجاد کنیم برای اینکار ابتدا باید یک فایل Class ایجاد کنیم برای اینکار نیز باید بروی نام پروژه خود درقسمت Solution Explorer کلیک راست کرده سپس گزینه Add و سپس New Item را انتخاب کرده و در پنجره باز شده گزینه Class را انتخاب کرده و نام مورد نظر را تایپ کرده و در انتها نیز کلید Add را انتخاب کرد.
حال میتوان در محیط ایجاد شده میتوان یک کلاس یا حتی چندین کلاس ایجاد کرده اما توصیه میشود برای هر کلاس یک فایل کلاس ایجاد شود البته که میتوانید چندین کلاس را در یک فایل قرار داد اما در فایل های بزرگتر در ادامه کار ممکن است با مشکل مواجه شوید بدین دلیل برای هرکلاس یک فایل جدا مناسب تر خواهد بود همچنین نام فایل را با نام کلاس مشابه قرار دهید برنامه خوانایی بیشتری خواهد داشت.
حال میتوان درون کلاس انواع فیلدها و متد ها با سطوح دسترسی متفاوت(که در ادامه به طور مفصل آنهارا بررسی خواهیم کرد) ایجاد کرد اما قبل از ایجاد هرکدام از آنها باید با سطوح دسترسی آشنا شویم.
سطوح کنترل این توانایی را به برنامه نویس میدهد که تعیین کند هرکدام از فیلدها یا متدها ها در کدام قسمت قابل رویت و استفاده شوند.ما چهار سطح دسترسی داریم شامل Private , Protected , Public ,Internal میباشد که سطوح Public , Private از پرکاربردترین آنها میباشد که در این قسمت با این دو سطح کار خواهیم کرد و در ادامه دو سطح دیگر را شرح خواهیم داد.
سطح Public همانگونه که از نامش مشخص است به معنای عمومی میباشد و در تمام قسمت های برنامه میتوان از آن استفاده کرد برای درک بیشتر اگر ما فیلدی با نام Name از نوع String با نوع Public در فایل کلاس ایجاد کنیم مانند زیر
public string Name;
حال اگر به قسمت اصلی برنامه در Program.cs در قسمت main() یک شی از نوع کلاس مانند زیر ایجاد کنیم میتوانیم به این فیلد دسترسی پیدا کنیم
همانگونه که میبینید ما شیی با نام obj از کلاسی که قبلا ساخته ایم با نام Product ایجاد کرده ایم حال اگر نام شی ایجاد شده را نوشته سپس یک دات (.) قرار دهیم میتوان لیستی از خصوصیات قابل دسترس ببینیم که یکی از آنها فیلد Name میباشد که خود از نوع Public ایجاد کردیم اما ۴ متد دیگر نیز مشاهده میکنید که اینها متدهای از پیش تعریف شده در کلاس Object میباشد بدین معنی که اگر هیچ فیلد یا متدی در کلاس خود ایجاد نکنید این ۴ متد را هنگام ایجاد شی از کلاس خواهید دید.
حال اگر فیلدName را از نوع Private تعیین کرده بودیم در لیست تصویر فوق انرا نمیتوانستیم ببینیم و انتخاب کنیم بدین معنی که آنرا تنها میتوان در همان کلاس استفاده کنیم همچنین اگر هیچ سطح دسترسی برای فیلد تعیین نکنیم یعنی در کلاس بدین صورت بنویسیم
string Name;
باز هم به طور پیش فرض به صورت Private تعیین میشود.
به مثال زیر دقت کنید
static void Main(string[] args) { Product obj = new Product(); obj.Name = "T-shirt"; Console.WriteLine(obj.Name); Console.ReadKey(); }
مثال فوق نیز پس از ایجاد شی obj از نوع کلاس ایجاد شده به فراخوانی و مقدار دهی فیلد Name از کلاس پرداخته و در انتها نیز مقدار درون فیلد را به خروجی میفرستد و نمایش میدهد.
به مثال زیر توجه کنید.
ابتدا در قسمت کلاس بدین صورت کدنویسی میکنیم
class Product { public string Name; public void str() { Console.Write("Product "); } }
کدها فوق همانگونه که مشخص است فیلدی با نام Name و متدی با سطح Public و چون مقدار خروجی ندارد با نوع void و نام str ایجاد کرده ایم که رشته مشخص شده را به خروجی ارسال میکند.
حال در قسمت main برنامه چنین کدنویسی میکنیم
static void Main(string[] args) { Product obj = new Product(); Product obj2 = new Product(); obj.Name = "T-shirt"; obj2.Name = "Socks"; obj.str(); Console.WriteLine(obj.Name); obj2.str(); Console.WriteLine(obj2.Name); Console.ReadKey(); }
در مثال فوق نیز دو شی با نام های obj , obj2 از نوع کلاس ایجاد کرده ایم و مقدار فیلد Name هردو را مقدار دهی کرده ایم سپس متد str() ایجاد شده را برای هرکدام از اشیا فراخوانی میکنیم و مقدار فیلد را چاپ میکنیم و در پس از اجرا خروجی به شکل زیر خواهد بود.
Post source : tejariapp.com