May 1, 2012

Overload ကို လေ့လာခြင်း

Java ကို​လေ့​လာ​စ​သူ​များ​သည် Override နှင့် Overload ကို မ​ကွဲပြား​ကြ​သည်​က များ​သည်။ ကျွှန်တော်​လည်း​ဤ​ကဲ့သို့​ပင် နာမည်​တွေ​က​လည်း ခပ်​ဆင်⁠ဆင်​ဖြစ်​နေ​ပြန်၊ ပြီး​တော့​လည်း စာ​သင်​ခန်း​ထဲ​တွင် တစ်​ခါ​လောက်​သာ​ပါ​ပြီး နောက်ထပ်​ပြန်​မပေါ်​လာ​တော့​ပြန်​ပါ​သ​ဖြင့်၊ သိ​သ​လိုလို​နှင့် ရော​နေ​တတ်​သည်​က​များ​သည်။

ကျွှန်တော်​တို့​သည် ဘယ်​လို​သဘော​တရား​ရှိ​သည်​ဆို​သည်​ကို သာ​လေ့​လာ​ခဲ့​ပြီး ဘယ်​လို​အသုံးပြု​ရ​သည်​ဆို​သည်​ကို မ​လေ့​လာ​ခဲ့​ကြ​၍​ဖြစ်​သည်။ ကျွှန်တော်​တို့ သည်​အခန်း​တွင် ဘယ်​လို​အသုံးပြု​သင့်​သည်​ကို အဓိက​ထား​၍​လေ့​လာ​သွား​ပါ​မည်။ Override နဲ့ Overload ကို ကွဲပြား​စေ​ရန် OOP နဲ့ မ​ပတ်သက်​ပေ​မယ့် ဤ​အခန်း​တွင် Overload အကြောင်း​ကို ဖော်​ပြ​သွား​ပါ​မည်။


Overload ဆိုသည်မှာ Class တစ်​ခု​အတွင်း​တွင် အမည်​တူ Methods များ​ကို ရေးသား​ချင်း​ဟု​အဓိပ္ပါယ်​ရ​ပါ​သည်။ Class တစ်​ခု​အတွင်း​တွင် Parameter ကွဲပြား​ပေး​မည့် လုပ်ဆောင်​ချက်​များ​သည် တူညီ​ကြောင်း​ကို သိသာ​စေ​ရန် Overload ကို အသုံးပြု​ရေးသား​လေ့​ရှိ​ပါ​သည်။ Utility Class များ​ကို ရေးသား​ရာ​တွင် ရေးသား​လေ့​ရှိ​ပါ​သည်။

public class ConnectionUtil {

      public static HttpURLConnection getPostConnection(String url,
                      List<HttpCookies> cks, Map<String, String> params, String enc)
                      throws IOException {

         HttpURLConnection conn = getConnection(url, cks);
         conn.setDoOutput(true);
         PrintStream ps = new PrintStream(conn.getOutputStream());

         ps.print(getParamStringFromMap(params, enc));
         ps.flush();
         ps.close();

         conn.getContent();
         return conn;
       }

     public static HttpURLConnection getPostConnection(String url,
                      List<HttpCookies>  cks, Map<String, String> params)
                  throws IOException {

          HttpURLConnection conn = getConnection(url, cks);
          conn.setDoOutput(true);
          PrintStream ps = new PrintStream(conn.getOutputStream());

          ps.print(getParamStringFromMap(params));
          ps.flush();
          ps.close();

          conn.getContent();
          return conn;
       }


        public static Document parse(HttpURLConnection conn) throws SAXException,
                  IOException {

           DOMParser parser = new DOMParser();
           parser.parse(new InputSource(conn.getInputStream()));
           DOMReader dr = new DOMReader();
           return dr.read(parser.getDocument());
      }
}

