April 29, 2012

Class နှင့် Method

အခြေခံ ပရိုဂရမ်မင်း ခေါင်းစဉ်ဖြင့် Java ပရိုဂရမ်မင်း၏ အခြေခံသဘောတရားများကို ဖော်ပြခဲ့သည်မှာ ၅ကြိမ်မြောက်ရှိပြီ ဖြစ်၏။ Script ဘာသာရပ်များဆိုလျှင် ဤအခြေအနေလောက်ဆိုလျှင် တော်ရုံ ပရိုဂရမ်များ စရေးနိုင်ပြီထင်၏။ သို့ရာတွင် Java မှာမူ မရေးနိုင်သေးပေ။ ကိန်းများ၊ သင်္ကေတများနှင့် ကွန်တရိုးများရလျှင် တော်ရုံ လော့ဂျစ်များကို စဉ်းစားနိုင်မည် ဖြစ်၏။ သို့ရာတွင် ဤအရာမှာ နိုင်ငံခြားဘာသာစကား သင်စလူတစ်ယောက်နှင့် တူ၏။ အရမ်းလည်းပြောချင်နေပြီ။ သို့ရာတွင် တစ်ခုခုလိုနေသလို။ ပြန်စဉ်းစားကြည့်မည် ဆိုလျှင် ဤပြောလိုစိတ်သည် အလွန်အရေးကြီးပါသည်။

ကျွှန်တော် တက္ကသိုလ် ပဋ္ဌမနှစ် တက်တုန်းက အကြောင်းကို ပြန်စဉ်းစားမိပါသည်။ Java အတန်းတက်ရင်း တစ်ရက် ကျောင်းပြေးမိပါသည်။ မှတ်မှတ်ရရ မက်သတ်အကြောင်းကို သင်သည့်အချိန်ဖြစ်၏။ void ဆိုတာဘာလည်း၊ return ဆိုတာဘာလည်း။ ကောင်းကောင်းနားမလည်ပါ။ နောက်တစ်ခေါက် ကျောင်းတက်ချိန်တွင် ရုတ်တရက် ဆရာက ပုဒ်စာတစ်ခုချပေးပါသည်။ မက်သတ်ကိုသုံးပြီး၊ ပါရာမီတာအလိုက် လုပ်ဆောင်ပုံများကို အမျိုးမျိုးခွဲစေနိုင်သော ပုဒ်စာဖြစ်ပါသည်။ သို့ရာတွင် ကျွှန်တော်မှာ ပြီးခဲ့တဲ့အပါတ်က ကျောင်းပြေးမိပါသဖြင့် နားမလည်လိုက်ပါ။ မက်သတ်ကို ဘယ်လိုသုံးရမှန်းမသိ။ ဒါပေမယ့် ကွန်တရိုးတွေနဲ့ ကိန်းကိုသိပါသည်။ ပြီတော့ main ထဲကနေ ပြီးခဲ့တဲ့သင်ခန်းစာတွေတုန်းက ရေးဘူးပါသည်။ ကဲမထူးဘူးဆိုပြီး၊ ရှိသမျှခေါင်းထဲက အကြံတွေထုတ်ပြီး ဖြစ်အောင်ရေးခဲ့ပါသည်။ ပြီးတော့ ဆရာက ခေါ်ပြီး ဘာလို့ မက်သတ်ကို မသုံးတာလဲဟုမေးသည်။ ကျွှန်တော်က မက်သတ်ဆိုတာဘာလဲ ဟုပြန်မေးပါသည်။ အဲ့ဒီမှာ ကျောင်းပြေးတာပေါ်ပါတော့သည်။ ဒါပေမယ့် အားလုံးရဲ့စာစစ်ပြီးတဲ့အချိန်မှာ ဆရာက ကျွှန်တော်ရေးတဲ့ ပရိုဂရမ်ကို နမှုနာပြပြီး ပရိုဂရမ်ဆိုတာ ဘယ်လိုရေးရေးရတဲ့အကြောင်းကို ဖော်ပြခဲ့ပါသည်။

