Php & JavaScript & Wordpress Developer

برنامه نویسی شی گرا یعنی چه؟ قسمت اول

برنامه نویسی شی گرا یعنی چه؟

نکته مهم : در این مقاله سعی دارم که برداشت ساده ای از خودم درمورد برنامه نویسی شی گرا بنویسم و ممکنه برخی از مثال ها و جملات دقیق نباشند.

داستان یادگیری برنامه نویسی خودم رو در مطالب قبلی گفتم. من برنامه نویسی را در دانشگاه یاد گرفتم. از ترم دوم دانشگاه بود که یادگیری زبان سی شارپ شروع شد. به دلیل اینکه زبان سی رو یاد گرفته بودم بخش اول زبان سی شارپ نه تنها سخت نبود که به نسبت زبان سی بسیار اسون تر بود.

من تصور می کردم بعد از یادگیری مفاهیم پایه برنامه نویسی دیگه بقیه چیز ها روی روال پیش میره و به همین دلیل یکم بیخیال بودم و زیاد درس نمی خوندم. چند جلسه ای گذشت و متوجه شدم یه سری مفاهیم سخت شروع شد. درک فانکشن برام سخت بود ولی تونستم یادش بگیرم. ولی وقتی به بخش برنامه نویسی شی گرا رسیدیم واقعا درک نمی کردم چی به چیه.

استادمون توضیح می داد که کلاس مثل نقشه ی یه ساختمونه. خود ساختمون نیست ولی نقشه ی ساختمونه. یعنی نمیشه توی نقشه ی ساختمون زندگی کرد فقط میشه از روی نقشه خونه ساخت. و من هاج و واج فقط فسفر می سوزوندم که درک کنم واقعا مفهوم شی گرایی و مفاهیمی مثل کلاس و ارث بری و یعنی چی.

کمی طول کشید تا کلیت بحث شی گرایی رو بفهمم ولی باید اعتراف کنم که توی دوران دانشجویی شی گرایی برام کاملا جا نیفتاد. البته این رو بگم که من اون زمان درکنار یادگیری سی شارپ از طریق برنامه ویدیویی آموزشی برنامه نویسی اندورید به زبان جاوا هم یاد می گرفتم. همین هم کمکم کرده بود که کمی بیشتر مفاهیم شی گرایی رو درک کنم.

اما بعد ها کم کم برام جا افتاد که هر کدوم از مفاهیم شی گرایی یعنی چی. من اینجا سعی میکنم بعضی از این مفهموم ها رو بنویسم.

به صورت کلی برنامه نویسی شی گرا در مقابل برنامه نویسی پروسه ای اومده. برنامه نویسی پروسه ای به این صورت هست که ما شروع میکنیم به کد نویسی و هر جا به فانکشن نیاز داشتیم اون رو می نویسیم و استفاده می کنیم. اوج خلاقیمتمون هم این بود که فانکشن ها رو توی یه فولدر به نامه include قرار میدادیم که هرجا خواستیم ازش استفاده کنیم.

ولی مشکل برنامه نویسی پروسه ای یا روندی اینه که ما ممکنه به ده تا فانکشن توی برنامه مون نیاز داشته باشیم که کارکردشون تقریبا شبیه همه ولی یه تفاوت های کوچکی باهم دارن. مثلا فکر کن میخوایم یه سایت درست کینم و نیاز داریم که یه تابع داشته باشیم مقاله های سایت رو بریزیم توی دیتابیس. یه تابع دیگه بخوایم باهاش کاربر ثبت نامه کنه و اطلاعات کاربر رو بریزیم توی دیتابیس و همینطور یه تابع دیگه داشته باشیم که اطلاعات محصولات فروشگاه رو بریزه توی دیتابیس. هر سه تای این تابع یک عمل اضافه کردن به دیتا بیس رو انجام میدن ولی بینشون تفاوت هایی هم هست.

ما میتونیم یک تابع بنویسیم که اطلاعاتی از ما بگیره و به دیتابیس اضافه کنه. اما شکل گرفتن اطلاعاتی که میگیره بستگی به نوع کاری که داریم میکنیم باشه. مثلا اگه داریم محصول اضافه میکنیم تابع اطلاعات رو بفرسته به جدول محصولات سایت. اگه یوزر اضافه میکنیم بفرسته به جدول یوزر. و اگه مقاله هست هم به قسمت مقاله.

خب برای اینکار لازم هست که از برنامه نویسی شی گرا استفاده کنیم. یعنی ما میایم یه چیزی به اسم کلاس تعریف میکنیم و توابع خودمون رو توی کلاس می نویسیم. هرجایی که به تابع خودمون نیاز داریم از کلاس یک نمونه می سازیم. نمونه ساختن هم خیلی ساده بهتون بگم یعنی اینکه از کلاسمون استفاده میکنیم. حالا در ادامه مفاهیم شی گرایی رو میگیم و بیشتر بهتون توضیح میدم.

اولین بحثی که برای شی گرایی داریم بحث کلاس ها هست. برای متوجه شدن این قسمت لازمه که از برنامه نویسی پایه یکم سر رشته داشته باشی. یعنی با مفاهیمی مثل فانکشن ( تابع / متد) و if و یا حلقه ها آشنا باشی.

کلاس به شکل ساده یک بلوک از کد هست که اسم مشخصی داره و تعدادی فانکشن و متغییر و ثابت توش نگهداری میشه. به چه دردی می خوره؟ با مثال استاد دانشگاهمون ( استاد علی اکبر موذن بارجینی) شروع می کنم.

فکر کن توی دنیای واقعی تو یه پیمانکار سازنده ساختمان هستی. قصد داری ده واحد ساختمان بسازی قبل از اینکه بخوای کار ساخت این ده تا ساختمان رو شروع کنی برای اینکه هم نظم داشته باشه کارت هم نخواهی کار تکراری انجام بدی میای و یک نقشه از واحدی ساختمانی که میخوای درست کنی رو می کشی.

نقشه که کشیده شد میای از روی نقشه ساختمان اول رو درست میکنی. دوباره از روی همون نقشه میری ساختمان دوم رو درست میکنی و همینطور تا دهم.

کلاس درواقع همین نقشه هست. ما توی برنامه نویسی شی گرا وقتی میخوایم اطلاعاتی رو وارد دیتابیس کنیم میایم یه نقشه یا کلاس براش طراحی میکنیم و میگیم که اقا من قصد دارم یه سری اطلاعات رو بریزیم توی دیتابیس. ولی انکه چه اطلاعاتی باشه به لحظه اجرا بر میگرده. مثلا فکر کن توی نقشه ساختمان میگیم میخوام خونه در و پنجره داشته باشه. ولی اینکه در و پنجره چه جنسی یا چه رنگی باشه به به شرایط و لحظه اجرا بر میگرده. من توی نقشه فقط مشخص میکنم که قسمت شمال دیوار خونه در وردی باشه.

میدونم این مطلب شاید براتون سخت بوده باشه و شاید متوجه نشده باشین ولی نیاز به تمرین داره و بعد از چندین بار تمرین احتمالا بهتر متوجه میشین که من چی میگیم.

مفاهیم بعدی مثل ارث بری یا سطح دسترسی و… رو توی قسمت بعدی میگم بهتون.

دیدگاه ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

11 − 11 =