Java Programming 9: Classes and Object

person Myat Min Soefolder_openJava Programmingaccess_time July 16, 2016

Class ဆိုတာကတော့ အားလုံးရှေ့မှာဆောက်ခဲ့တဲ့ Tutorial1, Tutorial2, …. အစရှိတာတွေပါ။ တကယ့် Program တစ်ခုမှာ Class တစ်ခုထဲကနေ အလုပ်လုပ်ဖို့ဆိုတာ မဖြစ်နိုင်ပါဘူး။ Code တွေရုပ်ယှက်ခပ်ပြီးနေပါလိမ့်မယ်။ ဒါကြောင့် Class တွေခွဲဆောက်ရပါတယ်။ Class အသစ် ၂ ခုယူလိုက်ပါ။ Tutorial8 နဲ့ Student ဆိုပြီး နာမည်ပေးလိုက်ပါ။ Student file ကိုဖွင့်ပြီးအောက်ပါအတိုင်းရေးလိုက်ပါ။
[java]
package tutorial;

public class Student {

private String name;
private int mark1;
private int mark2;
private int mark3;

public String getName() {
return name;
}

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

public int getMark1() {
return mark1;
}

public void setMark1(int mark1) {
this.mark1 = mark1;
}

public int getMark2() {
return mark2;
}

public void setMark2(int mark2) {
this.mark2 = mark2;
}

public int getMark3() {
return mark3;
}

public void setMark3(int mark3) {
this.mark3 = mark3;
}

public double getAverage() {
return mark1 + mark2 + mark3 / 3;
}
}
[/java]

Tutorial8 မှာအောက်ပါအတိုင်းရေးပါ။ ပြီးရင် Tutorial8 ကို run ကြည့်ပါ။
[java]
package tutorial;

public class Tutorial8 {

public static void main(String[] args) {

Student student1 = new Student();
student1.setName("Maung Maung");
student1.setMark1(70);
student1.setMark2(80);
student1.setMark3(90);

System.out.println("Name : " + student1.getName());
System.out.println("Mark1 : " + student1.getMark1());
System.out.println("Mark2 : " + student1.getMark2());
System.out.println("Mark3 : " + student1.getMark3());
System.out.println("Average : " + student1.getAverage());
}
}
[/java]
Output က အောက်ပါအတိုင်းထွက်လာပါလိမ့်မယ်။

Name : Maung Maung
Mark1 : 70
Mark2 : 80
Mark3 : 90
Average : 80.0

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

ပထမဆုံး Student class ကိုကြည့်ရအောင်။

Student class ထဲမှာ Variable ၄ ခု Methods 9 ခု ပါဝင်ပါတယ်။ ကျောင်းသားအတွက် နာမည်ရယ် အမှတ် ၃ မျိုးပါ။ နာမည်ကို String နဲ့သိမ်းပါတယ်။ အမှတ်ကို ဒဿမမပါဘူးလို့ ယူဆပြီး int နဲ့ပဲသိမ်းပါတယ်။ အောက်က method တွေမှာ getAverage ကလွဲရင် ကျန်တာတွေက variable ထဲကို value ထည့်တာနဲ့ variable ထဲက value ပြန်ယူတာတွေပဲဖြစ်ပါတယ်။ variable တစ်ခုစီမှာ get, set နှစ်ခုစီရှိတဲ့အတွက် method ၈ ခုရှိပါတယ်။ ဒီ method တွေကို getter and setter ဒါမှမဟုတ် accessor method လို့ခေါ်ပါတယ်။

set မှာဆိုရင် return မပြန်တဲ့ method ကိုသုံးပါတယ်။ value ကို parameter အနေနဲ့လက်ခံပါတယ်။ နောက်ဆုံး class ထဲက variable ထဲကို value ထည့်လိုက်ပါတယ်။
[java]
public void setName(String name) {
this.name= name;
}
[/java]
မှာ this ဆိုတာက Student class ကိုရည်ညွှန်းတာပါ name က နှစ်ခုဖြစ်နေတဲ့အတွက် this.name က class ထဲက နာမည်ဖြစ်ပြီး name ကတော့ parameter ထဲက variable ပဲဖြစ်ပါတယ်။ မတူအောင်ပေးလဲရပါတယ်။

get မှာဆိုရင်တော့ variable ရဲ့ data type ကို return ပြန်ပါတယ်။ parameter မလိုအပ်ပါဘူး။
[java]
public String getName() {
return name;
}
[/java]
return name ဆိုပြီးပြန်လိုက်ပါတယ်။ ဒီ method ထဲမှာတော့ name ဆိုတဲ့ နာမည်တူ variable မပါဝင်တဲ့အတွက် this.name ဆိုပြီးသုံးစရာမလိုအပ်တော့ပါဘူး။ သုံးမယ်ဆိုလဲရပါတယ်။

နောက်ဆုံး method ဖြစ်တဲ့ getAverage ကတော့ အမှတ်သုံးခုကိုပေါင်းပြီး return ပြန်တာပဲဖြစ်ပါတယ်။ ဒီနေရာမှာ Order of operation က () မသုံးပဲပေါင်းရင် အစားကို အရင်အလုပ်လုပ်မှာဖြစ်လို့ သုံးခုပေါင်းတာကို () သုံးထားပါတယ်။ return type ကို double သုံးထားတာကတော့ ပျမ်းမျှတွက်တဲ့အခါ ဒဿမထွက်နိုင်လို့ပဲဖြစ်ပါတယ်။

Tutorial8 class ထဲပြန်သွားပြီး main method ထဲကိုကြည့်ရအောင် Student student1 = new Student(); ဆိုတာ student1 ဆိုတဲ့ Student Object တစ်ခုဆောက်လိုက်တာပဲဖြစ်ပါတယ်။ Object ကိုတည်ဆောက်တဲ့အခါမှာ Constructor method ကိုသုံးရပါတယ်။ Constructor method ကိုနောက်သင်ခန်းစာမှာဖော်ပြမှာဖြစ်တဲ့အတွက် object ဆောက်ရင် new keyboard သုံးရတယ်လို့ပဲ ခဏမှတ်ထားပါ။ student1.setName(“Maung Maung”) ဆိုပြီး နာမည်ကိုသတ်မှတ်လိုက်ပါတယ်။ Student class ထဲက name မှာ “Maung Maung” ဆိုပြီးဖြစ်သွားပါတယ်။ setMark1, setMark2, setMark3 … ဆိုပြီး အမှတ်တွေကိုပါသတ်မှတ်ပေးလိုက်ပါတယ်။ နောက်ဆုံး System.out.print နဲ့ နာမည်တွေအမှတ်တွေကိုထုတ်ပေးလိုက်ပါတယ်။ ဒီမှာ အရင် value တွေပေးရပါတယ်။ မပေးရင် String ဆိုရင် null ဖြစ်နေမှာဖြစ်ပြီး int ဆိုရင် 0 ဖြစ်နေမှာဖြစ်ပါတယ်။

Exercise

Student object အသစ်ယူပြီး နာမည်အမှတ်တွေထည့်ကြည့်ပါ။

Comments

  1. Thurein Myo Ag

    Nice expalining sir..

  2. access modifier က public နဲ႕ public static ဘယ္လိုကြာသလဲသိခ်င္ပါ သိပ္မရွင္းေသးလို႔ပါ

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>