[သင္ခန္းစာ – ၉] – Class ဆုိတာဘာလဲ။ (ဒုတိယပိုင္း)

[သင္ခန္းစာ - ၉] Class ဆုိတာဘာလဲ။ (ဒုတိယပိုင္း)

3. “class” ကို JAVA နဲ ့ေရးၾကည့္ရေအာင္

အခုအခ်ိန္ကစျပီးJAVA မွာ “class”တစ္ခုေရးၾကည့္ရေအာင္ အရင္ဆံုးအေနနဲ ့
ေအာက္မွာေရးထားတဲ့program ကိုေလ့လာၾကည့္ရေအာင္။ ေအာက္မွာရွိတဲ့ program

ကေတာ့money စုတဲ့စုဘူးကို programအေနနဲ ့”class”ကိုသံုးထားတာပါ။

/* savings box class.  * /

  class PiggyBank                               // (1)

  {

      /*An amount of money that bank contains. * /

      int totalMoney = 0;                       // (2)

      /*I pay the savings box for money.  * /

      void putCoin(int money)                   // (3)

      {

          totalMoney = totalMoney + money;      // (4)

         System.out.println("I paid the savings box for the "+ money +" yen. ");

      }

     /* I break savings box and take out money.  * /

      int breakPiggyBank()                      // (5)

   {

          System.out.println(" Gachan! ");

          return totalMoney;

      }

      public static void main(String[] args)

      {

          //I make savings box instance

          PiggyBank bank = new PiggyBank();     // (6)

          //I pay the savings bank for money

          bank.putCoin(100);                    // (7)

          bank.putCoin(50);

          //I break savings box and take out money

          int money = bank.breakPiggyBank();    // (8)

          System.out.println("I took out the "+ money +" yen from savings box. ");

      }

  }

ဘယ္လိုလဲ အရင္ေရးဖူးတဲ့ program ထက္နည္းနည္ရုွပ္တယ္လို ့ေတာ့ထင္မိမွာပါ။
ဒါဆိုcommand prompt မွာ input ထည့္ျပီးrunၾကည့္ရင္ေအာက္မွာျမင္ရတ့ဲအတိုင္း
အေျဖကိုoutput ျပမွာပါ။

ဒါဆို program ထဲမွာေရးထားတာေတြကိုနည္းနည္းခ်င္းစီေလ့လာၾကည့္ရေအာင္။
အရင္ဆံုး”class”ကိုေရးဖို ့အတြက္”class”နာမည္ကိုေၾကညာဖို ့လိုပါတယ္။

/* savings box class.  * /

  class PiggyBank                               // (1)

ဒီမွာေတာ့ စုဘူးအတြက္ class ကို “PiggyBank” ဆိုျပီး nameေပးထားပါတယ္။ Class name ၾကည့္တာနဲ

 ၀က္နဲ ့တူတဲ့ စုဘူးမွန္း သိေအာင္ PiggyBank လုိ ့ေပးထားတာပါ။ Program ရဲ့အရင္ဆံုးေတြ ့ရတဲ့ “{

ကေနစျပီး ေနာက္ဆံုး “}” ထဲမွာ ရွိတဲ့ coding ေတြကေတာ့ ဒီစုဘူး class အတြက္ definition ဘဲျဖစ္ပါတယ္။

အရင္သင္ခန္းစာေတြမွာ “method” နဲ ့ “field”  ကို ရွင္းျပျပီးသားဘဲျဖစ္ပါတယ္။ ဒီ “PiggyBank” class ထဲမွာ

သူနဲ ့သက္ဆိုင္တဲ့ method ေတြ field ေတြေရးလိုက္တယ္ဆိုရင္ စုဘူး class နဲ ့စုဘူး class ရဲ့ definition

ကိုေရးလို ့ ျပီးသြားပါျပီ။

■မွတ္ရန္

* “class” ေၾကညာပါ။
* “class” ကိုေၾကညာတဲ့အခါ class name ေပးဖို ့လိုပါတယ္။
* “class” ကိုေၾကညာထားတဲ့ကြင္းစကြင္းပိတ္ထဲမွာသက္ဆိုင္တဲ့“field”နဲ ့”method
ေတြကိုေရးပါ။

၄. Class ရဲ့ component (အစိတ္အပိုင္း): fieldအရင္ဆံုး field ကိုၾကည့္ရေအာင္္။

field”ဆိုသည္မွာ class ထဲမွာရွိတဲ့အခ်က္အလက္ေတြကိုေဖာ္ျပေပးပါတယ္။ ဒါဆိုရင္စုဘူးနဲ ့ပတ္သတ္ျပီးဘာအခ်က္အလက္ေတြရွိမလဲ?။ရွင္းရွင္းေလးေလးပါ။စုဘူးထဲပိုက္ဆံထည့္တယ္စုဘူးထဲမွာရွိတဲ့ပိုက္ဆံေတြတိုးလာတယ္။ ဒါဆိုရင္ စုဘူးကိုထည့္တဲ့ပိုက္ဆံရယ္စုဘူူးမွာရွိတဲ့စုစုေပါင္းပိုက္ဆံရယ္ကစုဘူးနဲ ့သက္ဆိုင္တဲ့အလုပ္ေတြပါပဲ။ အဲဒီအတြက္ေၾကာင့္အရင္ဆံုးစုစုေပါင္းပိုက္ဆံအတြက္”field” တစ္ခုျပဳလုပ္လိုက္ပါတယ္။

/*An amount of money that bank contains.  * /

      int totalMoney = 0;                       // (2)

program ထဲမွာ “စုစုေပါင္းပိုက္ဆံ” အတြက္ကို “totalMoney” ဆိုျပီး “field” တစ္ခုျပဳလုပ္လိုက္ပါတယ္။

field”တစ္ခုျပဳလုပ္တဲ့အခါ အဲဒီ “field” ရဲ့အမ်ိဳးအစားကိုေၾကညာေပးဖို ့လိုပါတယ္။ “totalMondy” ကိုေတာ့

int”လို ့ေခၚတဲ့keyword နဲ ့ ေၾကညာလိုက္ပါတယ္။

ဘာလို ့လဲဆိုေတာ့ totalMoney ကိုInteger(ကိန္းဂဏန္း)နဲ ့သံုးဖို ့အတြက္ျဖစ္ပါတယ္။
စုဘူးထဲမွာပိုက္ဆံ မထည့္ရေသးရင္totalMoney က ၀ က်ပ္ျဖစ္ေနမွာျဖစ္တဲ့အ

တြက္ေၾကာင့္ 0 ကို totalMoney ထဲမွာစစခ်င္းထည့္ေပးထားတာျဖစ္ပါတယ္။

■မွတ္ရန္
* “field” ဆိုတာ “class” ထဲမွာရွိတဲ့အခ်က္အလက္ကိုေျပာျပေပးပါတယ္။
* “field”ထဲမွာဘယ္လိုအခ်က္အလက္ေတြကိုသိမ္းမယ္ဆိုတဲ့အမ်ိဳးအစား
ေၾကညာေပးဖို ့လိုအပ္ပါတယ္။

5. “class” ရဲ့ component(အစိတ္အပိုင္း): method “method” ျပဳလုပ္ပံုကိုၾကည့္ရေအာင္

method” ဆိုတာoperation(လုပ္ေဆာင္ခ်က္)ေတြကိုေျပာျပပါတယ္။

field” နဲ ့အလားတူ ဒီစုဘူးနဲ ့ပတ္သတ္ျပီးဘာလုပ္ေဆာင္ခ်က္ေတြရွိလဲၾကည့္ရေအာင္။

စုဘူးဆိုတဲ့အတုိင္းဘဲထည့္လိုက္သမွ်ပိုက္ဆံေတြကိုသိမ္းျပီးတျဖည္းျဖည္း

ပိုက္ဆံတိုးလာမယ္။ ဒါဆိုရင္သူ ့ရဲ့လုပ္ေဆာင္ခ်က္ကို”put money”(ပိုက္ဆံထည့္ျခင္း)

ဆုိျပီးသတ္မွတ္လိုက္ထားျပီးေအာက္မွာရွိတဲ့အတိုင္း “method”ကိုေရးျပထားပါတယ္။

/*I pay the savings bank for money.  * /

      void putCoin(int money)                   // (3)

ဒီ program ထဲမွာပိုက္ဆံေတြကိုထည့္တဲ့အလုပ္လုပ္ေပးမဲ့”putCoin”ဆိုတဲ့”method
တစ္ခုေရးထားပါတယ္။အဲဒါ “putCoin” method ရဲ့ဘယ္ဘက္မွာဆိုရင္ “void”လို ့ေရးထား
ျပီးေတာ့ ညာဘက္မွာဆိုရင္ “int money”ကိုကြင္းစကြင္းပိတ္ထဲမွာေရးထားတာပါ။

အဓိပၸါယ္ကေတာ့method ရဲ  ့”input”နဲ ့”output”ကိုေျပာျပတာပါ။

အဲဒီကအေနနဲ ့ညာဘက္မွာရွိတဲ့”int money” က”input type”ျဖစ္ျပီးေတာ့

ဘယ္ဘက္က”void”ကေတာ့”output type”ကိုေျပာတာပါ။

■မွတ္ရန္
* “method” ဆိုတာဟာ “လုပ္ေဆာင္ခ်က္(Operations)ကိုေရးထားတာပါ။”
* “method” တစ္ခုမွာဆိုရင္ညာဘက္မွာရွိတဲ့ကြင္းစကြင္းပိတ္ထဲမွာ“input” ကိုေရးျပီးဘယ္ဘက္မွာေတာ့ဘယ္လို”output”မ်ိဳးထုတ္မယ္ဆိုတာကိုေရးပါတယ္
* “void” က method တစ္ခုကေန ဘာ“output” မွထုတ္မျပတာကိုဆိုလိုတာပါ။

ကဲ ဒါဆို ဆက္ ၾကည့္ၾကည့္ရေအာင္။ စုဘူးထဲမွာ ပိုက္ဆံေတြကိုစုျပီးပိုက္ဆံေတြ
အမ်ားၾကီးရလာရင္ အဲဒီ ပိုက္ဆံေတြသံုးခ်င္လာမွာပါ။ဒါဆိုစုဘူးထဲကပိုက္ဆံေတြ
ကိုထုတ္မွသံုးလို ့ရမွာေပါ့။အဲလိုထုတ္တဲ့ဖို ့အတြက္စုဘူးကိုခြဲမွဘဲရမွာပါ။
ဒါဆိုရင္စုဘူးကိုခြဲတဲ့method ကိုေအာက္မွာေရးျပထားပါတယ္။

/* I break savings box and take out money.  * /

      int breakPiggyBank()                      // (5)

ဒီတစ္ခါေတာ့method က “putCoin”နဲ ့ဆန္ ့က်င္ဘက္ပံုစံပါ။ဘာလို ့လဲဆိုေတာ့
method”ရဲ ့”output”ေနရာမွာ”int”လို ့ေရးထားလို ့ပါ။ စုဘူးကိုခြဲလိုက္တဲ့ရလဒ္

ကေတာ့စုဘူးထဲမွာသိမ္းထားတဲ့ပိုက္ဆံေတြကို”output”အေနနဲ ့

ထြက္လာတယ္ဆိုတာပါဘဲ။တစ္နည္းအားျဖင့္စုဘူးကိုခြဲတဲ့အတြက္ဲ့ပိုက္ဆံ ထပ္ျပီး

ထပ္စရာမလိုတဲ့အတြက္ေၾကာင့္method ရဲ့input ေနရာ ကြင္းစကြင္းပိတ္ထဲမွာဘာမွ

ထည့္စရာမလိုပါဘူး။

အခုဆိုရင္စုဘူးတစ္ခုအတြက္”class”ျပဳလုပ္လို ့ျပီးသြားပါျပီ။ ဒါေပမဲ့ဒီprogram ကိုrun လို ့

မရေသးပါဘူး။ဘာလို ့မရတာလဲ? ဘာလို ့လဲဆိုေတာ့ ဒီ “စုဘူး class”ကိုေခၚမသံုးရေသးလို ့ပါဘဲ။

တစ္နည္းအားျဖင့္ “class”ဆိုတာသူနဲ ့သက္ဆိုင္တာေတြကိုသိေအာင္လုပ္ေပးနိုင္
တဲ့program ျဖစ္ျပီး class instance ကေခၚသံုးမွသာသူထဲမွာရွိတဲ့ အခ်က္အလက္
ေတြကိုအသံုးျပဳလို ့ရမွာပါ။

■မွတ္ရန္
* တကယ္လို ့သာ “method” အတြက္ “input” မလိုဘူးဆိုရင္“input” ေနရာမွာဘာမွေရးစရာမလိုပါဘူး
* “class”မွာသူနဲ ့. သက္ဆိုင္တဲ့အခ်က္အလက္ေတြအကုန္ေရးထားရံုနဲ ့programကိုrun လို ့မရပါဘူး။

အဲဒီ “class”ကို“instance” လုပ္ေပးဖို ့လိုပါေသးတယ္
6. “Class” ကိုေခၚသံုးမယ္
ဒါဆိုရင္ “class”ကို ဘယ္လိုေခၚသံုးမယ္ဆိုတာေလ့လာၾကည့္ရေအာင္။ေအာက္
မွာေရးထားတဲ့ “main method” ထဲမွာ “class”ကိုဘယ္လိုေခၚသံုးလဲဆိုတာ
ၾကည့္ၾကည့္ရေအာင္(ေရွ့ကprogram ေတြမွာလဲသံုးခဲ့ၾကေပမဲ့main method အေၾကာင္းကိုေသခ်ာမေျပာရေသးပါဘူး)

public static void main(String[] args)

      {

          //I make savings box instance

          PiggyBank bank = new PiggyBank();     // (6)

          //I pay the savings bank for money

          bank.putCoin(100);                    // (7)

          bank.putCoin(50);

          //I break savings box and take out money

          int money = bank.breakPiggyBank();    // (8)

          System.out.println("I took out the "+ money +" yen from savings box. ");

      }

main method” ကလဲ ဒီစုဘူး class ရဲ့ “method” တစ္ခုပါပဲ။ ဒါေပမဲ့ “main method ” နဲ့ တစ္ျခား”method” ေတြနဲ့

မတူတဲ့ အခ်က္တစ္ခုရွိပါတယ္။ အဲဒါကဘာလဲဆိုရင္ program ကို run တဲ့အခါ အျမဲတမ္း “main method”ကို

အရင္ဆံုးေခၚျပီး “execute” လုပ္လို ့ပါဘဲ။

Class” ပါတဲ့ program ကိုrun ခ်င္တယ္ဆိုရင္ “main method” ကို မေရးမျဖစ္ေရးေပးရပါတယ္။

■မွတ္ရန္
* Program တစ္ခုကို execute လုပ္တဲ့အခါ “main method” ကိုအရင္ဆံုးေခၚပါတယ္

* “class” ပါတဲ့ program ကို run ဖုိ ့အတြက္ဆို ”main method” မပါမျဖစ္ပါရပါတယ္

//I make savings box instance

 PiggyBank bank = new PiggyBank();     // (6)

ဒီအေပၚမွာေရးထားတဲ့ coding ေတြကေတာ့“PiggyBank.class” ရဲ့. “instance” ျပဳလုပ္တာဘဲ ျဖစ္ပါတယ္။

PiggyBank class” ရဲ့ “instance” ကို “bank” ဆိုတဲ့ name နဲ့ variable တစ္ခုျပဳလုပ္ထားတာပါ။

(variable သံုးတာကို lecture 5 မွာ ေျပာျပီးသားပါ.)
ဒီစာေၾကာင္းမွာေတာ့ “new” keyword ကိုသတိျပဳမိေစခ်င္ပါတယ္။ “class” ကို “instant” အသစ္ျပဳလုပ္လိုက္တဲ့အဓိပၸါယ္ပါ။

PiggyBank class” ရဲ့ instance ကို “bank” ဆိုတဲ့ variable နဲ့ ေရးထားတဲ့အေၾကာင္းကေတာ့ ေနာက္ပိုင္းမွာ

bank instance” ကိုေခၚသံုးေအာင္လို ့ပါ။

ဒီ coding ေရးလိုက္ရင္ “စုဘူး class” ကို ေခၚသံုးဖုိ ့ျပင္ဆင္လို ့ျပီးသြားပါျပီ။

ဒါဆိုmethod ေတြကိုေခၚသံုးၾကည့္ရေအာင္။ အရင္ဆံုးစုဘူူး ထဲကို money ထည့္ဖို့အတြက္

putCoin” method ကို “bank” ဆိုတဲ့ “instance” တစ္ဆင့္ေအာက္မွာေရးထားတဲ့အ

တိုင္းေခၚသံုးလိုက္ပါတယ္။

//I pay the savings box for money

 bank.putCoin(100);                    // (7)

 bank.putCoin(50);

ပထမဆံုးအေၾကာင္းမွာ“bank instance” ကေန“putCoin”  ကိုေခၚျပီး100 ထည့္လိုက္ပါတယ္

အလားတူဘဲ ဒုတိယ အေၾကာင္းမွာလဲ 50 ကိုထပ္ထည့္လိုက္ပါတယ္။
ဒါဆို အဲဒီ coding 2 ေၾကာင္းကို ၾကည့္ရံုနဲ ့bank instance ထဲမွာ150  ရွိေနမွာပါ။

တစ္ခုရွိတာက အဲဒီလိုမ်ိဳးထည့္လိုက္လို ့ 150 ရွိမယ္ဆိုတာမွန္ မမွန္ program ကဘယ္လိုလုပ္သိနိုင္မလဲ။

putCoin” method ကိုျပန္ၾကည့္ၾကည့္ရင္အေျဖကိုသိရမွာပါ။

totalMoney = totalMoney + money;      // (4)

totalMoney” ဆိုတာ “PiggyBank” class ရဲ့. “field” တစ္ခုပါ။

money”  ဆိုတာကေတာ့ “putCoin” ရဲ့. “input”  မွာ ရွိေနတဲ့ variable ပါ

တစ္နည္းအားျဖင့္ေျပာရရင္ “main” method ကေန “putCoin” method

ကိုေခၚျပီး ထည့္လိုက္တဲ့money တန္ဖိုးေတြက“totalMoney” ဆို တဲ့

variable ထဲမွာေပါင္းထည့္ထားတာပါ။
totalMoney” က “PiggyBank class” ထဲကိုထည့္သမ်ွ money ေတြကို

မွတ္ထားေပးတာပါ။ အဲဒီ အတြက္ေၾကာင့္“bank instance” မွာ

totalMoney ကိုသံုးျပီး တိက်တဲ့အေျဖကိုသိနိုင္ပါတယ္။

■မွတ္ရန္
* “new” ဆိုတာ “class” ရဲ့ “instance” ျပဳလုပ္တဲ့အခါမွာသံုးတဲ့ keyword ျဖစ္ပါတယ္
* “method”  ကိုေခၚသံုးခ်င္တယ္ဆိုရင္ “instance variable”  ေနာက္မွာ “.” Period ခံျပီး ေခၚသံုးခ်င္တဲ့ “method name” ကိုေရးရပါတယ္။

* “method” ကိုသံုးျပီး class “field” တန္ဖိုးေတြကိုေျပာင္းလဲလို ့ရတယ္။
* “instance” က variable မွာတန္ဖိုးေတြကိုသိမ္းထားမယ္ဆိုရင္ အဲဒီတန္ဖိုးကိုျပန္ေခၚသံုးဖို ့ရနိုင္ပါတယ္။

ဒါဆိုရင္ program ကေကာင္းေကာင္းအလုပ္လုပ္လားမလုပ္လားဆိုတာကို program coding ကို ၾကည့္ရင္ ဟုတ္သေယာင္ေယာင္ရွိေနပါတယ္။ တကယ္ဟုတ္မဟုတ္ ၾကည့္ၾကည့္ရေအာင္။

“breakPiggyBank” method သံုးၾကည့္ရင္သိရမွာပါ။

 //I break savings box and take out money

 int money = bank.breakPiggyBank();    // (8)

ေအာက္မွာျမင္ရတဲ့အတိုင္း “output” ထုတ္ျပမွာပါ။

တကယ္တမ္းေတာ့“picked up 150kyat from a saving box” ဆိုတာ output မျပပါဘူး150 (kyat)

ဆုိတဲ့တန္ဖိုးကို line no. (8) မွာ  “money” variable ကို အစားသြင္းလိုက္ပါတယ္။

အဲဒီ ေနာက္မွာေရးထားတဲ့  println() method ကေနမွ “money” variable ထဲမွာရွိေနတဲ့

တန္ဖိုးကိုသံုးျပီး “output” ထုတ္ျပေပးတာဘဲျဖစ္ပါတယ္။

7. အက်ဥ္းခ်ဳပ္

ဒီသင္ခန္းစာကေတာ့ JAVA ကို သံုးျပီး class ကို ဘယ္လိုျပဳလုပ္ရမလဲဆိုတာကို သိသြားၾကျပီလို ့ထင္ပါတယ္။ စကားလံုးအသစ္ေတြလဲထပ္တိုးလာတဲ့အတြက္ေၾကာင့္ျပန္ျပီး review လုပ္ၾကည့္ရေအာင္

01. Object Oriented Programming ဆိုတာ Object ေတြကိုအေျခခံ စဥ္းစားျပီးေရးရတဲ့ programming ျဖစ္ပါတယ္။

02. Object ဆိုအရာ၀တၳဳတစ္ခုအေနနဲ ့Software မွာသတ္မွတ္နိုင္ပါတယ္။

03. Class ဆိုတာဟာအရာ၀တၳဳေတြ တစ္နည္းအားျဖင့္ Object ေတြရဲ့ ေယဘုယ်
အခ်က္အလက္ေတြကိုေဖာ္ျပေပးပါတယ္။

04. Object ကိုတစ္နည္းအားျဖင့္ Instance လို ့လဲေခၚျပီးေတာ့ Class ရဲ့့ပံုစံတစ္ခု
ျဖစ္ပါတယ္။

05 .“Class” တစ္ခုမွာ Field ေတြ method ေတြပါ၀င္နိုင္ပါတယ္။

06. Field ဆိုတာကေတာ့ class ရဲ့ attribute(သတ္မွတ္ခ်က္) တစ္ခုပါ။

07. Method ကေတာ့ Instance ေတြရဲ့လုပ္ေဆာင္ခ်က္ (Operation) ေတြကိုျပဳ
လုပ္ေပးပါတယ္။

08. “Class ” ကိုေရးတဲ့ အခါ class ေၾကျငာေပးဖို ့လိုပါတယ္။

09 .“Class” ကို ေရးတဲ့အခါ ေၾကျငာ “class name” ေပးဖို ့လုိပါတယ္။

10. “Class” ရဲ့ Field နဲ ့ Method ေတြကိုေတာ့ class ေၾကျငာထားတဲ့ တြန္ ့ကြင္း ေတြထဲမွာထည့္ေရးရပါတယ္

11. “ Method” မွာ Input မလိုအပ္ရင္ ကြင္းစကြင္းပိတ္ထဲမွာ ဘာမွ ေရးစရာမလိုပါဘူး။

12. “Class” ကိုျပဳလုပ္ထားရံုနဲ ့ program ကို run လို ့မရပါဘူး။ အဲဒီ Class ရဲ့ Instance ကို ျပဳလုပ္မွသာ run လို ့ရနိဳင္မွာပါ။

13 .Program တစ္ခု run ျပီဆိုရင္ အရင္ဆံုး main method ကို execute လုပ္ပါတယ္။

14. အသံုး ျပဳခ်င္တဲ့ class program မွာ Main method ထည့္ေရးေပးရပါတယ္။

15. “New” ဆိုတာကေတာ့ “class” ရဲ့  Instance ကိုျပဳလုပ္တဲ့အခါ သံုးတဲ့ keyword ပဲျဖစ္ပါတယ္။

16. ”Method” ကိုေခၚသံုးခ်င္တယ္ဆိုရင္ instance variable ရဲ့ ေနာက္မွာ “.” Dot ခံျပီး method name ေရးေပးရပါတယ္။

17. ”Method” ထဲမွာ ေရးထားတဲ့ process ကို အလုပ္လုပ္ ရင္ class ရဲ့ field တန္ဖိုးေတြကိုေျပာင္းလဲလို ့ရပါတယ္။

18. ”Instance” ရဲ့ Field ထဲမွာ ရွိတဲ့ တန္ဖိုးေတြကို ျပန္ေခၚသံုးလို ့ရနိဳင္ပါတယ္။

 ကဲ ဒီေလာက္ဆိုရင္ သင္ခန္းစာကို နားလည္လိမ့္မယ္လို ့ထင္ပါတယ္. JAVA ကိုနည္းနည္း
ခ်င္းစီ ဘဲေလ့လာရင္း ေသခ်ာနားလည္ေအာင္လုပ္ၾကတယ္ေပါ့

[ဆက္ရန္] Class ေတြအမ်ားၾကီးသံုးၾကည့္ရေအာင္။

Next page

Logout


Check our Facebook Page!