အထက်​ပါ ConnectionUtil Class သည် HttpUrlConnection တွေ​ကို အလွယ်​တ​ကူ ရ​ယူ​နိုင်​ရန်​အတွက် ရေးသား​ထား​သော Utility Class တစ်​ခု​ဖြစ်​ပါ​တယ်။ သည် Class ထဲ​တွင်​သတိထား​စေ​ချင်​တာ​က HttpUrlConnection ကို ရ​ယူ​နိုင်​ရန် getPostConnection ဆို​တဲ့ အသုံးပြု​ချက်​ကို ၂ ခု​ခွဲ​ရေးထား​တာ​ကို တွေ့​မြင်​ရ​ပါ​လိမ့်​မယ်။ လုပ်ဆောင်​ချက် (Method)အမည် ကို​ကြည့်​ရုံ​နှင့် Post Type Connection ကို​ရ​နိုင်​တဲ့ လုပ်ဆောင်​ချက်​တွေ​ဆို​တာ မြင်​ရုံ​နှင့်​သိသာ​နိုင်​ပါ​တယ်။
ပဋ္ဌ​မ လုပ်ဆောင်​ချက်​ကို ကြည့်​ရအောင်။ သူ့​မှာ HttpUrlConnection ကို ရ​ယူ​ရန်​အတွက် အောက်​ပါ Parameter တွေ​ကို လက်ခံ​ရ​ယူ​နေ​ပါ​တယ်။

  • String url : ဆက်​သွယ်​လို​သည့် URL လိပ်စာ စာ​ကြောင်း
  • List cks : Login လုပ်​ပြီး​မှ ဆက်​သွယ်​ရ​သည့် ဆိုက်​များ​အတွက် မှတ်ထား​သည့် HttpCookiesများ
  • Map params : Post လုပ်​မည့် Parameter စာသား​များ
  • String enc : Encoding စာ အမျိုး​အစား
လုပ်ဆောင်​ချက်​ထဲ​တွင် အထက်​ပါ Parameterများ​ဖြင့် HTTP Request ကို Post လုပ်​ပြီး​သား HttpUrlConnection ကို ပြန်​ရ​ယူ​နေ​စေ​ပါ​တယ်။

ဒုတိယ​လုပ်ဆောင်​ချက်​ကို ကြည့်​ရအောင်။ သူ​လည်း​ပဲ အထက်​ပါ Parameter များ​ထဲ​မှ Encoding စာ​အမျိုး​အစား​မှ​လွဲ တဲ့ Parameter တွေ​ကို ရ​ယူ​ပြီး HttpUrlConnection ကို ပြန်​ပေး​နေ​ပါ​တယ်။ Encoding စာသား​မ​ပါ​တာ​က​လွဲ​ရင် လုပ်ဆောင်​ချက်​တွေ​က အတူတူ​ဖြစ်​ပါ​တယ်။ Encoding စာသား​ကို သိ​ပြီး Post Type Connection ကို ရ​ယူ​လို​လျင် ပဋ္ဌ​မ လုပ်ဆောင်​ချက်​ကို အသုံးပြု​ပြီး၊ Encoding စာသား​ကို​မ​သိ​ပါ​က ဒုတိယ လုပ်ဆောင်​ချက်​ကို အသုံးပြု​သင့်​သည် ဆို​သည်​ကို သိသာ​စေ​နိုင်​ပါ​သည်။

ဤ​ကဲ့သို့ Class တစ်​ခု​အတွင်း​တွင် အမည်​တူ​ပြီး၊ Parameter အမျိုး​အစား၊ အရေအတွက် မ​တူ​တဲ့ လုပ်ဆောင်​ချက်​များ​ကို ထပ်ခါထပ်ခါ ရေးသား​ချင်း​ကို Overload ဟုခေါ်​ပါ​သည်။ နောက်​အခန်း​များ​တွင် Override နှင့် Polymorphism အကြောင်း​ကို ဆက်လက်​ရေးသား​သွား​ပါ​ဦး​မည်။

No comments:

Post a Comment