OOP

OOP မှာ အမျိုးအစား လေးမျိုးရှိတယ်။

  1. Abstraction

  2. Encapsulation

  3. Inheritance

  4. Polymorphism

Abstraction

Abstraction ကတော့ အလုပ်ခွဲခြားလုပ်ကိုင်ခြင်းလို့ခေါ်ပါတယ်။ သူ့အလုပ်သူ လုပ်စေတာပေါ့။ ဉပမာ - စားသောက်ဆိုင်မှာဆိုရင် ဝိတ်တာက ဝိတ်တာအလုပ်လုပ်မယ်၊ စားဖိုမှူးက စားဖိုမှုးအလုပ်ပေါ့၊ ငွေကိုင်က ငွေကိုင်အလုပ် ခွဲခြားလုပ်ကိုင်ခြင်းကိုခေါ်တာပါ။ တစ်ယောက်တည်း တစ်ခုတည်းက အကုန်လုပ်နေရင် အဆင်မပြေဘူးလေ။ တိုင်ပတ်သွားနိုင်တယ်။ ဒ့ါကြောင့် Code တွေရေးတဲ့အခါမှာလည်း Abstraction လို့ခေါ်တဲ့ Function တွေ၊ Class တွေ၊ Object တွေကို ခွဲခြားရေးသင့်ပါတယ်။

Encapsulation

Encapsulation ကတော့ အသေးစား ဆုံးဖြတ်ချက်တွေ ချတဲ့အပိုင်းလို့ ဆိုနိုင်ပါတယ်။ ဉပမာ - စားပွဲထိုးက စားဖိုမှုးကို ဟင်းဘယ်လိုချက်ရမယ် သွားပြောနေလို့အဆင်ပြေဘူးလေ။ ဒီတော့ စားဖိုမှုးက ဟင်းဘယ်လိုချက်မယ်၊ ဘယ်ပြင်ဆင်မလဲဆိုတာ သူကိုယ်တိုင် ဆုံးဖြတ်ချက်ချရမယ်။ ဒါ့ကြောင့်လဲ စားသောက်ဆိုင်တွေမှာ မီးဖိုချောင်ကသက်သက်ထားတာပေါ့။ Coding မှာဆိုရင်တော့ ဉပမာ မေးခွန်နဲ့အဖြေ ပေးတဲ့ App တွေ ဆိုပါစို့။ မေးခွန်းတွေအဖြေတွေ ဆုံးဖြတ်ပေးတာကို သက်ဆိုင်ရာ Function ကပဲ ဆုံးဖြတ်ပိုင်ခွင့်ပေးတာမျိုးပါ။ မဆိုင်တဲ့ Function ကနေဆုံးဖြတ်ချက် ပေးတာမျိုးက မဖြစ်သင့်ပါဘူး။

ဒီတော့ ကျွန်တော်တို့ properties တွေကို private အနေနဲ့ သုံးစွဲရပါတယ်။ ဒီလိုသုံးစွဲဖို့ရင် properties name ရဲ့ရှေ့ underscore ထည့်ပေးရပါတယ်။

List<Question> _questionBank = [
];

ဒီတော့ ကျွန်တော်တို့အနေနဲ့ private properties တွေကို အသုံးပြုဖို့ဆိုရင် Function အသစ်တစ်ခု create လုပ်ပေးရပါတယ်။ ဉပမာ -

quiz_brain.dart
String getQuestionNumber(int questionNumber){
    return _questionBank[quesitonNumber].questionText;
}

  bool getQuestionAnswer(int questionNumber){
    return _questionBank[questionNumber].questionAnswer;
  }

ဒီသင်ခန်းစာမှာဆိုရင် ကျွန်တော်တို့ app က question ကုန်သွားလည်း ထပ်ပြီး questionNumber ကို ပေါင်းနေတဲ့အတွက် Error result ရရှိပါတယ်။ ဒါကို fix ဖို့အတွက် main.dart file ထဲက int questionNumber = 0; ကို quiz_brain.dart ဖိုင်ထဲက QuizBrain Class ထဲကိုထည့်လိုက်ပါမယ်။ ပြီးရင်တော့ သူ့ကိုလည်း private properties ပြောင်းလိုက်ပါတယ်။ int _quesitonNumber = 0;ဒါ့အပြင် ကျွန်တော်တို့ စောစောက ရေးထား code ကိုလည်း အောက်ပါအတိုင်းပြင်လိုက်ပါမယ်။

ပြီးရင်တော့ သူ့အတွက်ကျွန်တော်တို့ method တစ်ခု create လုပ်ပါမယ်။

Inheritance

Inheritance ကတော့ မျိုးရိုးဗီဇ ဇယားပုံစံ နည်းသွားဆင်ပါတယ်။ ကျွန်တော်တို့အနေနဲ့ တူညီတဲ့ properties တွေကို ထပ်ခါထပ်ခါမရေးပဲ dart မှာဆိုရင် extends လုပ်ပြီး အသုံးပြုလို့ရနိုင်တာပဲဖြစ်ပါတယ်။ ဉပမာ -

Polymorphism

Polymorphism ကတော့ custom behavior တွေ create လုပ်တဲ့နေရာမှာအသုံးပြုပါတယ်။ Inheritance လုပ်ထားတဲ့ class ကိုမှာ ကိုယ်ပိုင် style (သို့) properties တွေကို စိတ်ကြိုက် ပြင်ဆင်သုံးစွဲနိုင်ခြင်းပဲဖြစ်ပါတယ်။ ဉပမာ

Last updated

Was this helpful?