Chapter 2: Inheritance & Polymorphism
OOP ရဲ့ အားသာချက်ကတော့ ကုဒ်တိကို ထပ်ခါထပ်ခါ မရွီးရဘဲ ပြန်လို့အသုံးပြုနိုင်ခြင်း (Reusability) နန့် ပြောင်းလွယ်ပြင်လွယ်ဟိခြင်း (Flexibility) ဖြစ်ပါရေ။
1. Inheritance (မျိုးရိုးလိုက်ခြင်း)
မျိုးရိုးလိုက်ရေဆိုစွာ "အီးယို" ပါးက အရည်အချင်းတိကို "သားသမီး" က အမွီဆက်ခံရဟိခြင်း ဖြစ်ပါရေ။
လက်တွိ့ဥပမာ - ဖုန်း (Phone)
ကျွန်တော်ရို့မှာ ရိုးရိုးဖုန်း (Keypad Phone) တစ်လုံးဟိရေ ဆိုပါဖိ။
- Phone (Parent): ဖုန်းခေါ်နိုင်ရေ၊ စာပို့နိုင်ရေ။
နောက်ထပ် စမတ်ဖုန်း (Smart Phone) တစ်လုံး ထပ်ထုတ်ရေ။
- SmartPhone (Child): ရိုးရိုးဖုန်းလုပ်နိုင်စွာတိ (ဖုန်းခေါ်၊ စာပို့) အကုန်လုပ်နိုင်ရေ။ ယင့်အပြင် အင်တာနက်သုံးစာ၊ ဂိမ်းကစပ်စာတိပါ ထပ်ဖြည့်စွက်နိုင်ရေ။
SmartPhone သည် Phone ဖြစ်ရေ (SmartPhone IS-A Phone). ကုဒ်ပြန်ရွီးစရာမလိုဘဲ Phone က လုပ်ဆောင်ချက်တိကို ယူသုံးလိုက်လို့ရပါရေ။
Class Phone
Method call()
PRINT "Calling..."
End Method
Method sendSMS()
PRINT "Sending Message..."
End Method
End Class
// SmartPhone သည် Phone ဆီက အကုန်အမွေရရေ
Class SmartPhone INHERITS FROM Phone
Method surfInternet()
PRINT "Browsing Website..."
End Method
End Class
2. Polymorphism (ပုံစံအမျိုးမျိုး ဆောင်ခြင်း)
Polymorphism ဆိုစွာ "Poly" (အများ) နန့် "Morph" (ပုံစံ) က လာစွာပါ။ လုပ်ဆောင်ချက် (Method) နာမည် တူကေလည်း လုပ်ဆောင်ပုံ (Behavior) ကွဲပြားနိုင်စွာကို ဆိုလိုပါရေ။
လက်တွေ့ဥပမာ - "Play" ခလုတ်
Remote Control က "Play" ခလုတ် တစ်ခုတည်း ဖြစ်ပေမယ့်၊ ဇာစက်နန့် တွဲသုံးလဲပေါ်မူတည်ပနာ အလုပ်လုပ်ပုံ ကွဲလားပါရေ။
- Music Player မှာ နှိပ်ကေ -> တေးခင်းသံ ထွက်လာဖို့။
- Video Player မှာ နှိပ်ကေ -> ဗီဒီယို ပြပီးဖို့။
Pseudo Code
Class MusicPlayer
Method play()
PRINT "Playing Song 🎵"
End Method
End Class
Class VideoPlayer
Method play()
PRINT "Playing Movie 🎬"
End Method
End Class
// အသုံးပြုပုံ
player1 = NEW MusicPlayer()
player1.play() // Output: Playing Song 🎵
player2 = NEW VideoPlayer()
player2.play() // Output: Playing Movie 🎬
သင်ခန်းစာ အကျဉ်းချုပ်
- Inheritance: မိဘ Class က အရည်အချင်းတိကို သားသမီး Class က ဆက်ခံရဟိခြင်း။ (ကုဒ်ကို ပြန်သုံးနိုင်ရေ)
- Polymorphism: လုပ်ဆောင်ချက် နာမည်တူကေလည်း အခြီအနိီပေါ်မူတည်ပနာ အလုပ်လုပ်ပုံ ကွဲပြားခြင်း။
လေ့ကျင့်ခန်း (Exercises)
- Vehicle Inheritance:
Vehicle(ယာဉ်) ဟူသော Parent Class တစ်ခု ရှိပါဖိ။Carနှင့်Planeကို Child Classes အဖြစ် သတ်မှတ်ပါ။Carတွင်drive()ရှိပြီးPlaneတွင်fly()ရှိအောင် ဖန်တီးကြည့်ပါ။ - Shape Polymorphism:
ShapeClass တွင်draw()method ရှိသည်။Circleနှင့်Squareရို့ရေShapeမှ ဆင်းသက်လာပြီးdraw()ကို ခေါ်လိုက်လျှင် မတူညီရေ ပုံစံတိ (စက်ဝိုင်း၊ စတုရန်း) ဆွဲပြအောင် ဇာပိုင် စီစိုင်ဖို့လည်း?