မှန်၏၊ ပရိုဂရမ်ဆိုသည်မှာ လိုချင်တာကို ဖြစ်ရင် မှန်ပါသည်။ ရေးပုံရေးနည်း အမျိုးမျိုးရှိ၏။ ရေးမည်ဆိုလျှင် အစင်ဘလာ ဘာသာရပ်ကဲ့သို့ အစမှ အဆုံး တောက်လျှောက် ရေးချသွားနိုင်၏။ အသုံးပြုနည်းများကို ကြွယ်ကြွယ်ဝဝ အသုံးပြုပြီး၊ ရှင်းလင်းစွာလည်း ရေးသားနိုင်၏။ ရှည်လွန်း၍ ရှုပ်ထွေးသော ပရိုဂရမ်နှင့် လိုရင်းတိုရှင်း ပရိုဂရမ်မှာ ဘယ်အရာကောင်းသနည်း။ မေးစရာတောင်လိုမည် မဟုတ်။ စာလုံးတစ်လုံးပိုရေးရလျှင် စာလုံးတလုံးစာ လက်ပိုညောင်းပါသည်။ တတ်နိုင်လျှင် စိတ်ကူးရုံနဲ့ အလုပ်လုပ်ပေးနိုင်သော ပရိုဂရမ်သည် အကောင်းဆုံး ဖြစ်ပါလိမ့်မည်။

အဲ့ဒီအတွက် ကျွှန်တော်တို့ ဘာတွေကိုလေ့လာဖို့ လိုအပ်သနည်း။ ပရိုဂရမ်မင်းဘာသာရပ်များသည် ကိုယ်စီ ထူးခြားချက်များကို ပိုင်ဆိုင်၏။ ပြောစရာတောင်လိုမည် မထင်၊ Java သည် Class ကို အခြေခံသော Object Oriented ပရိုဂရမ်မင်းဘာသာရပ်ဖြစ်၏။ ကျွှန်တော်တို့ ဒီတစ်ခေါက် Java ၏ Class နှင့် ၎င်း၏ အသုံးပြုပုံတို့ကို လေ့လာသွားပါမည်။



Class ဆိုသည်မှာ


Java သည် Class ကို အခြေခံသော Object Oriented Programming ဘာသာရပ် တစ်မျိုးဖြစ်၏။ Class ဆိုသည်မှာ Object တစ်ခု၏ အရည်အချင်းများကို ဖော်ပြနိုင်ရန်အတွက် လိုအပ်သော အကြောင်းအရာများကို စုစည်းထားသော အချက်အလက် အစုအစည်းတစ်ခု ဖြစ်ပါသည်။

ဥပမာအားဖြင့် လက်တွေ့ဘဝအား ကွန်ပျူတာ မံမိုရီ အပေါ်ခေါ်ယူ အသုံးချခြင်းကို စဉ်းစားကြည့်ပါမည်။ စားသောက်ဆိုင် တစ်ဆိုင်ရှိပါမည်။ အထက်ပါပုံကို java ပရိုဂရမ်တစ်ခု ရေးရန် စဉ်းစားကြည့်ပါမည်။


ထိုဆိုင်အတွင်းတွင် အောင်အောင်၊ မနီလာနှင့် မသန္တာတို့ ရှိကြသည် ဟု ဆိုကြပါစို့။ မနီလာနှင့် မသန္တာတို့သည် ဧည့်သည်ဆိုသည့် ကလပ်စ်မှ instance လုပ်ထားသော object များဖြစ်ကြပြီး၊ အောင်အောင်သည် စာပွဲထိုး ဆိုသည့် ကလပ်စ်မှ instance လုပ်ထားသော object ဖြစ်ပါသည်။


