JavaScript တွင် အတန်းများနှင့် အရာဝတ္ထုများ နိဒါန်း
ယခုအခါ ကျွန်ုပ်တို့သည် JavaScript ရှိ OOP ကို လေ့လာမည်။ ဘဝမှ ဥပမာတစ်ခုကို ကြည့်ကြပါစို့၊ ထို့နောက် ၎င်းကို JavaScript သို့ ရွှေ့ပြောင်းကြမည်။
ဥပမာအနေဖြင့် ကားတစ်စီးကို ယူကြမည်။ ၎င်းတွင် ဘီးများ၊ အရောင်၊ ကားကိုယ်ထည်အမျိုးအစား၊ အင်ဂျင်အရွယ်အစား စသည်တို့ ရှိသည်။ ထို့အပြင်၊ မောင်းသူသည် သူ့အား ညွှန်ကြားချက်များ ပေးနိုင်သည်- မောင်းရန်၊ ရပ်ရန်၊ ညာဘက်ကွေ့ရန်၊ ဘယ်ဘက်ကွေ့ရန် စသည်တို့ဖြစ်သည်။
ယာဉ်အမျိုးအစားများ၏ အတန်းclass တစ်ခု ရှိသည်ဟု ပြောနိုင်သည်၊ ၎င်းတွင် အထွေထွေအင်္ဂါရပ်များ (အားလုံးတွင် ဘီးများရှိပြီး အားလုံးကို ညွှန်ကြားချက်များ ပေးနိုင်သည်) ရှိသည်။
လမ်းပေါ်တွင် ရပ်နေသော သီးခြားကားတစ်စီးမှာ - ဤအတန်း၏ ကိုယ်စားလှယ်ဖြစ်သည်၊ သို့မဟုတ် အခြားစကားလုံးဖြင့် ဤအတန်း၏ object ဖြစ်သည်။ ဤအတန်း၏ အရာဝတ္ထုအားလုံးတွင် properties များ ရှိသည်- ဘီးအရေအတွက်၊ အရောင်၊ ကားကိုယ်ထည်အမျိုးအစားနှင့် methods များ- မောင်းရန်၊ ရပ်ရန်၊ ညာဘက်ကွေ့ရန်၊ ဘယ်ဘက်ကွေ့ရန်။
တစ်နည်းအားဖြင့် အတန်းကိုယ်တိုင်သည် ပုံစံဇယား (blueprint) ဖြစ်သည်၊ ထိုအရာကို အခြေခံ၍ စက်ရုံတွင် ကားများ ပြုလုပ်သည်။ အရာဝတ္ထု ကတော့ ထိုပုံစံဇယားများအတိုင်း ပြုလုပ်ထားသော ကားကိုယ်တိုင် ဖြစ်သည်။
JavaScript တွင် အတန်းကို သော့ချက်စကားလုံးclass ဖြင့် ဖန်တီးသည်၊
ထို့နောက် ထိုအတန်း၏ အမည်ကို ရေးသည်။
အတန်းCar ကို ဖန်တီးကြပါစို့-
class Car {
// ဒီမှာ ကုဒ်၊ ဆိုလိုသည်မှာ JavaScript ကားပုံစံဇယား
}
ယခု ကျွန်ုပ်တို့၏ ပုံစံဇယားတွင် ဤပုံစံဇယားအတိုင်း ဖန်တီးထားသော မည်သည့်ကားမဆို အရောင်အတွက် ပိုင်ဆိုင်မှု (property) တစ်ခုနှင့် လောင်စာဆီပမာဏအတွက် ပိုင်ဆိုင်မှု တစ်ခု ရှိမည်ဟု သတ်မှတ်ကြမည်။
ဤသို့လုပ်ဆောင်ရန် အတန်းအတွင်း ပိုင်ဆိုင်မှုcolor နှင့် ပိုင်ဆိုင်မှုfuel ကို ရေးကြမည်-
class Car {
color; // ကား၏အရောင်
fuel; // လောင်စာဆီပမာဏ
}
ယခု ကျွန်ုပ်တို့အတန်း၏ နည်းလမ်းများ (methods) ကို ဖန်တီးကြပါစို့။
JavaScript တွင် နည်းလမ်းများသည် ပုံမှန်လုပ်ဆောင်ချက်များနှင့် ဆင်တူသည်၊
သို့သော် သော့ချက်စကားလုံးfunction မပါဘဲ ကြေညာထားသည်။
အထက်တွင် ဖော်ပြခဲ့သည့်အတိုင်း ကျွန်ုပ်တို့၏ ကားသည် မောင်းနိုင်သည်၊ လှည့်နိုင်သည်၊ ရပ်နိုင်သည်။ ကျွန်ုပ်တို့၏ အတန်းတွင် သက်ဆိုင်ရာ နည်းလမ်းများကို ဖန်တီးကြမည်-
class Car {
color; // ကား၏အရောင်
fuel; // လောင်စာဆီပမာဏ
// မောင်းရန် ညွှန်ကြားချက်-
go() {
// JavaScript ကုဒ် တစ်ချို့
}
// လှည့်ရန် ညွှန်ကြားချက်-
turn() {
// JavaScript ကုဒ် တစ်ချို့
}
// ရပ်ရန် ညွှန်ကြားချက်-
stop() {
// JavaScript ကုဒ် တစ်ချို့
}
}
ကျွန်ုပ်တို့သည် သင်နှင့်အတူ ကျွန်ုပ်တို့၏ ကား၏ ပုံစံဇယားကို ဖန်တီးပြီးပြီ။ ယခု စက်ရုံသို့ သွားပြီး ဤအတန်း၏ အရာဝတ္ထု (ဆိုလိုသည်မှာ သီးခြားကားတစ်စီး) ကို ဖန်တီးရန် လိုအပ်သည်။
JavaScript တွင် ဤအရာကို သော့ချက်စကားလုံးnew ဖြင့် လုပ်ဆောင်သည်၊
ထို့နောက် အတန်း၏ အမည်ကို ရေးသည်-
new Car; // ကားဖန်တီးရန် စက်ရုံအား အမိန့်ပေးသည်
သို့သော်၊ အတန်း၏ အရာဝတ္ထုကို ရိုးရိုးဖန်တီးလိုက်ခြင်းသည် ဘာမှ မဖြစ်စေပါ (ဥပမာအားဖြင့်၊ ခင်းကျင်းတစ်ခု ကြေညာပြီး ဘယ်မှမှ မရေးသားခြင်းနှင့် အတူတူပင်ဖြစ်သည်)။ ဤအရာဝတ္ထုကို သိမ်းဆည်းရန် ကိန်းရှင် (variable) တစ်ခု ကျွန်ုပ်တို့ လိုအပ်သည်။
ထိုကိန်းရှင်ကို myCar ဟု ခေါ်ပါစို့
- ကျွန်ုပ်တို့ဖန်တီးထားသော အရာဝတ္ထုကို ၎င်းအတွင်း ရေးကြမည်-
let myCar = new Car;
ကားဖန်တီးပြီးနောက် ၎င်း၏ ပိုင်ဆိုင်မှုများ (properties) ကို ရည်ညွှန်းနိုင်သည်။ ၎င်းတို့ကို ရည်ညွှန်းခြင်းသည် အစက်ဖြင့် (through a dot) ဖြစ်ပျက်သည်။ ကျွန်ုပ်တို့၏ အရာဝတ္ထု၏ ပိုင်ဆိုင်မှုများကို သတ်မှတ်ကြမည်-
let myCar = new Car; // ကားဖန်တီးရန် စက်ရုံအား အမိန့်ပေးသည်
myCar.color = 'red'; // အနီရောင်သို့ ဆေးသင်သည်
myCar.fuel = 50; // လောင်စာဆီ ဖြည့်သည်
အားလုံးပြီးပြီ၊ ကျွန်ုပ်တို့၏ ကားကို ဖန်တီးပြီး၊ ဆေးသင်ပြီး၊ လောင်စာဆီဖြည့်ပြီးပြီ။ ယခု ကျွန်ုပ်တို့သည် ဤကား၏ နည်းလမ်းများမှတစ်ဆင့် ၎င်းအား ညွှန်ကြားချက်များ ပေးနိုင်သည်။
နည်းလမ်းများကို ရည်ညွှန်းခြင်းသည်လည်း အစက်ဖြင့် ဖြစ်ပျက်သည်၊ သို့သော်၊ ပိုင်ဆိုင်မှုနှင့် မတူဘဲ၊ နည်းလမ်းအမည်၏ နောက်တွင် ကွင်းဝိုင်းများ ရေးရသည်။ ကျွန်ုပ်တို့၏ အရာဝတ္ထုအား ညွှန်ကြားကြပါစို့-
myCar.go();
myCar.turn();
myCar.stop();