Java ကိုလေ့လာစသူများသည် Override နှင့် Overload ကို မကွဲပြားကြသည်က များသည်။ ကျွှန်တော်လည်းဤကဲ့သို့ပင် နာမည်တွေကလည်း ခပ်ဆင်ဆင်ဖြစ်နေပြန်၊ ပြီးတော့လည်း စာသင်ခန်းထဲတွင် တစ်ခါလောက်သာပါပြီး နောက်ထပ်ပြန်မပေါ်လာတော့ပြန်ပါသဖြင့်၊ သိသလိုလိုနှင့် ရောနေတတ်သည်ကများသည်။
ကျွှန်တော်တို့သည် ဘယ်လိုသဘောတရားရှိသည်ဆိုသည်ကို သာလေ့လာခဲ့ပြီး ဘယ်လိုအသုံးပြုရသည်ဆိုသည်ကို မလေ့လာခဲ့ကြ၍ဖြစ်သည်။ ကျွှန်တော်တို့ သည်အခန်းတွင် ဘယ်လိုအသုံးပြုသင့်သည်ကို အဓိကထား၍လေ့လာသွားပါမည်။ Override နဲ့ Overload ကို ကွဲပြားစေရန် OOP နဲ့ မပတ်သက်ပေမယ့် ဤအခန်းတွင် Overload အကြောင်းကို ဖော်ပြသွားပါမည်။
Overload ဆိုသည်မှာ Class တစ်ခုအတွင်းတွင် အမည်တူ Methods များကို ရေးသားချင်းဟုအဓိပ္ပါယ်ရပါသည်။ Class တစ်ခုအတွင်းတွင် Parameter ကွဲပြားပေးမည့် လုပ်ဆောင်ချက်များသည် တူညီကြောင်းကို သိသာစေရန် Overload ကို အသုံးပြုရေးသားလေ့ရှိပါသည်။ Utility Class များကို ရေးသားရာတွင် ရေးသားလေ့ရှိပါသည်။
အထက်ပါ ConnectionUtil Class သည် HttpUrlConnection တွေကို အလွယ်တကူ ရယူနိုင်ရန်အတွက် ရေးသားထားသော Utility Class တစ်ခုဖြစ်ပါတယ်။ သည် Class ထဲတွင်သတိထားစေချင်တာက HttpUrlConnection ကို ရယူနိုင်ရန် getPostConnection ဆိုတဲ့ အသုံးပြုချက်ကို ၂ ခုခွဲရေးထားတာကို တွေ့မြင်ရပါလိမ့်မယ်။ လုပ်ဆောင်ချက် (Method)အမည် ကိုကြည့်ရုံနှင့် Post Type Connection ကိုရနိုင်တဲ့ လုပ်ဆောင်ချက်တွေဆိုတာ မြင်ရုံနှင့်သိသာနိုင်ပါတယ်။
ပဋ္ဌမ လုပ်ဆောင်ချက်ကို ကြည့်ရအောင်။ သူ့မှာ HttpUrlConnection ကို ရယူရန်အတွက် အောက်ပါ Parameter တွေကို လက်ခံရယူနေပါတယ်။
ဒုတိယလုပ်ဆောင်ချက်ကို ကြည့်ရအောင်။ သူလည်းပဲ အထက်ပါ Parameter များထဲမှ Encoding စာအမျိုးအစားမှလွဲ တဲ့ Parameter တွေကို ရယူပြီး HttpUrlConnection ကို ပြန်ပေးနေပါတယ်။ Encoding စာသားမပါတာကလွဲရင် လုပ်ဆောင်ချက်တွေက အတူတူဖြစ်ပါတယ်။ Encoding စာသားကို သိပြီး Post Type Connection ကို ရယူလိုလျင် ပဋ္ဌမ လုပ်ဆောင်ချက်ကို အသုံးပြုပြီး၊ Encoding စာသားကိုမသိပါက ဒုတိယ လုပ်ဆောင်ချက်ကို အသုံးပြုသင့်သည် ဆိုသည်ကို သိသာစေနိုင်ပါသည်။
ဤကဲ့သို့ Class တစ်ခုအတွင်းတွင် အမည်တူပြီး၊ Parameter အမျိုးအစား၊ အရေအတွက် မတူတဲ့ လုပ်ဆောင်ချက်များကို ထပ်ခါထပ်ခါ ရေးသားချင်းကို Overload ဟုခေါ်ပါသည်။ နောက်အခန်းများတွင် Override နှင့် Polymorphism အကြောင်းကို ဆက်လက်ရေးသားသွားပါဦးမည်။
ကျွှန်တော်တို့သည် ဘယ်လိုသဘောတရားရှိသည်ဆိုသည်ကို သာလေ့လာခဲ့ပြီး ဘယ်လိုအသုံးပြုရသည်ဆိုသည်ကို မလေ့လာခဲ့ကြ၍ဖြစ်သည်။ ကျွှန်တော်တို့ သည်အခန်းတွင် ဘယ်လိုအသုံးပြုသင့်သည်ကို အဓိကထား၍လေ့လာသွားပါမည်။ 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 များထဲမှ Encoding စာအမျိုးအစားမှလွဲ တဲ့ Parameter တွေကို ရယူပြီး HttpUrlConnection ကို ပြန်ပေးနေပါတယ်။ Encoding စာသားမပါတာကလွဲရင် လုပ်ဆောင်ချက်တွေက အတူတူဖြစ်ပါတယ်။ Encoding စာသားကို သိပြီး Post Type Connection ကို ရယူလိုလျင် ပဋ္ဌမ လုပ်ဆောင်ချက်ကို အသုံးပြုပြီး၊ Encoding စာသားကိုမသိပါက ဒုတိယ လုပ်ဆောင်ချက်ကို အသုံးပြုသင့်သည် ဆိုသည်ကို သိသာစေနိုင်ပါသည်။
ဤကဲ့သို့ Class တစ်ခုအတွင်းတွင် အမည်တူပြီး၊ Parameter အမျိုးအစား၊ အရေအတွက် မတူတဲ့ လုပ်ဆောင်ချက်များကို ထပ်ခါထပ်ခါ ရေးသားချင်းကို Overload ဟုခေါ်ပါသည်။ နောက်အခန်းများတွင် Override နှင့် Polymorphism အကြောင်းကို ဆက်လက်ရေးသားသွားပါဦးမည်။
No comments:
Post a Comment