Dependency သို့မဟုတ် Coupling ဆိုတာ Software Engineering နယ်ပယ်မှာ
Module တွေ တခုနဲ့တခု (ခပ်လွယ်လွယ်ပြောရင်ဗျာ)
Class တွေ တခု နဲ့ တခု
ဘယ်လောက်အတိုင်းအတာအထိ အပြန်အလှန် မှီခိုနေကြသလဲ
ဘယ်လောက်အတိုင်းအတာအထိ အပြန်အလှန် ချိတ်ဆက်ထားကြသလဲ
ဆိုတာကို ဖေါ်ပြတဲ့အခါမှာ သုံးတဲ့ ဝေါဟာရပါ။
ဥပမာ ကျွန်တော်တို့မှာ Class A နဲ့ Class B ဆိုပြီး ရှိတယ်ဆိုပါစို့ဗျာ
၁။ Class A ဟာ class B ဆီက အမွေယူထားတယ်ဆိုရင်
တနည်းပြောရရင် Class A က Class B ကို inherit (extends/implements) လုပ်ထားရင်
နောက်တမျိုးထပ်ပြောရရင် Class A ဟာ Class B ရဲ့ sub class / child class ဖြစ်နေမယ်ဆိုရင်။
၂။ Class A ထဲမှာ Class B type member (variable/object) ပါနေမယ် သုံးထားမယ် ဆိုရင်။
၃။ Class A ထဲကနေ Class B ရဲ့ member function တစ်ခုခုကို လှမ်းခေါ်ထားရင်(သုံးထားရင်)။
၄။ Class A ထဲက method/function တစ်ခုခုဟာ Class B က return ပြန်လာမယ့် တန်ဘိုး တစ်ခုခုကို လက်ခံထားတယ်ဆိုရင်
ဒါမှမဟုတ်လဲ parameter က တစ်ဆင့် တန်ဘိုးကို ရယူမယ်ဆိုရင်။
( ဥပမာပြောရရင် C# မှာ out / ref စတဲ့ key word တွေသုံးပြီး ခေါ်တဲ့ function/method ရဲ့ parameter ထဲကို ၊ အခေါ်ခံရတဲ့ function က တန်ဘိုး ပြန်ထည့်ပေးလိုက်သလိုမျိုးပေါ့…)။
၅။ class A ဟာ Class B ကို မှီခိုနေရတဲ့ class တခုခုကို မှီခိုနေရတယ်ဆိုရင်..။
စတဲ့ အခြေအနေမျိုးတွေရှိနေရင် ဒီလိုအခြေအနေကို
Class A နဲ့ Class B ဟာ coupled ဖြစ်နေတယ်…တနည်းပြောရရင်
Class A ဟာ Class B အပေါ်မှာ dependent ဖြစ်နေတယ် ခေါ်တာပေါ့ဗျာ။
အတိုင်းအတာ အနေနဲ့ပြောရရင်တော့
နဲနဲပဲ မှီခိုရင် နဲနဲပဲ ချိတ်ဆက်ထားတယ်ဆိုရင် loosely coupled / low dependency ပေါ့
[Class A is loosely coupled with Class B.] သို့မဟုတ်
[Class A has low dependency on Class B.]
အများကြီး မှီခိုနေရင်၊ အများကြီး ချိတ်ဆက်ထားတယ်ဆိုရင်
tightly coupled တစ်နည်းပြောရရင် high dependency ပေါ့ဗျာ။
[Class A is tightly coupled with Class B.] သို့မဟုတ်
[Class A has high dependency on Class B.]
လူ့ဘဝမှာ အမှီအခိုကင်းကင်း အနှောင်အဖွဲ့ကင်းကင်း၊ လုံးဝမကင်းနိုင်ရင်တောင် တတ်နိုင်သမျှ နဲနဲပဲရှိမယ်ဆိုရင် အကောင်းဆုံးပေါ့။ အနှောင်အဖွဲ့တွေဟာ ဘယ်လောက်ထိဆိုးဝါးသလဲ၊ သူတစ်ပါးကို မှီခိုနေရတဲ့ ဘဝဟာ ဘယ်လောက်ထိ အရည်အသွေး နိမ့်ကျနေသလဲ ဆိုတာ လူတိုင်းသိပြီးသားပါ။
အင်း...လူသားတွေမပြောနဲ့ ဆောဖ့်ဝဲမယ်တောင် ဒီသဘောတရား အတိုင်းပါပဲဗျာ။ အသေးစိပ် ထပ်ပြီးဆွေးနွေးကြသေးတာပေါ့။
ရွှင်လန်းချမ်းမြေ့ပါစေ...
REF:
၁။ http://en.wikipedia.org/wiki/Coupling_%28computer_science%29
၂။ Microsoft .NET: Architecting Applications for the Enterprise
(2009 Microsoft Press)
By
Dino Esposito and Andrea Saltarello
Page 103, Chapter 3, Design Principles and Patterns
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.