စာပွဲထိုးနှင့် ဧည့်သည်တို့သည် ကလပ်စ်များဖြစ်ကြပြီး၊ စာပွဲထိုးဆိုသည့်ကလပ်စ်တွင် စာပွဲထိုးတစ်ယောက် ပိုင်ဆိုင်သင့်သည့် အချက်အလက်များနှင့် စာပွဲထိုးက လုပ်ဆောင်နိုင်သော လုပ်ဆောင်ချက်များကို သက်မှတ် ရေးသားထားပါသည်။ ဥပမာအားဖြင့် သူ၏ အမည်၊ ရာထူးအဆင့်အတန်း၊ လစာ၊ လုပ်သက်၊ အရည်အချင်းများ အစရှိသည့်အချက်အလက်များအပြင် အော်ဒါမှာယူခြင်း၊ အရက်စပ်ခြင်း၊ စားပွဲများကိုပို့ပေးခြင်း၊ သိမ်းဆည်းခြင်း အစရှိသည့် လုပ်ဆောင်ချက်များကိုလည်း ပြင်ဆင်ထားရန် လိုအပ်ပါသည်။ တဖန် အောင်အောင်သည် စာပွဲထိုးကလပ်စ်၏ အင်းစတန့်စ် (instance) လုပ်ထားသော အော့ဘဂျက် (Object) ဖြစ်ပါသဖြင့် အောင်အောင် အော့ဘဂျက်သည် စပွဲထိုကလပ်စ်၏ လုပ်ဆောင်ချက်များကို လုပ်ဆောင်နိုင်ပေမည်။ ဥပမာအားဖြင့် အောင်အောင်သည် စာပွဲထိုးဖြစ်ခြင်းကြောင့်၊ အော်ဒါများမှာယူခြင်း၊ အရက်ဖျော်စပ်ခြင်းများကို လုပ်ဆောင်နိုင်ပေမည်။

အကျဉ်းဆုံးဆိုရမည် ဆိုလျှင် အော့ဘဂျက်သည် လက်ရှိလောကတွင်တည်ရှိသော ရုပ်ဝတ္တုများကို ကိုယ်စားပြုထားသော မံမိုရီအပေါ်ရှိ အချက်အလက် အစုအဝေးဖြစ်ပြီး၊ ကလပ်စ်ဆိုသည်မှာ ထိုအော့ဘဂျက်များသည် မည်သည့်အရာဖြစ်သည်ကို သတ်မှတ်ပေးနိုင်သော ဒီဇိုင်းပုံ တစ်ခုဖြစ်ပါသည်။ ပြိုင်ကားတစ်စီး၏ ဒီဇိုင်းပုံအတိုင်း တည်ဆောက်ထားသော ရုပ်ဝတ္တုသည် ပြိုင်ကားတစ်စီးဖြစ်လာပြီး၊ ကုန်တင်ကား ဒီဇိုင်းပုံအတိုင်း တည်ဆောက်ပါက ကုန်တင်ကား တစ်စီးဖြစ်လာမည် ဖြစ်သည်။


ပိုင်ဆိုင်မှု့ အချက်အလက်များ


ကလပ်စ်တစ်ခုသည် အော့ဘဂျက်မှ ပိုင်ဆိုင်သင့်သော အချက်အလက်များနှင့် လုပ်ဆောင်ချက်များကို သက်မှတ်ပေးသည်ဟု ဖော်ပြခဲ့၏။ ပိုင်ဆိုင်မှု့ အချက်အလက်များကို မည်ကဲ့သို့ရေးသားနိုင်သည် ဆိုသည်ကို လက်တွေ့ ကလပ်စ်တစ်ခုကို ရေးသားကြီးရင်း ဖော်ပြပါမည်။

လောလောဆယ် နမှုနာအနေဖြင့် နာမည်မေးလျှင် ပြန်ဖြေတတ်သော Human ဆိုသည့် ကလပ်စ် တစ်ခုကို ရေးသားကြည့်ပါမည်။ Human တွင် အမည်၊ အသက်နှင့် ကျားမကိုဖော်ပြနိုင်သော အချက်အလက်ကို ပိုင်ဆိုင်စေပါမည်။

public class Human {
 
 String name;
 boolean male;
 int age;

}

