برنامه نویسی شی گرا (OOP) Object-Oriented Programming
مفهوم کلاس (Class)
کلاس یک مفهوم پایهای بسیار مهم در برنامهنویسی شی گراست. کلاس یک بسته (blueprint) است که شامل تعدادی از ویژگیها (fields) و صفاتی است که یک شی میتواند داشته باشد و همچنین شامل تواناییها (methods)یی است که یک شی قادر به انجام آنهاست.
کلاس همچون یک قالب، نقشه و یا الگو عمل میکند و ویژگیهای عمومی اشیاء را تعیین میکند. کلاس به صورت مستقیم قابل استفاده نیست و باید از آن یک شیء (object) یا همان نمونه (instance) ساخت تا با کمک شیء بتوان از ویژگیها و قابلیتهای درون کلاس استفاده کرد.
در تعریف بالا اسم شی را بردیم؛ شیء چیست؟ شیء (Object) یک نمونه (instance) از کلاس است که هنگام استفاده از یک کلاس باید ابتدا یک شیء از آن کلاس را نمونهسازی (instantiate) کنیم.
( البته بعضی از کلاسها را نمیتوان نمونهسازی کرد که بعدا توضیح خواهیم داد )
حالا برویم سراغ ساخت یک کلاس. فرض کنید ما کلاسی میخواهیم داشته باشیم که تمام اعضای این کلاس باید یک نام و یک سن داشته باشند و بتوانند خودشان را معرفی کنند. همانطور که میبینید کلاس زیر این دو ویژگی و یک توانایی را دارد:
class Student
{
// (Fields) ویژگی ها و دادههایی که شیء نگهداری میکند
public string Name; // نام دانشجو
public int Age; // سن دانشجو
// متد سازنده (Constructor) - متدی خاص که هنگام ایجاد شیء اجرا میشود و ویژگیها را مقداردهی اولیه میکند
public Student(string name, int age)
{
Name = name;
Age = age;
}
// متد (Method) - رفتارهایی که شیء میتواند انجام دهد
public void Introduce()
{
Console.WriteLine($"سلام، من {Name} هستم و {Age} سال دارم.");
}
}
خب در کلاس Student میبینید که دو ویژگی به نامهای Name و Age وجود دارد. Name از نوع string است و برای ذخیره نام دانشجو استفاده میشود. Age از نوع int است و برای ذخیره سن دانشجو استفاده میشود. همچنین یک متد سازنده (Constructor) وجود دارد که این ویژگیها را مقداردهی اولیه میکند (این متد هنگام ایجاد شیء اجرا میشود). این کلاس همچنین دارای یک متد به نام Introduce میباشد که قادر است یک متن را در کنسول چاپ کند.
در بالا گفتیم که هنگام استفاده از یک کلاس، لازم است تا یک نمونه از آن را بسازیم (نمونهسازی کنیم). در دو خط زیر، ما دو نمونه از کلاس Student را با نامهای student1 و student2 ساخته و مقداردهی اولیه کردهایم:
// ساخت شیء از کلاس Student (نمونهسازی)
Student student1 = new Student("رضا", 20);
Student student2 = new Student("الهام", 22);
در واقع با ایجاد نمونه از کلاس، یک فضای حافظه برای شیء اختصاص داده میشود و ویژگیهای آن با مقادیر اولیه مقداردهی میشوند. با ایجاد نمونه از کلاس به تنهایی کار خاصی انجام نمیشود و این نمونه درون حافظه بصورت بلااستفاده میماند. ما باید کاری کنیم تا هدف اصلی از موجودیت کلاس تامین شود و آن هم اجرای قابلیت های درون کلاس است و آن هم با کمک گرفتن از نام نمونه میسر می باشد
در دو خط زیر، با کمک نام نمونههای ساخته شده از کلاس بالا، به تنها تابع موجود در آن دسترسی پیدا کرده و آن را به اجرا درمیآوریم:
// فراخوانی متد برای هر شیء
student1.Introduce(); // خروجی: سلام، من رضا هستم و 20 سال دارم.
student2.Introduce(); // خروجی: سلام، من الهام هستم و 22 سال دارم.
در این درس آموختید چگونه یک کلاس را تعریف کنید، ویژگیها و رفتارهای مورد نیاز را در آن قرار دهید، و با نمونهسازی از آن ، کلاس را به خدمت بگیرید. تا درس بعدی، خدا نگهدار