PHP ရှိ OOP တွင် အင်တာဖေ့စ်များစွာ
PHP တွင် အမွေဆက်ခံမှု ဗီဇပေါင်းစုံမရှိပါ - ကလပ်စ်တစ်ခုစီသည် မိဘတစ်ဦးတည်းသာ ရနိုင်ပါသည်။
သို့သော် အင်တာဖေ့စ်များနှင့်ပတ်သက်၍ အခြေအနေမှာ ကွဲပြားပါသည် -
ကလပ်စ်တစ်ခုစီသည် အင်တာဖေ့စ်အရေအတွက် မည်မျှပင်မဆို အကောင်အထည်ဖော်နိုင်ပါသည်။ ယင်းအတွက် အင်တာဖေ့စ်အမည်များအား
သော့ချက်စကားလုံး implements နောက်တွင် ကော်မာဖြင့် စာရင်းပြုစုပေးရန် လိုအပ်ပါသည်။
ဤသည်မှာ အင်တာဖေ့စ်များ၏ ထပ်ဆင့်ကွဲပြားချက်တစ်ခုဖြစ်ပြီး - အင်တာဖေ့စ်များစွာကို အကောင်အထည်ဖော်နိုင်သော်လည်း အယ်ဘ်စထရက်ကလပ်စ်များစွာကိုမူ အမွေဆက်ခံ၍မရနိုင်ပါ။
လက်တွေ့စမ်းကြည့်ကြပါစို့။ အင်တာဖေ့စ် iFigure မှလွဲ၍ ကျွန်ုပ်တို့တွင် အင်တာဖေ့စ် iTetragon လည်း ရှိသည်ဆိုပါစို့။
ဤအင်တာဖေ့စ်၏ မက်သဒ်များကို ကလပ်စ်များ Quadrate နှင့် Rectangle များမှ
အကောင်အထည်ဖော်မည်ဖြစ်ပြီး ၎င်းတို့တွင် 4 ဘက်များ ရှိသောကြောင့်ဖြစ်ကာ၊ ကလပ်စ်
Disk ကတော့ အကောင်အထည်ဖော်မည် မဟုတ်ပါ။
အင်တာဖေ့စ် iTetragon သည် စတုဂံပုံစံတစ်ခု၏
အနားလေးဘက်စလုံးအတွက် ဂက်တာများကို ဖော်ပြသည်ဆိုပါစို့ -
<?php
interface iTetragon
{
public function getA();
public function getB();
public function getC();
public function getD();
}
?>
ထို့အပြင် ကျွန်ုပ်တို့ ယခင်က ဖန်တီးခဲ့သည့် အင်တာဖေ့စ် iFigure လည်း ရှိသည်ဆိုပါစို့-
<?php
interface iFigure
{
public function getSquare();
public function getPerimeter();
}
?>
ကလပ်စ် Quadrate သည် အင်တာဖေ့စ်နှစ်ခုကို အကောင်အထည်ဖော်စေရန် ပြုလုပ်ကြပါစို့။ ယင်းအတွက် အင်တာဖေ့စ်နှစ်ခုလုံးအား
သော့ချက်စကားလုံး implements နောက်တွင် ကော်မာခြားကာ စာရင်းပြုစုပေးရပါမည်-
<?php
class Quadrate implements iFigure, iTetragon
{
// အကောင်အထည်ဖော်မှု ဤနေရာတွင် ရှိမည်
}
?>
ယခု ကျွန်ုပ်တို့၏ ကလပ်စ် Quadrate ကို အင်တာဖေ့စ် iTetragon ကို
အကောင်အထည်ဖော်နိုင်ရန် ပြင်ဆင်ကြပါစို့။
ကျွန်ုပ်တို့၏ စတုရန်းသည် စတုဂံပုံစံ၏ အထူးကိစ္စတစ်ခုဖြစ်ကြောင်း ရှင်းနေပါသည်၊
အဘယ်ကြောင့်ဆိုသော် စတုရန်းတွင်
အနားအားလုံး ညီညာသောကြောင့်ဖြစ်သည်။ ထို့ကြောင့် မက်သဒ်အသစ်အားလုံးသည်
တူညီသောအရာကို ပြန်ပေးမည်ဖြစ်သည် - စတုရန်း၏ အနားအလျားဖြစ်သည်-
<?php
class Quadrate implements iFigure, iTetragon
{
private $a;
public function __construct($a)
{
$this->a = $a;
}
public function getA()
{
return $this->a;
}
public function getB()
{
return $this->a;
}
public function getC()
{
return $this->a;
}
public function getD()
{
return $this->a;
}
public function getSquare()
{
return $this->a * $this->a;
}
public function getPerimeter()
{
return 4 * $this->a;
}
}
?>
ထင်ရှားသည်မှာ စတုဂံတွင် အနားအားလုံး တူညီမနေတော့ဘဲ၊
ဆန့်ကျင်ဘက်အနားများသာ တူညီပါသည်။
ထိုသို့ဆိုလျှင် မက်သဒ်အသစ်များသည် အနည်းငယ်
ကွဲပြားလာပါမည်။ ကောင်းပြီ၊ တြာပီဇီယမ်တစ်ခုခုတွင်
အနား 4 ခုစလုံးပင် ကွဲပြားနေပါမည်။
သို့ရာတွင်၊ ကျွန်ုပ်တို့ စဉ်းစားသော ပုံသဏ္ဌာန်သည် မည်သည့်ပုံစံဖြစ်သည်က မအရေးမကြီးပါ - အရေးကြီးသည်မှာ ထိုပုံသဏ္ဌာန်အားလုံးတွင် ဖော်ပြထားသောမက်သဒ်များ ရှိမည် (ပုံသဏ္ဌာန်အချို့မှာ အထူးကိစ္စများဖြစ်နေသော်လည်း) ဖြစ်ပြီး တစ်မျိုးတစ်စားတည်းသာ အလုပ်လုပ်မည် ဖြစ်သည်။
ကလပ်စ် Rectangle သည်လည်း အင်တာဖေ့စ်နှစ်ခုကို အကောင်အထည်ဖော်စေရန် ပြုလုပ်ပါ - iFigure နှင့်
iTetragon တို့ဖြစ်သည်။
အင်တာဖေ့စ် iCircle ကို မက်သဒ်များ
getRadius နှင့် getDiameter တို့ဖြင့် ဖန်တီးပါ။
ကလပ်စ် Disk သည်လည်း အင်တာဖေ့စ်နှစ်ခုကို အကောင်အထည်ဖော်စေရန် ပြုလုပ်ပါ - iFigure နှင့်
iCircle တို့ဖြစ်သည်။