အထက်ပါအတိုင်း ရေးသားမည်ဆိုလျှင် အမည်၊ လိမ်နှင့် အသက် အစရှိသည့် အချက်အလက်များကို ပိုင်ဆိုင်သော ကလပ်စ် တစ်ခုကို ရေးသားပြီးဖြစ်ပါသည်။ ဆက်လက်၍ ထိုကလပ်၏ အော့ဘဂျက်ကို ရေးသားကြည့်ပါမည်။
public class Human {
 
 String name;
 boolean male;
 int age;
 
 public static void main(String[] args) {
  Human aungaung = new Human();
  aungaung.name = "Aung Aung";
  aungaung.male = true;
  aungaung.age = 22;
  
  System.out.println("Name : " + aungaung.name);
  System.out.println("Age  : " + aungaung.age);
  System.out.println("Male : " + aungaung.male);
 }

}

အထက်ပါ ကုဒ်များကို ကွန်ပိုင်းလုပ်၍ အလုပ်ခိုင်းကြည့်ပါက အောက်ပါအတိုင်း ထိုအော့ဘဂျက်၏ အမည် ၊ အသက်နှင့် လိမ်ကို ဖော်ပြပေးနိုင်ပါသည်။


ရုတ်တရက် ကြည့်မည်ဆိုပါက ဖော်ပြလိုသည်ကို ဖော်ပြနိုင်သဖြင့် ဘာမှ ပြဿနာမရှိသလို ထင်ရမည် ဖြစ်၏။ သို့ရာတွင် အထက်ပါ ကုဒ်များအား main လုပ်ဆောင်ချက်ထဲမှ အောက်ပါအတိုင်း ပြုပြင် ရေးသားကြည့်ပါမည်။
public class Human {
 
 String name;
 boolean male;
 int age;
 
 public static void main(String[] args) {
  Human aungaung = new Human();
  aungaung.name = "Aung Aung";
  aungaung.male = true;
  aungaung.age = 22;
  
  aungaung.male = !aungaung.male;
  
  System.out.println("Name : " + aungaung.name);
  System.out.println("Age  : " + aungaung.age);
  System.out.println("Male : " + aungaung.male);
 }

}

မိန်းလုပ်ဆောင်ချက်အတွင်းတွင် အကြောင်းတစ်ခုခုကြောင့် aungaung အော့ဘဂျက်၏ male တန်ဖိုးကို ပြောင်းပြန်သတ်မှတ်မိပါသည်။ ကွန်ပိုင်းလုပ်ပြီး အလုပ်လုပ်ခိုင်းကြည့်သောအခါ အောင်အောင်သည် ကျားမဟုတ်တော့ပါ။


ဤကဲ့သို့ အော့ဘဂျက်တစ်ခု၏ ပိုင်ဆိုင်မှု့ အချက်အလက်များကို ပြင်ပမှ အလွယ်တကူ ပြုပြင်ပြောင်းလည်းနိုင်လျှင် ထိုအော့ဘဂျက်သည် မိမိကစီမံထားသလို အလုပ်လုပ်နိုင်တော့မည် မဟုတ်ပေ။ ထို့ကြောင့် အချက်အလက်များကို လိုအပ်သလို ပြင်ပမှ အလွယ်တကူ ပြုပြင်ပြောင်းလည်းခြင်း မရှိနိုင်အောင် ပြင်ဆင်ထားသင့်ပါသည်။

Java ဘာသာရပ်တွင် ကလပ်တစ်ခု၏ အချက်အလက်များနှင့် လုပ်ဆောင်ချက်များအား လိုအပ်သလို ဆက်သွယ်ပိုင်ခွင့်ကို သက်မှတ်နိုင်ရန် စကားလုံးများကို ပြင်ဆင်ပါသည်။ ထိုစကားလုံးများမှာ အောက်ပါအတိုင်းဖြစ်၏။

  • public မည်သည့်နေရာက မဆို ဆက်သွယ်အသုံးပြုနိုင်ပါသည်။
  • protected မိမိ၏ Sub Class များမှ တဆင့် ဆက်သွယ်အသုံးပြုနိုင်ပါသည်။
  • private မိမိကိုယ်တိုင်မှလွဲ၍ အခြားသောနေရာများမှ ဆက်သွယ်နိုင်ခြင်းမရှိပါ။
