آموزش برنامه نویسی شی گرا (OOP) در PHP - مفاهیم و توضیحات کلی

درسنامه درس 1 از سری شی گرایی در PHP
php-oop-introduction

به نام خدا و سلام و عرض ادب خدمت شما خوانندگان گرامی؛

به لطف خدا مجموعه ی آشنایی با برنامه نویسی شی گرا در PHP را شروع کرده ایم تا به نوبه ی خود به آگاهی برنامه نویسان ایرانی نسبت به این موضوع کمکی کرده باشیم. متاسفانه کلمات "شی گرا" در اکثر برنامه نویسان ایرانی که با این مسئله آشنا نیستند، باعث دلهره و ترس می شوند در صورتی که یکی از بهترین و لذت بخش ترین انواع برنامه نویسی همین برنامه نویسی شی گرا می باشد.

در این مجموعه سعی داریم در قسمت های کوتاه و به زبان ساده به این مسئله ی مهم بپردازیم. برویم سراغ اصل مطلب!

چرا برنامه نویسی شی گرا در PHP همیشه حرف اول را می زند؟

توجه: این مقاله برای افراد مبتدی در نظر گرفته نشده است. برای استفاده از تمام این مجموعه باید درک حداقلی و آشنایی پایه با یک زبان برنامه نویسی (در این دوره، PHP) داشته باشید. با این همه اگر چنین آشنایی ندارید هنوز هم می‌توانید از چند قسمت اول برای درک بهتر برنامه نویسی شی گرا (فارغ از زبان برنامه نویسی) استفاده کنید.

از طرفی مجموعه روکسو دو راه برای آشنایی شما با مفاهیم اولیه و مقدماتی زبان PHP‌ دارد:

راه اول: استفاده از دوره آموزش رایگان برنامه نویسی به زبان PHP می باشد که به صورت متنی در اختیار عزیزان قرار گرفته است.

راه دوم: بهره مندی از دوره ویدیویی آموزش زبان برنامه نویسی PHP است که به صورت آنلاین و فصل به فصل در قالب یک پروژه ارائه شده است.

یک سوال: چرا به سراغ برنامه نویسی شی گرا (Object-oriented programming) برویم؟ مگر برنامه نویسی رویه ای (Procedural programming) مشکلی دارد؟
پاسخ: برنامه نویسی رویه ای به خودی خود مشکلی ندارد اما در مقایسه با برنامه نویسی شی گرا مشکل دارد! بسیاری از چیز ها در زندگی نسبی است؛ به طور مثال خندیدن نه تنها مشکلی ندارد بلکه پسندیده است اما همین خندیدن در مراسم خاکسپاریِ یک فرد، بسیار زشت و بی ادبانه است! به همین ترتیب برنامه نویسی رویه ای مشکلی ندارد اما فواید برنامه نویسی شی گرا آنقدر زیاد است که در مقایسه با آن توجیه نمی شود. به عبارت دیگر وقتی فواید برنامه نویسی شی گرا را بدانیم و باز هم بر همان حالت قدیمی و رویه ای باقی بمانیم، تقصیر از ماست.

فواید برنامه نویسی شی گرا در PHP

سوال: این فواید و نکات مثبت برنامه نویسی شی گرا چیست؟

پاسخ: به طور خلاصه چند مورد عرض را می کنم:

  • استفاده ی چند باره از کد ها (Code Recycling): معنی Code Recycling (به فارسی: بازیافت کد) این است که اگر یک کلاس تعیین کنید، مثلا برای مبحث تایید فرم ها - Form Validation، دیگر نیازی نیست هر دفعه برای تایید فرم ها کد بنویسید و خودتان را خسته کنید.
  • کپسوله سازی (Encapsulation): با استفاده از این ویژگی می توانید بدون نیاز به دانستن ساختار پیاده سازی شده ی کد ها از یک کلاس خاص استفاده کنید، در حالی که در کتابخانه ها باید از نحوه ی پیاده سازی اولیه آگاه باشید. با این مفهوم در قسمت های بعد آشنا می شویم.
  • مدیریت پروژه ها: برنامه های بزرگ را عملا نمی توان با برنامه نویسی رویه ای نوشت. اگر بخواهید پروژه های بسیار بزرگ را با برنامه نویسی رویه ای بنویسید، در آخر کار با چند هزار خط کد روبرو می شوید که مانند کلافی در هم پیچیده و خدا نکند که بخواهید قسمتی را ویرایش/به روز کنید! با برنامه نویسی شی گرا حتی مدیریت پروژه های کوچک نیز بسیار آسان تر می شود.
  • امنیت بیشتر
  • و ...

معمولا زمانی که صحبت از برنامه نویسی شی گرا می شود، از مثال معروف ماشین استفاده می کنند، اما ما برای شروع چنین قصدی نداریم چرا که ذهن ما را بدون دلیل از مبحث دور می کند. ما مستقیم به سراغ مفاهیم میرویم و سپس مثال ماشین را توضیح می دهیم!

تعریف Class (کلاس) در برنامه نویسی شی گرا در PHP

