Tuesday, January 28, 2014

Java Tutorial 10

Java Tutorial 10 (OOP)

Java ဟာ object-oriented programming(OOP) language တစ္ခုျဖစ္ပါတယ္။ OOP program တစ္ခုဟာ object ေတြနဲ႔ပါဝင္ဖြဲ႔စီးထားပါတယ္၊ java program ေတြေတာ္ေတာ္မ်ားမ်ားဟာ object ေတြအမ်ားႀကီးနဲ႔ စုေပါင္းတည္ေဆာက္ထားတာပါ။ object ေတြဟာသူတို႔နဲ႔ သက္ဆိုင္ရာလုပ္ငန္းတာဝန္ေတြကို လုပ္ေဆာင္ေပးႏိုင္ပါတယ္၊ အဲဒီလိုလုပ္ေဆာင္တဲ့အခါမွာ သူတို႔အခ်င္းခ်င္း ပတ္သက္ဆက္ႏြယ္ၿပီး လုပ္ေဆာင္ၾကတာျဖစ္ပါတယ္။ program အႀကီးေတြတည္ေဆာက္တဲ့ အခါမွာ အဲဒီ program ရဲ႕အလုပ္ဟာ အင္မတန္ရွဳပ္ေထြးပါတယ္၊ အဲဒီအခါ အလုပ္ေတြကို အစိတ္အပိုင္းေသးေသးေလးေတြ အျဖစ္ခြဲထုက္လိုက္ရပါတယ္။ အဲဒီ အလုပ္အစိတ္အပိုင္းေလးေတြကို လုပ္ေဆာင္ႏိုင္တဲ့ program အစိတ္အပိုင္းေတြတည္ေဆာက္ၿပီး၊ အဲဒီ program အစိတ္အပိုင္းေတြကို ေပါင္းစပ္လိုက္တဲ့အခါ ကိုယ္လိုခ်င္တဲ့ အလြန္ႀကီးမားတဲ့ software ႀကီးတစ္ခုကိုရရွိပါတယ္။

Object ေတြမွာ အစိတ္အပိုင္းႏွစ္ခုပါဝင္ပါတယ္၊ state (အဂၤါ)ေတြနဲ႔ behavior (အမူအက်င့္ အလုပ္) ဆိုတဲ့ characteristics ေတြပါဝင္ပါတယ္။ ဥပမာ လူဆိုပါေတာ့ လူမွာ ေခါင္းခါးေျခလက္ အရပ္ ကိုယ္အေလးခ်ိန္ စသည္ျဖင့္ state ေတြရွိသလို၊ အစာစားျခင္း သြားလာလွဳပ္ရွားျခင္း စသည္ျဖင့္ behavior ေတြလည္းရွိပါတယ္။

 

Class

Class ဆိုတာ object ရဲ႕တည္ေဆာက္ပံု ပံုၾကမ္းပါပဲ၊ object တစ္ခုဟာ ဘယ္လိုမ်ိဳး ဖြဲ႕စည္းတည္ေဆာက္ထားရမလဲဆိုတာကို class ကသတ္မွတ္ေပးပါတယ္။ ကိုယ္လိုခ်င္တဲ့ object တစ္ခုရေအာင္လို႔ class ထဲမွာပံုၾကမ္းတည္ေဆာက္ထားဖို႔ လိုအပ္ပါတယ္။ ေလာကႀကီးကိုၾကည့္လိုက္ပါ သေဘာတရားတူညီေသာ အမ်ိဳးအစားတူညီေသာ အရာဝတၳဳေတြ သက္ရွိေတြ အမ်ားႀကီးရွိပါတယ္။ ဥပမာအေနနဲ႔ေျပာရရင္ laptop computer ဆိုပါေတာ့ အဲဒီ laptop computer ေတြမွာ brand ေတြအမ်ားႀကီးကြဲျပားေနပါတယ္၊ lenovo, acer, toshiba, hp, dell စသည္ျဖင့္ေပါ့၊ ဒါေပမဲ့သူတို႔ေတြဟာ အမ်ိဳးအစားနဲ႔လုပ္ေဆာင္ခ်က္ေတြ ဆင္တူပါတယ္၊ ဆိုလိုတာက သူတို႔အားလံုးမွာ memory ပါမယ္ CPU ပါမယ္ motherboard ပါမယ္ harddisk ပါမယ္ စသည္ျဖင့္ေပါ့။ အဲဒီလိုအမ်ိဳးအစားတူတဲ့ အတြက္သူတို႔ကို class တူတယ္လို႔ေျပာလို႔ရပါတယ္။ ဒါဆိုရင္ OOP ရဲ႕သေဘာတရားအရဆိုရင္ Lenovo, acer, Toshiba တို႔ဆိုတာ object ေတြပါ၊ laptop computer ဆိုတာကေတာ့ class ပါပဲ၊ ဒီ Lenovo တို႔ acer တို႔ဟာ laptop computer ဆိုတဲ့အမ်ိဳးအစားတူညီၾကပါတယ္။ အဲဒီေတာ့ laptop computer ဆိုတဲ့ class တစ္ခုတည္ေဆာက္ၿပီးေတာ့ lenovo, acer, toshiba, hp, dell စသည္ object ေတြကိုလည္းဖန္တီးႏိုင္ပါတယ္။

 

