طی سه جلسهی قبل، در مورد شیءگرایی در پیاچپی بحث کردیم و به صورت مرحله به مرحله تا گام ۱۷ پیش رفتیم. در این جلسه مراحل پایانی یادگیری شیءگرایی را خواهیم آموخت.
ارثبری، استفاده مجدد از کدهای نوشته شده با ساختار OOP
ارثبری یکی از قابلیتهای اساسی در برنامهنویسی شیءگرا محسوب میشود و با استفاده از آن میتوانید از یک کلاس به عنوان ساختار پایه برای کلاسهای دیگر بهره ببرید.
چرا باید اینکار را انجام دهیم؟ زیرا این عمل به شما اجازه میدهد تا به صورت بهینهتری از کدهای نوشته شدهی قبلی خود و نیز کدهای نوشته شده توسط دیگران، برای پیشبرد پروژه بهره ببرید.
فرض کنید که قصد ایجاد یک کلاید جدید به نام employee (کارمند) را دارید. از آنجا که هر کارمند یک شخص نیز است، بنابراین این دو میتوانند پروپرتیها و متدهای مشترکی داشته باشند.
آیا این روش منطقی به نظر میرسد؟
با استفاده از ویژگیهای ارثبری میتوانید کد کمتر و بهینهتری را تولید کنید چراکه فقط موارد اضافه را باید به کلاس جدید اضافه کنید و در واقع میتوان از ویژگیهای یک کلاس دیگر به منظور ساخت کلاس جدید در پیاچپی بهره گرفت. دو عامل زیر از جمله دلایلی تلقی میشوند که باعث شده استفاده از ارثبری در کلاسهای پیاچپی منطقی به نظر برسد.
از نظر مفهومی ارثبری شبیه به عملیات Include کردن است که در جلسات قبل به صورت مفصل آن را توضیح داده بودیم.
نگاهی به کد پیاچپی زیر بیاندازید و با دقت آن را بررسی کنید.
استفاده مجدد از کدها با استفاده از ویژگی ارثبری: بخش دوم
از آنجا که کلاس employee بر پایهی کلاس person ایجاد شده است، بنابراین کلاس employee به طور خودکار تمامی متدهای عمومی و محافظتشده و نیز تمامی پروپرتیهای عمومی و محافظتشدهی کلاس person را دارا خواهد بود.
نکتهی اضافه: به عبارت دیگر میتوان گفت که کلاس employee در واقع نوعی دیگر از کلاس person است. به کد نمونهی زیر توجه کنید تا مطلب بیان شده را بهتر درک کنید.
اما چگونه بدون اینکه متد ()set_name در کلاس employee تعریف شده باشد ما قادر به استفاده از آن خواهیم بود؟
پاسخ: زیرا ما قبلا متد ()set_name را در کلاس person تعریف کرده بودیم و با توجه به ویژگی ارثبری در پیاچپی، کلاس جدید میتواند از متدهای عمومی و محافظتشدهی کلاس پایه استفاده کند.
نکته: کلاس person در اینجا کلاس پایه یا کلاس والد خوانده میشود زیرا کلاس جدیدی که به نام employee ساختیم، به عنوان ساختار پایه از کلاس person بهره گرفته است. سسله مراتب همیشه در پروژههای مختلف پیاچپی یک موضوع مهم است که باید به آن توجه ویژه داشته باشید. این امر به ویژه وقتی که پروژهی شما پیچیدهتر میشود بسیار کارا خواهد بود.
استفادهی مجدد از کدهای نوشته شده: بخش سوم
همانطور که در کد زیر نیز مشاهده میکنید، میتوانیم متد get_name را در کلاس employee فراخوانی کنیم. کد زیر یک مثال بسیار خوب برای فهم بیشتر این مبحث است.
در مثال بالا روش استفادهی مجدد از کدهای نوشته شده با ساختار OOP را مشاهده میکنید. یعنی شما دیگر نیازی به نوشتن مجدد برخی از متدها نخواهید داشت و میتوانید از متدهای کلاس پایه یا والد، بهره ببرید. این روش باعث میشود تا کد نوشته شدهی شما به اصطلاح ماژولار شده و قابلیت توسعه و پیشرفت دادن آن بیشتر شود. همچنین ساختار کدها منسجمتر شده و نیاز به نوشتن کد کمتری خواهید داشت.
اووِر راید کردن متدها
برخی مواقع هنگام استفاده از ویژگی ارثبری، ممکن است نیاز به تغییر برخی از توابع کلاس پایه داشته باشید.
به عنوان مثال، اجازه دهید متد ()set_name در کلاس employee را تغییر دهیم به نحوی که این متد در این کلاس نسبت کلاس person تغییر یابد.
در این شرایط شما با تعریف کردن متدی مشابه در کلاس employee، در واقع نسخههایی از متد ()set_name را از کلاس person، اووِر راید کردهاید. به کد زیر توجه کنید:
توجه داشته باشید که متد ()set_name اکنون و پس از تغییرات بالا در کلاس جدید employee با همین متد در کلاس پایه با همان person تفاوت دارد.
اووِر راید کردن متدها: بخش دوم
گاهی ممکن است نیاز داشته باشید تا به نسخهی اصلی متدی در کلاس پایه دسترسی داشته باشید که آن را در کلاس جدید اوور راید کردهاید.
در مثال ما، متد ()set_name در کلاس employee اوور راید شده است. حالا قصد داریم از کد زیر استفاده کنیم:
به منظور دسترسی به نسخهی اصلی متد ()set_name که در کلاس والد (person) وجود دارد، باید از کدی شبیه به زیر استفاده کنیم:
نکته: استفاده از سیمبلها (symbol)
استفاده از :: برای تشخیص نام کلاسی که قصد داریم از متدهای داخلی آن استفاده کنیم به کار میرود. به مثال زیر توجه کنید تا این مبحث را بیشتر توضیح دهیم.
علاوه بر این یک راه میانبر دیگر برای اشاره به کلاس والد کلاس کنونی وجود دارد. این راه میانبر در واقع استفاده از کلمهی کلیدی parent است. به کد نمونهی زیر توجه کنید:
در این مطلب و سه مطلب قبلی از سری آموزش پیاچپی در زومیت به موارد پایهای اساسی برای یادگیری برنامهنویسی شیءگرا در پیاچپی پرداختیم. اما به منظور راحتی بیشتر در این مبحث و اینکه در همین مسیر برنامهنویسی را ادامه دهید باید سعی کنید جزئیات و اطلاعات بیشتری را در مورد ساختار و روش برنامهنویسی شیءگرا فرا بگیرید.
به یاد داشته باشید بهترین راهی که میتواند به شما در یادگیری این روش کمک کند، مثل همیشه نوشتن کد و تمرین است.
به عنوان مثال پیشنهاد میکنیم چند کلاس عمومی برای خود ایجاد کنید. این کلاسها باید شامل متدهایی باشد که فکر میکنید در چند پروژه مختلف مورد استفاده واقع خواهند شد. پس از نوشتن چند نمونه کلاس و یادگیری مراحل توضیح داده شده از جلسه بیستویکم تا بیستوچهارم، مطمئنا کدنویسی به روش OOP برای شما آسانتر و بسیار بهتر خواهد شد.
آموزش PHP - جلسه اول معرفی و ابزارهای مورد نیاز | رفتن به مطلب | |
آموزش PHP - جلسه دوم، متغییرها و توضیحات در کدها | رفتن به مطلب | |
آموزش PHP - جلسه سوم: عملگرها | رفتن به مطلب | |
آموزش PHP - جلسه چهارم: آرایه ها | رفتن به مطلب | |
آموزش PHP - جلسه پنجم: عبارات شرطی، دستور if | رفتن به مطلب | |
آموزش PHP - جلسه ششم: حلقه های While و For | رفتن به مطلب | |
آموزش PHP - جلسه هفتم: دستور Switch و آشنایی با Include و Require | رفتن به مطلب | |
آموزش PHP - جلسه هشتم: توابع | رفتن به مطلب | |
آموزش PHP - جلسه نهم: متغیرهای پیش فرض و فرم ها | رفتن به مطلب | |
آموزش PHP - جلسه دهم: پروژه ارسال ایمیل | رفتن به مطلب | |
آموزش PHP - جلسه یازدهم: اتصال به بانک اطلاعاتی MySQL | رفتن به مطلب | |
آموزش PHP - جلسه دوازدهم: درج اطالاعات در بانک اطلاعاتی MySQL | رفتن به مطلب | |
آموزش PHP - جلسه سیزدهم: خواندن دادهها از بانک اطلاعاتی MySQL | رفتن به مطلب | |
آموزش PHP - جلسه چهاردهم: ویرایش داده در بانک اطلاعاتی MySQL | رفتن به مطلب | |
آموزش PHP - جلسه پانزدهم: حذف داده ها از بانک اطلاعاتی MySQL | رفتن به مطلب | |
آموزش PHP - جلسه شانزدهم: Session و Cookie | رفتن به مطلب | |
آموزش PHP - جلسه هفدهم: کار با فایل ها | رفتن به مطلب | |
آموزش PHP - جلسه هجدهم: کار با تاریخ و ساعت و تاریخ هجری شمسی | رفتن به مطلب | |
آموزش PHP - جلسه نوزدهم: فیلترهای پی اچ پی (مقدماتی) | رفتن به مطلب | |
آموزش PHP - جلسه بیستم: کار با رشته ها | رفتن به مطلب | |
آموزش PHP - جلسه بیست و یکم: شیء گرایی | رفتن به مطلب | |
آموزش PHP - جلسه بیست و دوم: شیء گرایی (بخش دوم) | رفتن به مطلب | |
آموزش PHP: جلسه بیست و سوم: شیءگرایی (بخش سوم) | رفتن به مطلب | |
آموزش PHP: جلسه بیست و چهارم: شیءگرایی (بخش پایانی) | رفتن به مطلب |