[သင္ခန္းစာ – ၁၈] Overload Program တစ္ပုဒ္ ဖန္တီးၾကည့္ရေအာင္။

[သင္ခန္းစာ - ၁၈] Overload Program တစ္ပုဒ္ ဖန္တီးၾကည့္ရေအာင္။

အခု programming technique အစိတ္အပိုင္းတစ္ခုနဲ႔ မိတ္ဆက္ေပးခ်င္ပါတယ္။

အဆိုျပဳခ်က္ - သင့္မွာ method ေတြ အမ်ားႀကီးသံုးၿပီး program ေရးတဲ့အေတြ႕အႀကံဳရိွမယ္လို႔ ေမွ်ာ္လင့္ပါတယ္။

သင္က တူညီတဲ့လုပ္ေဆာင္ခ်က္ (processes) ေတြ(အေၾကာင္းအရာအရ အနည္းငယ္ကြဲျပားခ်က္ရိွတဲ့အခါ)ကို မတူညီတဲ့ method တစ္ခုစီနဲ႔ ေရးတဲ့အခါ method တစ္ခုစီကို မတူညီတဲ့ နာမည္ေတြေပးၿပီးအသံုးျပဳဖူးပါသလား။

တကယ္လို႔ လုပ္ေဆာင္ခ်က္ (processes) ေတြရဲ႕ အခ်က္အလက္ေတြ တူညီေနတယ္ဆုိရင္ method ကို တူညီတဲ့ နာမည္ေပးလို႔ ရပါတယ္။ အဲဒါကုိ “overload of method” လို႔ေခၚပါတယ္။

ကဲ . . . ေအာက္မွာျပထားတဲ့ list 1 ကို ၾကည့္ၾကည့္ရေအာင္။

List 1 - OverLoadTest.java

// overload test class

public class OverLoadTest

{

    private String displayName_;

    public OverLoadTest()

    {

        displayName_ = null;

    }

    // indication name setting

    public void setName(String name)

    {

        displayName_ = name;

    }

    // setting name indication method

    public void printName()                                 // (1)

    {

        "That String line =" I am "+ displayName_ +".”;

        System.out.println(line);

    }

    // appointment name indication method

    public void printName(String name)                      // (2)

    {

        "That String line =" I am "+ name +".";

        System.out.println(line);

    }

    public static void main(String[] args)

    {

        OverLoadTest overLoad = new OverLoadTest();

       // Set a name to display

        overLoad.setName(" Yamada "),

       // Display the name set

        overLoad.printName();

       // Display the name that appointed

        overLoad.printName(" Taro Yamada "),

    }

}

The practice result

18a

ပထမကိစၥမွာေတာ့ printName ဆိုတဲ့ method ကို ဘာ argument မွမေပးဘဲ ေခၚသံုးလိုက္တာျဖစ္ပါတယ္။

အဲဒီကိစၥမွာ output အေနနဲ႔ထြက္လာတဲ့ နာမည္က "Yamada" ျဖစ္ၿပီး setName ဆိုတဲ့ method ကေန assign လုပ္ထားတဲ့ name ျဖစ္ပါတယ္။

ကဲ ဒုတိယကိစၥမွာ ဘယ္လိုသံုးထားလဲ ၾကည့္ရေအာင္။ output အေနနဲ႔ "Taro Yamada" ဆုိၿပီး argument နဲ႔ pass ေပးလိုက္တဲ့ နာမည္ျဖစ္ပါတယ္။ method name ကေတာ့ ပထမ case နဲ႔အတူတူပဲျဖစ္ၿပီး compile error လဲမျဖစ္ပါဘူး။

ဘာျဖစ္လို႔လဲဆိုေတာ့ method (1) နဲ႔ (2)ၾကားမွာရိွတဲ့ ျခားနားခ်က္ျဖစ္တဲ့ method ကိုေခၚသံုးပံုအရ မတူညီတဲ့ method အေနနဲ႔ သတ္မွတ္ၿပီးအသံုးျပဳႏိုင္လို႔ျဖစ္ပါတယ္။

ကဲ. . ေအာက္က ေခၚသံုးပံုတူတဲ့ method တစ္ခုထပ္ထည့္ၿပီး compile လုပ္ၾကည့္ရေအာင္။

 The // appointment name indication method 2

    public void printName(String otherName)

    {

        String line = "My Name is " + otherName + ".";

        System.out.println(line);

    }

18b

Program ကို run လုိက္တဲ့အခါမွာ error ကို သင္ေတြ႕ႏိုင္ပါတယ္။