ဒါဆိုရင္ ဘယ္မ်ိဳး class ေတြ object ေတြတည္ေဆာက္မလဲ။ software တစ္ခုေရးေတာ့မယ္ဆိုရင္ အရင္ဆံုး ဘယ္အစိတ္အပိုင္းေတြ ဘယ္လိုလုပ္ေဆာင္သလဲ ဆိုတာစဥ္းစားသတ္မွတ္ရပါမယ္၊ အဲဒီ software မွာပါဝင္မယ့္ noun(နာမ္) ေတြကိုရွာေဖြရပါမယ္၊ အဲဒီ noun ေတြကို class အျဖစ္ဖန္တီးရပါမယ္။ software မွာပါဝင္တဲ့ verb(ႀကိယာ) ေတြကိုေတာ့ behavior အျဖစ္သတ္မွတ္ရပါမယ္။ ဥပမာဆိုပါေတာ့ ေဈ းဝယ္တဲ့ software တစ္ခုမွာ ပစၥည္းမွာမယ္ဆိုပါေတာ့၊ ဒါဆိုရင္ item, order, customer address စသည္တို႔ကို class ေတြအျဖစ္သတ္မွတ္ရပါမယ္။ ေအာ္ဒါမွာတဲ့ verb ေတြျဖစ္တဲ့ addToCart(), cancelOrder(), deliverOrder() စသည္ျဖင့္ behavior ေတြသတ္မွတ္ေပးရပါမယ္။

 

Class ကိုစတင္အသံုးျပဳျခင္း

Class တစ္ခုကိုေအာက္ကနမူနာအတိုင္း ေၾကာ္ျငာရပါတယ္။

class SampleClass {

 

}

 

တြန္႔ကြင္းထဲမွာ အဲဒီ class ရဲ႕ state(variable) နဲ႔ behavior(function) ေတြထည့္သြင္း ေရးသားေပးရပါမယ္။ variable ကို property လို႔လည္းေခၚလို႔ရပါတယ္၊ function ကိုလည္း method လို႔ေခၚလို႔ရပါတယ္။ class ထဲမွာ property ေတြထည့္သြင္းေၾကာ္ျငာမယ္ဆိုရင္ variable ေၾကာ္ျငာသလိုပါပဲ။

 

variable ေတြကိုသံုးမ်ိဳးခြဲျခားႏိုင္ပါတယ္၊ class ရဲ႕တြန္႔ကြင္းထဲမွာ class ရဲ႕ေအာက္တည့္တည့္မွာ တုိက္ရိုက္ပါဝင္တဲ့ variable ကို field လို႔ေခၚပါတယ္။ method ထဲမွာပါတဲ့ သို႔မဟုတ္ class ရဲ႕တြန္႔ကြင္းမဟုတ္တဲ့ တျခားတြန္႔ကြင္းထဲမွာ ပါတဲ့ variable ကိုေတာ့ local variable လို႔ေခၚပါတယ္။ method ေၾကာ္ျငာတဲ့အထဲမွာ ပါတဲ့ variable ကို parameter လို႔ေခၚပါတယ္။ ဒါဆိုရင္ class တစ္ခုကိုေၾကာ္ျငာၿပီး အဲဒီ class ရဲ႕ field ေတြကိုပါေၾကာ္ျငာတဲ့ နမူနာတစ္ခု ေရးၾကည့္ရေအာင္လား။

 

