آموزش شی گرایی در PHP – چندریختی (polymorphism)

آموزش شی گرایی در PHP

در این بخش از سری آموزش شی گرایی در PHP می خواهیم مفهوم و استاندارد چندریختی (polymorphism) یا پولی مورفیسم را یاد بگیریم که هدف آن نوشتن کدهایی با توسعه و درک آسان است.

بر اساس استاندارد چندریختی (polymorphism), متدها در کلاس های مختلف باید نام یکسان داشته باشند.

 

یک مثال ساده کلاس هایی از شکل های هندسی (شبیه مستطیل, مربع, چندضلعی) است که هر کدام از نظر تعداد ضلع ها و محاسبه  مساحت متفاوت هستند ولی همه آنها متدهایی برای محاسبه مساحت دارند.

در این موارد, همه متدها فارغ از اینکه چه شکل یا کلاسی است باید نام یکسان داشته باشند.

 

برای مثال‌, می توانیم تمامی متدهای محاسبه مساحت برای تمامی کلاس شکل ها را calcArea() نامگذاری کنیم.

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

 

چطور مفهوم چندریختی را در شی گرایی php پیاده کنیم؟

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

 

برای مثال, اینترفیس با نام Shape تمام کلاس هایی که آن را implement می کند, متعد به استفاده از نام calcArea() داخل کلاس فرزند می کند.

 

مطابق همین, کلاس Circle اینترفیس Shape را استفاده و از متد با نام calcArea() برای بدست آوردن مساحت دایره استفاده می کند.

 

کلاس rectangle نیز اینترفیس Shape را استفاده می کند ولی متد calcArea() را با یک فرمول متناسب شکل مستطیل می نویسد.

 

از این کلاس ها یک شی می سازیم :

 

حالا می توانیم مطمین شویم جدا از اینکه چه شکلی است, تا زمانی که از اینترفیس Shape بهره می برند, همه شکل ها یک متد یکسان به نام calcArea() برای محاسبه مساحت دارند

 

نتیجه

۲۸٫۲۷۴۳۳۳۸۸۲۳۰۸
۱۲

جمع بندی

در این سری از آموزش شی گرایی در PHP با مفهوم چندریختی (polymorphism) در PHP آشنا شدید.

در بخش بعدی با type hinting آشنا می شود که به ما کمک می کند توابع و متدها را مجاب به استفاده فقط یک نوع داده خاص کنیم.

حسن شفیعی علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندورید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید
مطالب زیر را حتما بخوانید
دیدگاه کاربران

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

دوره های آموزشی