برنامه نویسی شی گرا چیست؟ (OOP)
در برنامه نویسی شی گرا (Object Oriented Programming – OOP) ما با اشیای پیچیده تری در مقایسه با متغیرها روبرو هستیم. برای مثال ما چنانچه بخواهیم نام یک دانشجو را در مکانی از حافظه ذخیره کنیم، از یک متغیر استفاده می کنیم. به همین صورت برای ذخیره نام خانوادگی، سن، تاریخ تولد و … حال فرض کنید که می خواهیم کل این اطلاعات را در یک جا و در کنار هم داشته باشیم. به این صورت که به دانشجو به چشم یک فرد (شی) نگاه کنیم که دارای ویژگی هایی از جمله نام، نام خانوادگی، سن، تاریخ تولد و … است. اینجاست که مفهوم برنامه نویسی شی گرا (OOP) مطرح می شود.
معرفی مفاهیم کلاس (Class) ، شی (Object) ، صفت (Property) ، متد (Method)
در برنامه نویسی شی گرا مفهوم کلاس (class) به دسته ها یا گروه ها اشاره دارد. برای مثال چنانچه ما از واژه درختان ، اتومبیل ها ، دانشجویان و یا اساتید استفاده کنیم، منظورمان یک دسته و یا گروه از افراد (اشیا) است و نه یک مورد و یا فرد خاص. چنانچه به مورد خاصی از آن گروه (کلاس) اشاره کنیم، با مفهوم شی (object) مواجه می شویم. هر شی یک سری ویژگی یا خصوصیت دارد که ما به آن صفت (property) می گوییم. از سوی دیگر هر شی تعدادی رفتار و یا اعمال دارد که در برنامه نویسی شی گرا به آنها اصطلاحا متد (method) گفته می شود.
برای مثال واژه اتومبیلها یک کلاس (class) را مشخص می کند. چنانچه در مورد اتومبیل بنز یا پژو صحبت کنیم، منظورمان یک شی (object) است. ماشین بنز یا پژو موردنظر یک سری ویژگی ها دارد، از جمله : مدل، سال ساخت، رنگ، تعداد سیلندر و … که اینها صفات (property) این شی هستند. از سوی دیگر اعمال حرکت کردن، ایستادن، روشن شدن، خراب شدن و … نیز رفتارها یا اعمال اتومبیل مورد نظر هستند (method).
سطوح دسترسی عمومی (Public) و خصوصی (Private)
هر یک از اعضا یک کلاس در دو سطح دسترسی عمومی (public) و یا خصوصی (private) تعریف می شوند. این سطوح دسترسی به امکان/عدم امکان دسترسی به این عناصر از خارج کلاس اشاره دارد. یک عضو عمومی در هر جایی از یک برنامه ++C قابل دسترسی است. بالعکس یک عضو خصوصی و یا محرمانه تنها توسط اعضا کلاس قابل دسترسی است و امکان دستیابی به آن از خارج کلاس وجود ندارد.
در برنامه نویسی شی گرا، عموما صفات (متغیرها) بصورت خصوصی (private) و متدها (توابع) بصورت عمومی (public) تعریف می شوند. اصطلاح کپسوله سازی (encapsulation) نیز به همین منظور استفاده می شود. به این معنی که داده های یک کلاس (صفات) می بایست از دید سایر بخش های برنامه (خارج کلاس) مخفی بمانند. در عوض چنانچه نیاز به دسترسی به آنها بود، این کار بصورت غیرمستقیم و از طریق توابع عضو کلاس (متدها) انجام می شود.