class LaptopComputer {

public int memorySize;

private string CPU;

public int harddiskSize;

}

 

ဒီမွာတစ္ခုသတိထားမိတာရွိ ပါလိမ့္မယ္၊ private နဲ႔ public ဆိုတဲ့စာကားလံုးေတြပါ။ အဲဒီစကားလံုးေတြကို access modifier လို႔ေခၚပါတယ္၊ တျခား access modifier ေတြလည္းရွိပါတယ္ ဒါေပမဲ့ ေလာေလာဆယ္ ဒီႏွစ္ခုကိုပဲမွတ္သားထားပါ က်န္တာေတြေနာက္မွပဲ ရွင္းျပပါမယ္၊ ဒါမွမဟုတ္ရင္လည္း မိမိဘာသာရွာေဖြေလ့လာၾကည့္ပါ။ private လို႔ေၾကာ္ျငာထားတဲ့ field variable ကိုဒီ class ထဲကေနပဲအသံုးျပဳလို႔ရပါတယ္ တျခားေနရာကေန တျခား class တစ္ခုကေန ယူသံုးလို႔မရပါဘူး။ public လို႔ေၾကာ္ျငာထားရင္ေတာ့ ဘယ္ေနရာကေန ျဖစ္ျဖစ္ယူသံုးလို႔ရပါတယ္။

Member Function

Function ဆိုတာကုဒ္အစုအေဝး တစ္ခုပါ၊ သူကဒီအတိုင္းေနရင္ အလုပ္မလုပ္ပါဘူး၊ သူ႔ကိုအလုပ္လုပ္ဖို႔ေခၚ(call)လိုက္မွ သူကလုပ္တာပါ။ class တစ္ခုကို run လိုက္ရင္အဲဒီ class ထဲက main ဆိုတဲ့ function ကို system ကအလိုအေလ်ာက္ေခၚပါတယ္။ မိတ္ေဆြတို႔ main function ကိုျမင္ဖူးပါတယ္။ function တစ္ခုကိုဘယ္လို ေၾကာ္ျငာရလည္းဆိုတာ ေအာက္မွာၾကည့္ပါ။

public int calculateMemorySize() {

 

}

public ဆိုတာက access modifier ပါသူ႔အေၾကာင္းကို အေပၚမွာရွင္းျပၿပီးပါၿပီ။ function ေတြမွာလည္း access modifier က field variable ကလိုပါပဲ။ int ဆိုတာက return type လို႔ေခၚၾကပါတယ္။ function တစ္ခုကိုေခၚၿပီးရင္ အဲဒီ function ကအလုပ္လုပ္လို႔ၿပီးခ်ိန္မွာ၊ သူတြက္ခ်က္ၿပီးလို႔ ရတဲ့တန္ဖိုးကို function ေခၚတဲ့ေနရာကိုျပန္ေပးပါတယ္။ return ျပန္တဲ့တန္ဖိုးက int အမ်ိဳးအစားဆိုရင္ int လို႔ေရးရၿပီး၊ string ဆိုရင္ string လို႔ေရးရတယ္။ ဘာတန္ဖိုးမွ return မျပန္ရင္ void လို႔ေရးရတယ္။ () လက္သည္းကြင္းရဲ႕ေရွ႕ကေတာ့ function ရဲ႕နာမည္ပဲျဖစ္ပါတယ္။

 

လက္သည္းကြင္းထဲမွာ တန္ဖိုးတစ္ခုခု သို႔မဟုတ္ variable တစ္ခုခုထည့္ေပးလို႔ရပါတယ္။ အဲဒီတန္ဖိုးက parameter လို႔ေခၚပါတယ္။ function အလုပ္လုပ္တဲ့အခါမွာ လိုအပ္တဲ့တန္ဖိုးကို၊ အဲဒီ function ကိုေခၚတဲ့အခါမွာ လက္ဆင့္ကမ္းေပးလိုက္ရပါတယ္။ ဒါကို parameter passing လို႔ေခၚပါတယ္။

 

