Monday, September 5, 2011

Dependency or Coupling


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.