برنامه نویسی شی گرا که بهش oop هم میگن ، یه نوع منطق برای برنامه نویسی هست که خیلی شبیه زندگی روزمره ماهم هست. هر چیزی که اطرافتون میبینید منطق شی گرایی بر گرفته شده. دلیل اصلیش هم اینه که مغز ما انسان ها بر اساس این منطق اطلاعات رو دسته بندی میکنه.
در این نوع منطق دهن انسان اطلاعات رو مدلسازی میکنه و سعی میکنه با دسته بندی اون ها بهتر و عمیق تر اونا رو توی خودش جا بده. ولی این شی گرایی در اصل چی هست و در برنامه نویسی چه کاربردی داره؟
احتمالا اگه تازه برنامه نویسی رو شروع کرده باشید عبارت شی گرایی به گوشتون خورده و شاید هنوز به صورت عمیق اون رو درک نکرده باشید. این مدل طراحی نرم افزار به جای توابع و توالی منطقی، بر اساس داده اطلاعات یا شی انجام میدهد.
یه شی رو میشه به عنوان دادهای در نظر گرفت که ویژگیها و رفتار (attributes and behavior) خاصی داره.اگه توسعه دهندگان بخوان ، شیها رو دستکاری کنن، از برنامه نویسی شی گرا استفاده میکنن. این روش برنامه نویسی برای توسعه برنامه های پیچیده و بزرگ خیلی به کار میاد.
در نظر بگیرید که خودرو یه شیء هست. این شی یه سری ویژگی مثل رنگ ، وزن ، سرعت و... داره. این خصوصیات ویژگی های این خودرو هستن. به هر چیزی که دارای اطلاعات ، رفتار و یا خصوصیات خاصی باشه یه شیء گفته میشه.
این ویژگی ها رو atribute هم میگن و هر رفتاری که این شی از خودش ممکنه بروز بده رو هم behavaior میگن.
پس در مثال بالا خودرو یه شیء یا object است و خصوصیاتی مثل رنگ ، سرعت و... attribute و رفتار و یا اعمال این خودرو که بوق زدن و ترمز کردن و... هست brhavior این شی نامیده میشه.
کلاس ها قالبی از اشیا هستنو مثلا پراید ، یک نمونه از کلاس خودرو هست. کلاس ها رفتار و خصوصیات اشیا رو در بر دارندو مثلا کلاس خودرو ویژگی هایی مثل سرعت و وزن و.. رو در بر داره. هر خودرویی همه ویژگی های این کلاس رو درون خودش داره.
در حالت عادی شما کل برنامه را در قالب دستورات و توابع پشت سر هم مینویسید و برای تغییر هرچیزی از برنامه احتیاج دارید تا کل ساختار برنامه را بررسی کنید و موارد مورد نیاز را تغییر بدید.
فرض کنید در حال نوشتن برنامهای برای مدیریت خودروها هستید، شما برای هر مدل خودرو چند خط کد مینویسید،بعد تصمیم میگیرید که ویژگی ها خاصی به این خودرو ها اضافه کنید! در این مرحله شما باید بین این همه کد بگردید و خصوصیات جدید رو اضافه کنید.
اگه از روش برنامه نویسی شیء گرا استفاده کنید ، خیلی ساده میتونید با اضافه کردن یک ویژگی به کلاس اصلی برنامه تون ، سایر اشیا که در این مثال ما خودرو هستند رو به این ویژگی مجهز کنید که به اون ارث بری میگن. در این روش دیگه نیاز نیست که خط به خط کد هاتون رو بخونید و برنامه رو کلا تغییر بدید.
به زبان ساده، اشیا خصوصیات و رفتارها رو از کلاس والد خودشون ارث میبرن. هر شی در این کلاس بسازید ، ویژگی های اصلی رو دارد و میتونه این ویژگی ها رو به ارث ببره. به این مفهوم ارث بری میگن.
شاید در نگاه اول برنامه نویسی شی گرا سخت و پیچیده به نظر بیاد اما در دراز مدت کار شما رو خیلی راحت تر میکنه و مراحل تست و نگهداری نرم افزار هاتون بسیار ساده تر میشه. مزایای دیگه برنامه نویسی شی گرا :
چندریختی نتیجه وراثته. به طور خلاصه چندریختی به برنامهنویس اجازه میده که متدهایی با نام یکسان را بر روی اشیای مختلف استفاده کند.
هر شیء مجموعهای از اطلاعاته که با آن به عنوان یک واحد مجزا برخورد میشه. درون این اشیا نیز اطلاعات به صورت متغیر و متد قرار دارند.
متغیرهای داخل شیء به طور کلی مجزا باقی میمونن و این به آن معنیه که اشیا و متدها نمیتونن به همدیگه دسترسی داشته باشن. اشیا فقط از طریق استفاده از متدهایشون تأثیر میگیرن.