برنامه نویسی شی گرایی چیست : OOP یا Object Orient Programming شیوه ای از برنامه نویسی است که موجودیتهای نرم افزار را به صورت شی یا Object میبیند. قبل از ظهور برنامه نویسی شی گرا ، برنامهها اغلب به شکل Procedural یا رویه ای نوشته میشد. در برنامه نویسی رویه ای برنامهها به توابع تقسیم میشدند. یعنی برنامه از متغیرهایی که اطلاعات را ذخیره و توابعی که عملیات مورد نظر را روی اطلاعات انجام میدادند تشکیل میشد.
اما با بزرگ شدن نرم افزار برنامه نویسان مجبور به تکرار کدها به صورت مکرر میشدند. توابع در قسمتهای مختلف به صورت نامرتب و تو در تو یکدیگر را صدا میزدند و برنامه به اصلاح به یک کد Spagetti تبدیل میشد. کد اسپاگتی به کدی اطلاق میشود که در آن توابع و قطعات کد مختلف به هم وابسته و در هم ریخته اند و در نتیجه ایجاد تغییر در یک تابع باعث به هم ریختن توابع زیادی میشود.
پس از ظهور برنامه نویسی شی گرا توابع و متغیرهای مرتبط در واحد هایی به اسم کلاس (Class) تجمیع شدند. اشیا از روی این کلاسها ساخته میشوند. و به این ترتیب صاحب متدها (Method) و ویژگیهای (Attribute) آن کلاسها میشوند. همینطور کلاسها میتوانند ویژگیها یا توابع را از یکدیگر به ارث ببرند. به این ویژگی ارث بری یا Inheritance میگوییم.
به عنوان مثال گوشی خود را در نظر بگیرید. فرض کنید مدل گوشی شما SumsungS10 باشد. کلاس گوشی SumsungS10 از کلاس گوشی به ارث میبرد. کلاس گوشی دارای ویژگیها یا Attributeهای زیر است:
همینطور تابعهای زیر را دارد:
کد زیر یک کلاس خالی گوشی تلفن همراه را نمایش میدهد:
class Mobile { protected $color; protected $resolution; protected $cameraResolution; protected $memorySize; public function charge() {} public function takePhoto() {} public function getSMS() {} }
حال با کلمه کلیدی Extends ویژگیها و متدهای کلاس گوشی موبایل توسط کلاس SumsungS10 به ارث برده میشود:
class SumsungS10 extends Mobile { private $gadgets = array(); }
کلاس گوشی SumsungS10 با به ارث بردن از کلاس گوشی تمام این ویژگیها و توابع را به ارث میبرد. علاوه بر آن دارای ویژگی Gadget نیز هست. گوشی SumsungS10 شما یک نمونه یا Instance از کلاس گوشی SumsungS10 است و با ساخت یک Object از کلاس گوشی SumsungS10 به وجود میآید.
$mysSumsungS10 = new SumsungS10();
در کدهای بالا مشاهده کردید که در تعریف attributeها و متدها از کلمات public، protected و private استفاده کردیم. ما با استفاده از این کلمات کلیدی قلمرو attributeها و متدهای کلاس را در برنامه نویسی شی گرا تعریف میکنیم. به این کلمات کلیدی Access Modifier میگوییم. به طور خلاصه:
شاید با خودتان بگویید در دنیای واقعی برنامه نویسی شی گرا کمتر اتفاق میافتد که نیاز داشته باشید از کلاس گوشی موبایل شی بسازیم. در دنیای واقعی تمام موجودیتهای برنامه میتوانند به صورت شی دیده شوند. حتی میتوان هر رکورد از جداول پایگاه داده را به صورت شی دید (ORM). مثل کلاس پیام یا Message که انواع مختلف کلاس Message مانند BroadcastMessage و PrivateMessage از آن به ارث میبرند و…