آموزش اصول برنامه نویسی شی گرا : تفکر شی گرا

این مطلب بخشی از آموزش اصول برنامه نویسی شی گرا هست.خیلی از زبان های محبوب برنامه نویسی شی گرا هستن، ولی شی گرایی تنها راه نوشتن برنامه نیست. برای فهمیدن اینکه چه موقع و چرا شی گرایی مفید خواهد بود بهتره اون رو با روش های دیگه برنامه نویسی مقایسه کنیم، زبان های برنامه نویسی رویه ای (Procedural programming) مانند C.در کدنویسی رویه ای، برنامه به عنوان یه سری طولانی از دستوراته که باید پشت سر هم اجرا بشن، بعضی از برنامه ها ممکنه بوسیله توابع و یا رویه ها (Subroutine) سازماندهی بشن تا بتونیم کد ماژولار و قابل نگهداری داشته باشیم اما هدف نهایی رسیدن از نقطه A به نقطه B برای انجام دادن تسک هاست.این روش یه رویکرد مستقیم رو به جلو هست که میشه برای دستور آشپزی ازش استفاده کنم. برنامه یا دستور پخت میگه که برای تهیه یه کیک باید اجزا رو ترکیب کنیم بعد اون ها رو بریزیم توی یه ظرف و خوب هم بزنیم، فقط لازمه که دستورات رو پشت سر هم اجرا کنیم و تمام، کیک ما آماده ست.دیده شده که برنامه نویسان تازه کار تمایل به برنامه نویسی رویه ای دارن چون فکر کردن به برنامه ای که مراحل پشت سرهم داره راحت تره.خب حالا بریم سراغ انجام کار قبلی یعنی پخت کیک به شیوه شی گرا:بجای توضیح توالی مراحل، شی های موجود در آشپزخانه را توضیح میدیم، ماهیتابهِ کیک، فر و همزن و اینکه هر کدوم از اینها چه کاری میتونن انجام بدن.بنابراین بجای نوشتن یه تک برنامه بزرگ، کد شی گرا ما به چندین شی خودمحور تقسیم میشه. تقریبا مشابه برنامه های کوچک دیگر، هر شی شامل دیتا و منطق خودش هست که توضیح میده چطور باید با بقیه شی ها رفتار کنه.ایده اینه که میتونیم از این اشیا برنامه ریزی شده همانند اشیا در دینای واقعی استفاده کنیم همانند همزن که میتونه بصورت یکپارچه مخلوط رو هم بزنه، ماهیتابه کیکی که مخلوط رو درونش میریزیم و فری که هر چیزی رو درونش بذاریم میتونه بپزه.نتیجه نهایی پخت کیک به روش رویه ای و روش ما که شی گرایی هست یکسانه، هر دو کیک میپزن! اما شیوه فکر راجع به مسئله و سازماندهی کدها بسیار متفاوت هست.هر کدوم از این رویکردها سود و زیان خودشون رو دارن که متناسب با وضعیت از اون ها استفاده میشه. مزیت اصلی استفاده از شی گرایی قابلیت استفاده مجدد کد هست.اگه ما بخواهیم چیزی بجز کیک درست کنیم، مثلا کلوچه، از قبل قابلیت همزدن و پختن توی فر رو آماده کردیم، پس میتونیم دوباره از اونها استفاده کنیم. برای اینکار احتیاج داریم که یک شیء جدید برای ساخت کلوچه خودمون ایجاد کنیم، بله سینی کلوچه، میتونیم سینی کلوچه رو بر پایه ماهیتابه کیکی که داریم بسازیم چون خیلی از خصوصیاتشون مشترک هست.برنامه نویسی شی گرا به تنهایی یک زبان نیست، بلکه به عنوان یک الگو برنامه نویسی معرفی میشه. مجموعه ای از ایده ها که توسط بسیاری از زبان های برنامه نویسی پشتیبانی میشه. همچنین الگوهای دیگر برنامه نویسی هم وجود دارن که خارج از برنامه نویسی رویه ای و شی گرایی هستن. اگر به علوم کامپیوتر علاقه مند باشید ممکنه به زبان های برنامه نویسی منطقی (Logic programming) مانند Prolog و یا زبان های برنامه نویسی تابعی (Functional programming) مانند Haskell برخورد کرده باشید هر چند هر دو اونها کاربردهای خاص دارند. ولی برای تهیه برنامه های کاربردی و عملگرا مانند برنامه های کاربردی وب، اپلیکیشن های موبایل، برنامه های کاربردی دسکتاپ و یا توسعه بازی ها تقریبا بطور قطع از برنامه نویسی شی گرا استفاده میشه. در واقع اکثر زبان های برنامه نویسی پرطرفدار، امروزه شی گرا هستند.خیلی از زبان ها چندین الگوی برنامه نویسی رو پشتیبانی میکنن، به این معنی که شما میتونید از رویکرد برنامه نویسی شی گرا استفاده کنید و یا از رویکرد رویه ای.زمانی که اولین بار برنامه نویسی شی گرا رو یاد گرفتم متوجه شدم که اکثر برنامه های کوچکی که می نوشتم خیلی سریعتر و راحتتر بوسیله برنامه نویسی رویه ای به جواب میرسیدن، مقدار کدی که برای برنامه نویسی شی گرا می نوشتم تا به همون نتیجه برسم بسیار بیشتر از قبل بود. احتمالا شما هم در حین آموزش همین حس رو خواهید داشت. توجه داشته باشید که ما از مثال های کوچک و ساده برای آموزش استفاده میکنیم ولی ارزش شی گرایی زمانی مشخص میشه که پروژه شما بزرگ میشه و باید تغییر کنه.قسمت بعدی : آموزش اصول برنامه نویسی شی گرا : اشیاء