اکثر شما واژه ی oop به گوشتون خورده که مخفف برنامه نویسی شیگرا هستش
خب این واژه به عقیده افراد زیادی اولین بار از زبان آقای alan kay شنیده شد خالق زبان smalltalk و برنده ی جایزه ی تورینگ
ایشون بعدها گفتن منظورم شیگرا نبود به اون صورت من منظورم messaging بود ولی خب حالاکه مردم اینقدر خوششون اومده من توی ذوقشون نمیزنم! این اقای الن کی قبلا دستی در بیولوژی داشته و اون طرفا هم کار کرده :)
خب حالا منظورش اون لحظه از ابجکت چی بوده که اینو عنوان کرده؟ بیاید از زاویه دید یه بیولوژیست به قضیه بنگریم ... بدن ما از میلیاردها سلول تشکیل شده و هر سلول یه سری بخش هایی داره چه بخش هایی؟مثلا غشا یا سیتوپلاسم یا مویَک (pilus ) که وظیفه ی ارتباط بین سلولهارو دارن و DNA و غیره...
خب حالا ما اگه هر آبجکت از کلاس رو بعنوان یک سلول در نظر بگیریم پس سیستم کامپیوتری مثل بدن از یه عالمه کلاس تشکیل شده و یه سری کارهارو میتونه برامون انجام بده هر ابجکت یه سری خصیصه یا attribute یا property داره که وظیفه ی حمل اطلاعات یا state اون ابجکت رو دارن و طبعا یه سری کارکرد ها یا method یا function رو هم در درون خودشون دارن
دقیقا مثل DNA که وظیفه حمل اطلاعات و کارکرد هارو دارن . خب سلول ها چیکار میکنن ؟ بله درسته !
تقسیم میشن ! و میتونن یه سلول دیگه همانند خودشون و با ارث بری از سلولهای والد یک سلول دیگه کاملتر یا همسان خودشون بوجود بیارن توی oop ما به این میگیم وراثت یا inheritance که "بخشی" از کارکردها و اطلاعات رو به سلول های فرزند منتقل میکنن! چرا بخشی؟ به این خاصیت میگیم کپسوله سازی ! Encapsulation
هر سلول میتونه اطلاعات خاصی رو منتقل کنه و غشای خارجی وظیفه ی محافظت از اون و طبعا اطلاعات رو بعهده داره! ما با تعیین سطح دسترسی میتونیم بگیم این اطلاعات منتقل بشوند یا نشوند ! یا سلولها میتونن از بیرون به این اطلاعات دسترسی داشته باشن و RNA رو دریافت کنن یا نه
وقتی تقسیم میشن چی میشه؟ میتونن یه شکل دیگه باشن ولی با طبعیت از قوانین DNA !!! به این میگن polymorphism !! یا چند ریختی که توی برنامه نویسی ما میتونیم از interface و contract ها استفاده کنیم! حالا اون DNA چیه؟ اونا یه سری ایده ها یا قوانین یا مثالی از یه ابجکت هستن
که میتونن بگن اگه از روی من بخوای سلول بسازی باید اینجوری باشه! تو نمیتونی منو بسازی ! بلکه "از روی من" میتونی سلول بسازی به اینم میگن انتزاع یا abstraction .
پایان