Function တစ္ခုကိုေခၚမယ္ဆိုရင္ အရင္ေၾကာ္ျငာဖို႔လိုအပ္ပါတယ္၊ ေၾကာ္ျငာထားတဲ့ function ကိုပဲေခၚလို႔ရပါတယ္။ function ရဲ႕နာမည္ကိုေရးျခင္းျဖင့္ function ကိုေခၚဆိုႏိုင္ပါတယ္။

 

public class Computer {

public int memorySize;

public int displayMemorySize() {

System.out.println(memorySize);

}

public static void main(String[] args) {

Computer lenovo = new Computer();

lenovo.memorySize = 4;

lenovo.displayMemorySize(); //function called

}

}

 

ဒီအေပၚကကုဒ္မွာ Computer lenovo = new Computer(); ဆိုတဲ့ကုဒ္ကို သတိထားမိပါလိမ့္မယ္။ အဲဒါက class တစ္ခုရဲ႕ object တစ္ခုကိုေၾကာ္ျငာတဲ့ကုဒ္ပါ။ ဒီကုဒ္မွာဆိုရင္ lenovo ဆိုတာ object ျဖစ္ၿပီးေတာ့၊ Computer ဆိုတာကအဲဒီ object ရဲ႕အမ်ိဳးအစား(type)ပါပဲ။ java မွာ object ဆိုတာ variable တစ္ခုပါပဲ၊ variable ေၾကာ္ျငာသလိုမ်ိဳး object ကိုေၾကာ္ျငာရပါတယ္။ new Computer() ဆိုတဲ့ကုဒ္က Computer ဆိုတဲ့ class ကေနၿပီး object တစ္ခုကိုဖန္တီးလိုက္တာပါ။

lenovo ဆိုတဲ့ object ရဲ႕ member variable ေတြ ဒါမွမဟုတ္ member function ေတြကို ယူသံုးခ်င္တယ္ဆိုရင္၊ အဲဒီ object ရဲ႕ေနာက္ကေန “.” dot ခံၿပီး variable ႏွင့္ function ေတြကိုအသံုးျပဳလို႔ရပါတယ္။ ဒီလိုေပါ့ lenovo.memorySize; ဒါဆိုရင္ lenovo ရဲ႕ field ကိုအသံုးျပဳတာပါ၊ Lenovo.displayMemorySize(); ဆိုရင္ေတာ့၊ displayMemorySize() function ကိုေခၚတာပါ။

method သို႔မဟုတ္ function ေတြကိုေခၚတဲ့ေနရာမွာ parameter ေတြထည့္ေပးႏိုင္ပါတယ္၊ အဲဒီ parameter ေတြက function အလုပ္လုပ္တဲ့ အထဲကိုေရာက္သြားမွာပါ။ function လက္ခံႏိုင္တဲ့ parameter အမ်ိဳးအစားႏွင့္ အေရအတြက္ကိုသာ ေပးပို႔ႏိုင္တာပါ။

Java class တစ္ခုမွာ နာမည္တူတဲ့ method ေတြတစ္ခုထက္ ပိုရွိခြင့္ရွိပါတယ္။ method ေတြဟာနာမည္တူလို႔ရေပမယ့္ method signatures ေတာ့တူလို႔မရပါဘူး၊ ဆိုလိုတာက မတူညီတဲ့ parameter ေတြရွိရပါမယ္။ ဒီလိုနာမည္တူ method ေတြကို overloaded method လို႔ေခၚပါတယ္။ overloaded method ေတြကို system ကခြဲျခားစစ္ေဆးရာမွာ parameter ေတြရဲ႕ type နဲ႔ အေရအတြက္ကို ၾကည့္ၿပီးခြဲျခားပါတယ္။

Previous : Java Tutorial 9

Next : Java Tutorial 11

1 comment:

  1. […] for graduation ceremonyProfessional Web Development with PHP – PHP Installation and ConfigurationJava Tutorial 10Professional Web Development with PHP – PHP IntroductionJava Tutorial 9Samsung Tech Institute […]

    ReplyDelete