یادآوری از OOP (بخش اول)

Object Oriented Programming

4 299

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

در این قسمت و چند قسمت بعد مروری بر برنامه نویسی شی گرای PHP خواهیم داشت تا در قسمت های کدنویسی پروژه دچار مشکل نشویم. توجه داشته باشید که در این قسمت:

  • قصد درس دادن کامل و مجدد شی گرایی را نداریم (فقط مرور کوتاه). برای یادگیری به دوره ی شی گرایی مراجعه کنید.
  • فریم ورک یا شبکه ی اجتماعی را کدنویسی نمیکنیم و بر روی شی گرایی تمرکز خواهیم داشت.
  • با کلاس ها، خصوصیت ها و متدها آشنا خواهیم شد.
  • در مورد مفاهیم وراثت، متد های جادویی، Access Modifier ها و… صحبت خواهیم کرد.
  • در مورد متدها و خصوصیت های static نیز صحبت می کنیم.
  • اگر با برنامه نویسی شی گرایی آشنایی کامل دارید می توانید این قسمت ها را نادیده گرفته و به قسمت کدنویسی بروید. اما پیشنهاد ما این است که این قسمت ها را نیز مطالعه کنید چرا که یادآوری و مرور خوبی برایتان خواهد بود.

در این قسمت سعی می کنم موضوعات را به صورت موردی توضیح بدهم تا حالت خلاصه داشته باشند و در عین حال یادآور کلیه ی مسائل اصلی شی گرایی باشند.

برنامه نویسی شی گرایی (Object Oriented Programming) چیست؟

برنامه نویسی شی گرایی، متدی برای کدنویسی نرم افزارها و برنامه های شما است. این روش، روش خلاصه و بسیار جمع و جوری محسوب شده که در آن به جای استفاده از توابع و رویه ها از اشیاء (object) استفاده می شود. در این نوع برنامه نویسی ساختارهای داده به صورت شی در دسترس ما هستند و هر کدام دارای خصوصیات (property) و متد (method) های خاص خودشان می باشند.

باید بدانید که برنامه نویسی شی گرا (OOP) مخصوص زبان PHP نیست، بلکه زبان PHP به طور 100 درصد شی گرا نیست و می تواند به صورت رویه ای (procedural) یا شی گرا (Object Oriented) نوشته شود. زبان های مانند جاوا و #C صد در صد و کاملا شی گرا هستند و دیگر نمی توانید با آن ها برنامه نویسی رویه ای کار کنید.

چرا باید از OOP استفاده کنیم؟

زبان PHP آزادی زیادی به شما می دهد تا جایی که می توانید کدهای در هم ریخته و شلوغی بنویسید. به این نوع کدها spaghetti code می گوییم. با استفاده از شی گرایی زبان PHP می توانیم تا حد بسیار زیادی این مشکل را رفع کنیم. از مزایای استفاده از برنامه نویسی شی گرا می توان به موارد زیر اشاره کرد:

  • کدهای تمیزتر و سازماندهی شده
  • کدنویسی به شکل ماژولار (تکه تکه)
  • آسان تر برای کار تیمی و ساماندهی تیم ها
  • قابلیت استفاده ی مجدد
  • مدیریت و نگهداری ساده تر

تفاوت بین کلاس و شی چیست؟

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

کلاس یک نقشه برای شی است! به طور مثال یک نقشه ی خانه داریم و بر اساس این نقشه و اطلاعات آن، خانه (شی) را می سازیم. این نقشه دارای دستورالعمل هایی است (مانند «در را اینطور بساز» یا «حیاط را این رنگی کن» و …) که به آن ها متد می گوییم. از طرفی هر خانه خصوصیاتی دارد (مثلا رنگ دیوار ها، نوع سنگ فرش، اندازه ی اتاق ها و …) که به این ها «خصوصیت» یا property می گوییم.

همچنین همانطور که می توانیم از یک نقشه صد ها خانه بسازیم، می توانیم از یک کلاس نیز صدها شی بسازیم. به عمل ساختن شی از یک کلاس instantiate کردن می گویند. instance یا نمونه‌ی یک کلاس، یعنی شی ای که از آن کلاس ساخته شده است.

توضیحات عملی

توضیحات تئوری ما کافی نیستند چرا که مبحث شی گرایی باید عملی یاد گرفته شود بنابراین می خواهیم کمی کنیم. ابتدا وارد پوشه ی htdocs در XAMPP شوید (ر.ک به قسمت قبل). در همانجا پوشه ای دلخواه بسازید (من نام آن را oopSandbox می گذارم). حالا یک فایل در این قسمت بسازید (من نام این فایل را 2_3.php می گذارم.

برای اطمینان از سالم بودن XAMPP و اجرای کدها ابتدا کد زیر را در فایل خود نوشته و آن را در مرورگر به آدرس localhost/oopsandbox/2_3.php باز کنید:

بعد از رفتن به آدرس ذکر شده، مرورگر باید عبارت test را نشان دهد. زمانی که عبارت test را مشاهده کردید یعنی همه چیز کار می کند بنابراین آن را پاک کنید.

حالا بیایید یک کلاس به نام user بسازیم. برای این کار باید از کلیدواژه ی class استفاده کنیم:

حالا می توانیم یک property به آن اضافه کنیم:

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

برای نمایش این شی در مرورگر می توانیم کد زیر را هم اضافه کنیم:

این از خصوصیت ها. حالا یک متد برای این کلاس تعریف می کنیم؛ کار این متد این است که بگوید فلانی (this->name) سلام می کند (says hello):

خروجی این دستور می شود: Brad says hello

مشکل آنجاست که اگر به همین شکل صد کاربر دیگر هم بسازیم، نام تمام آن ها brad خواهد بود اما می دانیم که نام افراد فرق می کند بنابراین نوشتن این کد به این شکل کار درستی نیست. برای تصحیح این مسئله در قسمت ;'public $name = 'brad کد را به ;public $name تغییر می دهیم تا نام پیش فرضی نداشته باشیم بلکه فقط متغیر نام را تعریف کرده باشیم (یعنی هر فردی نامی دارد اما فعلا نام هایشان مشخص نیست).

از آنجا که به متغیر name مقدار public داده ایم می توانیم خارج از کلاس آن را تغییر دهیم. بنابراین کد بدین شکل خواهد شد:

تا همین قسمت برای این جلسه کافی است.

توجه: این قسمت تنها یک یادآوری بود بنابراین اگر به توضیحات بیشتر و کامل تری نیاز دارید به دوره ی آموزشی برنامه نویسی شی گرای PHP مراجعه کنید.

دانلود فایل این جلسه

ترتیبی که روکسو برای یادگیری مطالب سری آموزش ساخت شبکه اجتماعی به شما توصیه می‌کند:
4 نظر
  1. ronak
    0

    فقط میتونم بگم عالیه!منتظر ادامه آموزش هستیم، ممنون از شما

    1. امیر زوارمی
      0

      سلام دوست عزیز،
      نظر لطف شماست.

  2. سامان
    0

    بی صبرانه منتظر این دوره هستم! واقعا عالی هست

    1. امیر زوارمی
      0

      سلام دوست عزیز،
      خوشحالم که توجه شما رو جلب کرده

ارسال نظر

توجه:‌ آدرس ایمیل شما منتشر نخواهد شد.