بخش اساسی و پایه ی تمام کد های شی گرا بخشی به نام کلاس (Class) می باشد. "کلاس" در واقع مجموعه ای از متغیر ها و توابع مربوط به هم اند که بین یک جفت آکولاد قرار گرفته اند و دارای یک نام واحد می باشند. به عبارت دقیق تر کلاس ها نقشه ی کلی هستند و اشیاء (Objects) نمونه ی ساخته شده از آنها؛ مانند دستور پخت یک کیک و خودِ کیک!

پس دیدیم که کلاس مسئله ی فنی و پیچیده ی خاصی ندارد بلکه همان توابع و متغیر های همیشگی خودمان است منتهی در کنار هم و با اسمی جدید، همین!

قبل از ادامه ی بحث ذکر یک نکته بسیار مهم است؛ تفاوت میان علائم نگارشی مانند آکولاد و قلاب و ...

علائم نگارشی در برنامه نویسی شی گرا در PHP

از آنجایی که برنامه نویسی یک شغل بین المللی است، بهتر است شما علائم را با اسم های انگلیسی‌شان حفظ کنید.

اما ادامه ی بحث:

تعریف Property و Method در برنامه نویسی شی گرا در PHP

Property در زبان های برنامه نویسی شی گرا (به اختصار OOP - Object Oriented Programming) به متغیر هایی که متعلق به یک کلاس خاص هستند Properties (به فارسی: خصوصیات) می گویند.
Method در زبان های برنامه نویسی شی گرا (به اختصار OOP - Object Oriented Programming) به توابع Method (به فارسی همان متد) گفته می شود.

مثال روزمره: اگر به مثال معروف ماشین برگردیم می توان گفت پراید یک ماشین است، پرادو هم یک ماشین است، پژو 206 هم یک ماشین است. تمام این ماشین ها یک طرح کلی دارند. به عنوان مثال چهار چرخ، یک فرمان، یک دنده، پنجره و الی آخر.

این طرح و نقشه ی کلی همان کلاس است. می توانیم اسم این کلاس را کلاسِ Vehicle (به معنای اتومبیل) بگذاریم.

حالا هر کدام از این ماشین ها، مثلا یک پراید، می شود یک شیء (Object) از این کلاس؛ پراید یک شیء از کلاسِ اتوموبیل است چرا که نمونه ی ساخته شده از طرح کلیِ (Class) اتوموبیل است. از نظر خصوصیت ها (Properties) و متد ها می توان گفت ترمز کردن یک متد و رنگ ماشین یک خصوصیت است. به تصویر زیر نگاه کنید:

مثال ماشین در برنامه نویسی شی گرا در PHP

تا این قسمت با مفاهیم اصلی برنامه نویسی شی گرا یا OOP آشنا شدیم. در قسمت های بعد سراغ مفاهیم بیشتر و بعضاً کد نویسی نیز خواهیم رفت. همراه ما باشید.

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری شی گرایی در PHP توصیه می‌کند:
نویسنده شوید
دیدگاه‌های شما (8 دیدگاه)

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

محمد
22 اردیبهشت 1401
چی بگم عالی بی نقص ادامه بدید

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

روکسو
22 اردیبهشت 1401
خوشحالیم رضایت شما دوست عزیز رو جلب کردیم.

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

مجتبی
07 اردیبهشت 1401
فوق العاده روان و سلیس توضیخ دادید عالی بود !

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

روکسو
12 اردیبهشت 1401
از نظر شما متشکریم.

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

محمد
13 مرداد 1400
با سلام.آموزش بسیار خوبی هست.خسته نباشد

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

سینا قاسمی
28 خرداد 1399
کلمه ی اتومبیل دوبار به اشتباه تایپ شده بود.جناب زوارمی قلم خوبی دارید ، منتها بعضا املا ها رو چک کنید. کامنت های بنده هم صرفا جهت کمک،به بالا بردن کیفیت نوشتار جنابعالیست!

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

مجید
16 اسفند 1398
برای ساخت فروشگاه اینترنتی . لازمه که برنامه نویسی شی گرا یاد بگیریم ؟

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

امیر زوارمی
26 اسفند 1398
سلام دوست عزیز لازم به معنای واجب بودن، نه. شما می تونید فروشگاه رو با کد عادی هم بنویسید اما به طور کل پیشنهاد میشه برای نوشتن فروشگاه های اینترنتی از فریم ورک هایی مثل لاراول (برای PHP) یا Express (برای node.js) و امثال اونها استفاده کنید چرا که این فروشگاه ها در معرض هک شدن هستن و باید لایه امنیتی قوی داشته باشن

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

ممد نوبریان
14 شهریور 1398
عالیه کارتون اینده خوبی داره سایتتون به امید روزای بهتر

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

جواد
09 خرداد 1398
بسیار عالی، همه سرحال و موفق باشی

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

امیر زوارمی
09 خرداد 1398
ممنونم دوست عزیز، همچنین

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

میلاد
14 فروردین 1398
من تقریبا اکثر سایت های آموزش برنامه نویسی فارسی رو دیدم و مطالبشون رو خوندم.واقعا متشکرم از اقای زوارمی عزیز به خاطر این مهارت فوق العاده در انتقال اسان مطلب

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

امیر زوارمی
15 فروردین 1398
سلام دوست عزیز، از لطف شما ممنونم. خوشحالم که تونستم به شما کمکی کرده باشم تا برنامه نویسی رو بهتر یاد بگیرید.

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.