အဲဒါေၾကာင့္ သင္ဟာ တူညီတဲ့ေခၚသံုးပံုေခၚသံုးနည္းနဲ႔ method တစ္ခုထက္ပိုၿပီး အသံုးျပဳလို႔မရႏိုင္ပါဘူး။

သင္က တူညီတဲ့ နာမည္နဲ႔ method ေတြ တည္ေဆာက္ေပမယ့္လည္း list 1 လိုမ်ိဳး method တစ္ခုစီက တူညီတဲ့ process ေတြလုပ္တယ္ဆိုရင္ ေကာင္းမြန္တဲ့ program မျဖစ္ႏိုင္ပါဘူး။

ေအာက္မွာျပထားတဲ့ ဥပမာမွာ printName ဆိုတဲ့ method ကို "a family name" and "a first name" pass ေပးၿပီးသံုးထားတဲ့ method တစ္ခုထည့္ထားပါတယ္။

List 2 - OverLoadTest.java

// overload test class

public class OverLoadTest

{

    private String displayName_;

    public OverLoadTest()

    {

        displayName_ = null;

    }

    // indication name setting

    public void setName(String name)

    {

        displayName_ = name;

    }

    // setting name indication method

    public void printName()

    {

        printName(displayName_);                            // (1)

    }

    // appointment name indication method (a family name, a name)

    public void printName(String firstName, String lastName)

    {

        String name = firstName + lastName;

        printName(name);                                    // (2)

    }

    // appointment name indication method

    public void printName(String name)                      // (3)

    {

        String line =" I am "+ name +".";

        System.out.println(line);

    }

    public static void main(String[] args)

    {

        OverLoadTest overLoad = new OverLoadTest();

        // set a name to display

        overLoad.setName(" Yamada "),

        //Display the name that set

        overLoad.printName();

        //Display the name that appointed

        overLoad.printName("Yamada Taro"),

       // Display a name (a family name / a first name) that appointed

        overLoad.printName(" Yamada "," Taro "),

    }

}

အေျဖကေတာ့ ေအာက္ပါအတိုင္းျဖစ္ပါတယ္။

18c

လိုင္းနံပါတ္ ၁နဲ႔ ၂မွာ method ၃ ကို ေခၚသံုးပါတယ္။ အက်ိဳးေက်းဇူး ၂ခုရိွပါတယ္။

ပထမအခ်က္ကေတာ့ "System.out.println" ကို တစ္လိုင္းထဲမွာပဲ execute လုပ္ပါတယ္။

အဲဒါေၾကာင့္ တကယ္လို႔ အဲမွာအမွားတစ္ခုရိွခဲ့ရင္ေတာင္ points အနည္းငယ္ပဲ modify လုပ္ဖို႔လိုအပ္ပါတယ္။

ဒုတိယအခ်က္ကေတာ့ လုပ္ေဆာင္ခ်က္တူတဲ့ process ေတြကို ထပ္ေရးစရာမလုိပါဘူး။ အဲဒါေၾကာင့္ program က ပိုၿပီး ရိုးရွင္းလာမွာပါ။

အဲဒီနည္းလမ္းမ်ိဳးဟာ overload method ကိုအသံုးျပဳတဲ့အခါမွာတင္မဟုတ္ပါဘူး ေကာင္းမြန္တဲ့ programming ေရးသားႏိုင္ဖို႔အတြက္ အေရးႀကီးတဲ့ စဥ္းစားပံုနည္းလမ္းျဖစ္ပါတယ္။ မွတ္မိေအာင္လုပ္ေစခ်င္ပါတယ္။

~Summary~

၁. တူညီတဲ့ method တစ္ခုကို မတူညီတဲ့ေခၚသံုးပံုေခၚသံုးနည္းအရ ကြဲျပားျခားနားတဲ့ method အမ်ိဳးမ်ိဳးအသံုးျပဳႏိုင္ပါတယ္။

၂. တူညီတဲ့ လုပ္ေဆာင္ခ်က္ေတြကို plural method ေတြအေနနဲ႔ အသံုးမျပဳဘဲ စုစည္းႏိုင္ပါတယ္။

ဒီသင္ခန္းစာကိုေလ့လာၿပီးေတာ့ "overload" ကဘာလဲဆိုတာ နားလည္လာၿပီလား။

ဒီသင္ခန္းစာမွာ အသံုးျပဳထားတဲ့ Program  ေတြကို ေလ့လာရင္း လက္ေတြ႕အသံုးခ်ႏိုင္ေအာင္ ႀကိဳးစားၾကည့္ရေအာင္။


Check our Facebook Page!