တဖန် ဘာမှ သတ်မှတ်ရေးသားထားခြင်းမရှိပါက၊ package တစ်ခုတည်းအတွင်းမှ ဆိုလျှင် ဆက်သွယ်အသုံးပြုနိုင်ပါလိမ့်မည်။


လုပ်ဆောင်ချက်များ


Java ပရိုဂရမ်တွင် Object များအား အလုပ်လုပ်စေရာတွင် ထို Object ၏ လုပ်ဆောင်ချက်များကို လုပ်ဆောင်စေခြင်းအားဖြင့် ပရိုဂရမ်များကို လိုအပ်သလို အလုပ်လုပ်စေနိုင်ခြင်းဖြစ်သည်။ လုပ်ဆောင်ချက်များအား မက်သတ် (Method) ဟုလည်းခေါ်ဆိုလေ့ရှိပါသည်။

ပိုင်ဆိုင်မှု့ အချက်အလက်များကဲ့သို့ပင် လုပ်ဆောင်ချက်များအားလည်း ဆက်သွယ်အသုံးပြုနိုင်ခွင့်ကို ခွဲခြားရေးသားနိုင်ပါသည်။ လုပ်ဆောင်ချက်များအား ကလပ်စ် အတွင်းတွင် ရေးသားပုံမှာ အောက်ပါအတိုင်းဖြစ်၏။

private String name;

public String getName() {
    return this.name;
}

public void setName(String str) {
    this.name = str;
}

အထက်ပါ ကုဒ်များအတွင်းတွင် String name အချက်အလက်သည် private ဖြစ်ပါသဖြင့်၊ မိမိ၏ အော့ဘဂျက်၏ အပြင်မှ တိုက်ရိုက် ဆက်သွယ်အသုံးပြုနိုင်ခြင်း မရှိပါ။ လုပ်ဆောင်ချက်များကို ရေးသား၍ လိုအပ်သည်များကို လုပ်ဆောင်စေပါသည်။ လုပ်ဆောင်ချက်များကို ရေးသားရာတွင် ဦးစွာ ဆက်သွယ်နိုင်ခွင့် ဖြစ်သော public / private / protected အစရှိသည့် စကားလုံးကို ရေးသားပြီး၊ ရလဒ်၏ အချက်အလက်ပုံစံကိုရေးသားရပါမည်။ ရလဒ်ကိုပြန်ပေးစရာမလိုသော လုပ်ဆောင်ချက်ဆိုပါက void ကို ရေးသားရပြီး၊ int ကို ရလဒ်အဖြစ်ပြန်ပေးလိုပါက int အစရှိသဖြင့် ကနဦးပုံစံများမှအစ၊ Object များအဖြစ်အသုံးပြုနိုင်သော ကိုးကားပုံစံများ အထိ ရလဒ်အဖြစ်ပြန်ပေးနိုင်ပါသည်။

အထက်ပါကုဒ်၏ getName လုပ်ဆောင်ချက်သည် အမည်ကို ရလဒ်အဖြစ်ပြန်ပေးရန် လိုအပ်သည့် လုပ်ဆောင်ချက်ဖြစ်သောကြောင့် public String getName() ဟု ရေးသားပြီး၊ လက်သဲကွင်း { } အတွင်းတွင် ထိုလုပ်ဆောင်ချက်အတွင်းတွင် လုပ်ဆောင်စေလိုသည့် လော့ဂျစ်များကို ရေးသားရပါမည်။ ဤနမှုနာတွင် အမည်ကို ရလဒ်အဖြစ်ပြန်ပေးရန် လိုအပ်ပါသဖြင့် return this.name; ဟု ရေးသားထားပါသည်။ this.name ဆိုသည်မှာ မိမိကပိုင်ဆိုင်သော အချက်အလက်ဖြစ်သည့် name ကို ရလဒ်အဖြစ် ခေါ်ဆိုသည့်နေရာကို ပြန်ပေးနေခြင်းဖြစ်ပါသည်။

