مفاهیم شی گرایی در برنامه نویسی C++ - OOP(Object Oriented Programming) :
ما در ابتدای مطالب کلی در مورد C++ صحبت کردیم و گفتیم که بد ترکونده، نه برای اینکه 1 در صد از این زبان را بنده شاید بلد باشم. بلکه برای اینکه این جز حقیقت چیزی نیست .
تنها اختلاف بین زبان C و C++ مبحثی است بنام شی گرایی یا OOP(Object Oriented Programming) که همین مورد کافی است که دنیای نرم افزار شاهد تحول عظیمی در طراحی و پیاده سازی نزم افزارهای کنونی باشد .
بد نیست بدانید که اندیشه شی گرایی در زبان C++ آنقدر قوی است که به جرئت می توان گفت تمامی نرم افزارهای موجود مدیون این دید از برنامه نویسی هستند. اکثر سیستم عامل های رایج مانند Linux, Macintosh, ... بر گرفته از تفکر C++ هستند و Windows را صرفا با C++ و مبانی C نوشته اند .
نرم افزار های غولی مانند Office, Photoshop, Nero, ... را با این زبان طراحی و پیاده سازی کرده اند .
بیشتر زبان های کاربری امروزی توانایی های خود را بدون تفکر C++ هیچ می دانند مثل Java, Javascript, PHP, Delphi, C#, .NET, ... !!!
خوب این شی گرایی چی هست و به چه دردی می خورد که جناب آقای بی یارنه استراس تروپ دانمارکی را در جهان برنامه نویسی با جای دادن این مفاهیم در دل C وتکامل آن زبان به C++ جاودانه کرد .
بیشترین دغدغه توسعه دهندگان نرم افزارها و نیاز برنامه ها این بود که هر چه بیشتر ساختار برنامه ها را به دنیای واقعی انسان نزدیک نمایند و آنرا مفهومی کنند. اقداماتی در زمینه برنامه نویسی ساخت یافته انجام گرفت اما جوابگوی نیاز آنروز جهان نبود. با ورود OOP و اشیاء در تفکر برنامه نویسی صنعت نرم افزار پا به عرصه جدیدی از برنامه نویسی مبتنی بر اشیاء دنیای واقعی گذاشت و توانست تا به امروز با همین مبحث تا بدینجا پیش رود .
مثال) یک مثال ساده را میتوان DragDrop در درون محیط Windows در نظر گرفت. این کار را با Copy,Paste نیز می توان انجام داد اما عمل کشیدن و رها کردن یک فایل یا فولدر و قرار دادن آن در محلی دیگر نیاز نرم افزارهای پیشرفته و کاربران پر توقع امروزی است .
در برنامه نویسی شی گرا نیز همین طرز تفکر برقرارا است. در این مورد چهار مفهوم اساسی وجود دارد که هر یک را بررسی می کنیم :
مثال) فرض کنید سازمان تامین اجتماعی قصد دارد برنامه ای داشته باشد که اطلاعات بیمه شدگان را در آن مدیریت نماید. هر بیمه شده دارای خصوصیات و روالهای مشترک و منحصر به فرد خود است مثل شماره بیمه، نام، سن، شغل، تعداد افراد تحت تکلف، بیمه پرداختی و ... .
اگر در این برنامه برنامه نویس از برنامه نویسی ساخت یافته استفاده نماید هم حجم برنامه زیاد شده و هم در صورت بروز اشکال، پیدا کردن اشکال و رفع آن کار دشوار و وقت گیر و پر هزینه است و برای رفع اشکال باید تمامی سطرهای مربوطه تغییر یابد .
با استفاده از برنامه نویسی مبتنی بر شی، یک نوع داده انتزاعی مثل Class تعریف شده و تمامی پارامترها، متغیرها، روالها، توابع، رخدادها و ... در همان Class تعریف می شود و برای دسترسی به هر یک از بیمه شدگان و کار با داده های آنها با تعریف یک Object از آن Class براحتی با تعداد بیشماری از بیمه شدگان می توان کار کرد و در صورت بروز مشکل یا ایجاد تغییر تنها کافی است که Class را تغییر داد .
ممکن است بیمه شدگانی دارای بیمه تکمیلی باشند پس از Class عمومی بیمه شدگان استفاده می کنند و Class جدیدی برای آنها تعریف می شود که از Class کلی خصوصیات و روالها را به ارث می برد یعنی دارای تمامی خصوصیات دیگر بیمه شدگان است به اضافه خصوصیات تعریفی برای خود. پس فرزند دارای کل خصوصیات و توابع پدر است بعلاوه خصوصیات خود و کاملتر از پدر .
با برنامه نویسی شی گراست که می توان به راحتی و مثل دنیای واقعی با برنامه تعامل داشت .