pedia-learning

ورود

گذرواژه‌تان را فراموش کرده‌اید؟

ثبت نام

ثبت نام
انجمن عمومی گسترش فناوری آگو

اگر اولین بار از انجمن بازدید می کنید برای دسترسی کامل به انجمن عضو شوید بعد عضویت قادر به ارسال مطلب و شرکت در بحث خواهید داشت

ارسال پاسخ 
 
امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
آموزش مفاهیم پایه شی گرایی در PHP (جلسه اول)
01-31-2013, 03:18 PM
ارسال: #3
آموزش مفاهیم پایه شی گرایی در PHP (جلسه سوم)
پولی مورفیسم

می شه گفت پیچیده ترین روش برنامه نویسی در مبحث oop بر می گرده به این بخش . با استفاده از این روش می توانید کنترل برنامه را افزایش داده و از تعریف چند آبجکت برای چند کلاس جلوگیری کرد .
این مثال از صفحه 67 و 68 PHP 5 Power Programming هست .

کد php:
class Cat {
    function 
miau()
    {
        print 
"miau";
    }
}
class 
Dog {
    function 
wuff()
    {
        print 
"wuff";
    }
}
function 
printTheRightSound($obj)
{
    if (
$obj instanceof Cat)
    {
        
$obj->miau();
    }
    else if (
$obj instanceof Dog)
    {
        
$obj->wuff();
    }
    else
    {
        print 
"Error: Passed wrong kind of object";
    }
    print 
"\n";
}
printTheRightSound(new Cat());
printTheRightSound(new Dog());
 
 
/*
خروجی :
 
    miau
    wuff
*/ 

جالب بود نه ؟

عملکرد برنامه :

دو کلاس یکی با نام Cat و دیگری با نام Dog وجود دارد . تابع printTheRightSound با استفاده از پولی مورفیسم به دنبال کلاس مورد نظر می گردد و تابع موجود در کلاس را صدا می زند .

ولی یک اشکال در این روش وجود دارد .. اگر بخواهیم چند صدا از دیگر حیوانات اضافه کنیم باید بدنه Else If را گسترش بدهیم که این روش خوانایی برنامه را پایین می آورد .. راه حل جالبی برای این کار در PHP وجود دارد . آن هم استفاده از توارث است .

این بار یک کلاس با نام Animal به برنامه اضافه می کنیم. به این کد با دقت نگاه کنید :

کد php:
class Animal {
    function 
makeSound()
    {
        print 
"Error: This method should be re-implemented in the children";
    }
}
class 
Cat extends Animal {
    function 
makeSound()
    {
        print 
"miau";
    }
}
class 
Dog extends Animal {
    function 
makeSound()
    {
        print 
"wuff";
    }
}
function 
printTheRightSound($obj)
{
    if (
$obj instanceof Animal)
    {
        
$obj->makeSound();
    }
    else
    {
        print 
"Error: Passed wrong kind of object";
    }
    print 
"\n";
}
printTheRightSound(new Cat());
printTheRightSound(new Dog());
 
/*
خروجی :
 
    miau
    wuff
*/ 

خب همونطور که دیدید مشکل گسترش بدنه Else If هم حل شد .
نیاز به توضیح خاصی نیست (اینجور که فکر می کنم). در صورت اینکه سوالی بود همینجا بپرسید
نقل قول این ارسال در یک پاسخ
ارسال پاسخ 


پیام‌های داخل این موضوع
آموزش مفاهیم پایه شی گرایی در PHP (جلسه سوم) - agotd - 01-31-2013 03:18 PM

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان


Persian Translation by MyBBIran.com - Ver: 4.1
Powered by MyBB, © 2002-2024 MyBB Group.
Theme designed by Marvel (Sidebar created by Yaldaram - Yaldaram.com)
Theme Translation by Mt Edition