တဖန် setName လုပ်ဆောင်ချက်ကို ကြည့်ပါ။ public void setName(String str) ဟု ရေးသားထားသည်။ ပါရာမီတာ String str ကို ပေးပြီး အမည်ကို သတ်မှတ်စေပါသည်။ အတွင်းပိုင်းတွင် this.name = str; ဟု ရေးသားထားပြီး အော့ဘဂျက်၏ name အား ပါရာမီတာ str ဖြင့် အစားထိုးပါသည်။

ဤအတိုင်းဆိုပါက ယခင်ရေးသားခဲ့သော ပိုင်ဆိုင်မှု့ အချက်အလက်များအား တိုက်ရိုက်ဆက်သွယ်သည်နှင့် ဘာမှခြားမည် မဟုတ်ပေ။ ကွာခြားချက်ကို သိရှိစေရန် နမှုနာတစ်ခုကို ရေးသားကြည့်ပါမည်။

public class HumanTest {
 
 private Human aung;
 
 public HumanTest(Human aung) {
  this.aung = aung;
 }
 
 public void init(String name, boolean isMale, int age) {
  this.aung.setAge(age);
  this.aung.setName(name);
  this.aung.setMale(isMale);
 }
 
 public void doOutput() {
  System.out.println("Name : " + this.aung.getName());
  System.out.println("Age  : " + this.aung.getAge());
  System.out.println("Sex  : " + this.aung.getSex());
 }
 
 public static void main(String[] args) {
  HumanTest test = new HumanTest(new Human());
  test.init("Aung Aung", true, 22);
  test.doOutput();
 }
}

class Human {

 private String name;
 private Integer age;
 private Boolean male;
 
 public String getName() {
  String tmp = "";
  if(male) {
   if(age > 30) {
    tmp = "U ";
   } else if (age > 20) {
    tmp = "Ko ";
   } else {
    tmp = "Mg ";
   }
  } else {
   if(age > 30) {
    tmp = "Daw ";
   } else {
    tmp = "Ma ";
   }
  }
  return tmp + name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 public String getSex() {
  if(male) {
   return "Male";
  }
  return "Female";
 }
 public void setMale(boolean male) {
  if(null == this.male) {
   this.male = male;
  }
 }
}

ဒီတစ်ခေါက် ကုဒ်တွေအရှည်ကြီး ရေးသားထားသော်လည်း ကြည့်စေလိုသည်မှာ စာကြောင်း ၁၂နှင့် ၆၈ မှ ၇၂အထိ ဖြစ်ပါသည်။ Human ကလပ်စ်၏ male အား တိုက်ရိုက် သက်မှတ်ခွင့်မရှိတော့သောကြောင့် setMale လုပ်ဆောင်ချက်ကို ပြင်ဆင်လာပါသည်။ ဤကဲ့သို့ လုပ်ဆောင်ချက်ကို ပြင်ဆင်ထားခြင်းအားဖြင့် လုပ်ဆောင်ချက်အတွင်းတွင် male သည် သတ်မှတ်ထားခြင်း မရှိပါမှ သက်မှတ်နိုင်မည်ဟု ပြုပြင် ရေးသားနိုင်ပါသည်။ ဤနည်းအားဖြင့် တစ်ကြိမ် သတ်မှတ်ထားသော အချက်အလက်အား စစ်ဆေး၍ ပြင်ပြင်နိုင်စံရန် စီမံနိုင်ပါသည်။


ကွန်စတရက်တာ (Constructor)


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

အော့ဘဂျက်အား ခေါ်ယူစဉ်တွင် သတ်မှတ်ရန် နည်းလမ်းရှိပါသည်။ ထိုအရာမှာ Constructor ပင်ဖြစ်၏။ ကွန်စတရက်တာသည် Class တစ်ခုမှ အော့ဘဂျက်အား instance လုပ်ယူသည့်အခါတွင် ခေါ်ဆိုမည့် လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ Java Class များသည် Object Class ၏ Sub Class များဖြစ်သောကြောင့် Parameter ကို အသုံးမပြုသော ကွန်စတရက်တာကို အလိုအလျှောက်ပိုင်ဆိုင်ပါသည်။ တကူးတကရေးစရာမလိုပဲ အလိုအလျှောက် instance ကို ခေါ်ယူနိုင်ပါသည်။

သို့ရာတွင် Class မှ instance ကို ခေါ်ယူလိုသည့်အခါတွင် ကြိုတင်၍ လော့ဂျစ်များကို ရေးသားထားလိုပါက ကွန်စတရက်တာ အတွင်းတွင် ရေးသားထားနိုင်ပါသည်။
public class HumanTest {

