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.