 public static void main(String[] args) {
  Human aung = new Human("Aung Aung", 22, true);
  System.out.println("Name : " + aung.getName());
  System.out.println("Age  : " + aung.getAge());
  System.out.println("Sex  : " + aung.getSex());
 }
}

class Human {

 private String name;
 private Integer age;
 private Boolean male;
 
 public Human(String name, int age, boolean male) {
  this.name = name;
  this.age = age;
  this.male = male;
 }
 
 public String getName() {
  String tmp = "";
  if(male) {
   if(age > 30) {
    tmp = "U ";
   } else if (age > 20) {
    tmp = "Ko ";
   } else {
    tmp = "Mg ";
   }
  } else {
   if(age > 30) {
    tmp = "Daw ";
   } else {
    tmp = "Ma ";
   }
  }
  return tmp + name;
 }

 public int getAge() {
  return age;
 }

 public String getSex() {
  if(male) {
   return "Male";
  }
  return "Female";
 }
}

အထက်ပါ ကုဒ်များ၏ စာကြောင်း ၁၇မှ ၂၁သည် ကွန်စတရက်တာဖြစ်ပါသည်။ ထိုကွန်စတရက်တာတွင် ဤကလပ်စ်၏ ပိုင်ဆိုင်မှု့အချက်အလက်များအား သတ်မှတ်ရန် အချက်အလက်များကို ပါရာမီတာအဖြစ် လက်ခံရယူပြီး၊ ကွန်စတရက်တာ အတွင်း၌ပင် အစားထိုးနေပါသည်။ ဤသည်ကို ကြည့်ခြင်းအားဖြင့် Human ၏ instance ကို ခေါ်ယူရာတွင် String name, int age, boolean male ကို ပါရာမီတာအဖြင့် ပေးရန်လိုအပ်သည် ဆိုသည်ကို သိနိုင်ပါသည်။ တနည်းဆိုရသော် ဤနည်းအားဖြင့် ပါရာမီတာအဖြစ်ပေးလိုက်သော အချက်အလက်များကို ပိုင်းဆိုင်သော အော့ဘဂျက်ကို ရရှိနိုင်မည်ဖြစ်သည်။ ကျွှန်တော်တို့ အထက်ပါ ကုဒ်များကို အလုပ်လုပ်ခိုင်းကြည့်ပါက အောက်ပါအတိုင်း ရရှိပါလိမ့်မည်။



လေးစားစွာဖြင့်
မင်းလွင်

3 comments:

  1. အရမ်းကြိုက်တယ်ဗျို့။ ကျွန်တော်တို့လို Java ကိုစလေ့လာနေသူတွေရော အခြားလူတွေအတွက်ပါအရမ်းတန်ဖိုးရှိတဲ့ post တွေတင်ပေးနေတဲ့ ကိုမင်းလွင်ကိုကျေးဇူးတင်ပါတယ်။

    ReplyDelete
  2. အဲပြောလက်စနဲ့ပြောလိုက်ဦးမယ်။ English လိုအခေါ်အဝေါ်လေးတွေပါထည့်ပေးရင်ပိုကောင်းမယ်ခင်ဗျာ့။

    ReplyDelete