Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Java

जावा में टाइट कपलिंग और लूज कपलिंग में क्या अंतर हैं?

तंग युग्मन इसका मतलब है कि वर्ग और वस्तुएं एक दूसरे पर निर्भर हैं। सामान्य तौर पर, तंग युग्मन आमतौर पर अच्छा नहीं होता है क्योंकि यह ढीले युग्मन के दौरान कोड के लचीलेपन और पुन:प्रयोज्य को कम करता है। इसका मतलब उस वर्ग की निर्भरता को कम करना है जो सीधे अलग वर्ग का उपयोग करता है।

तंग युग्मन

  • कड़ी युग्मित वस्तु एक ऐसी वस्तु है जिसे अन्य वस्तुओं के बारे में जानने की आवश्यकता होती है और आमतौर पर एक दूसरे के इंटरफेस पर अत्यधिक निर्भर होती है।
  • एक ऑब्जेक्ट को कसने वाले युग्मित एप्लिकेशन में बदलना अक्सर कई अन्य वस्तुओं में परिवर्तन की आवश्यकता होती है।
  • छोटे अनुप्रयोगों में, हम आसानी से परिवर्तनों की पहचान कर सकते हैं और कुछ भी छूटने की संभावना कम होती है। लेकिन बड़े अनुप्रयोगों में, इन अंतर-निर्भरता को हर प्रोग्रामर हमेशा नहीं जानता है और परिवर्तनों को अनदेखा करने का एक मौका है।

उदाहरण

class A {
   public int a = 0;
   public int getA() {
      System.out.println("getA() method");
      return a;
   }
   public void setA(int aa) {
      if(!(aa > 10))
         a = aa;
   }
}
public class B {
   public static void main(String[] args) {
      A aObject = new A();
      aObject.a = 100; // Not suppose to happen as defined by class A, this causes tight coupling.
      System.out.println("aObject.a value is: " + aObject.a);
   }
}

उपरोक्त उदाहरण में, इस तरह के कार्यान्वयन द्वारा परिभाषित कोड तंग युग्मन का उपयोग करता है और बहुत खराब है क्योंकि कक्षा बी कक्षा ए के विवरण के बारे में जानता है, यदि कक्षा ए चर 'ए' को निजी में बदल देती है तो कक्षा बी भी टूट जाती है। कक्षा ए के कार्यान्वयन में कहा गया है कि चर 'ए' 10 से अधिक नहीं होना चाहिए, लेकिन जैसा कि हम देख सकते हैं कि इस तरह के नियम को लागू करने का कोई तरीका नहीं है क्योंकि हम सीधे चर पर जा सकते हैं और हम जो भी मूल्य तय करते हैं उसकी स्थिति बदल सकते हैं।

आउटपुट

aObject.a value is: 100

ढीला युग्मन

  • ढीला कपलिंग सिस्टम के घटकों के बीच अंतर-निर्भरता को कम करने के लिए एक डिज़ाइन लक्ष्य है जो जोखिम को कम करने के लक्ष्य के साथ है कि एक घटक में परिवर्तन के लिए किसी अन्य घटक में परिवर्तन की आवश्यकता होगी।
  • ढीला कपलिंग सिस्टम के लचीलेपन को बढ़ाने, इसे और अधिक बनाए रखने योग्य बनाने और पूरे ढांचे को अधिक स्थिर बनाने के उद्देश्य से एक बहुत अधिक सामान्य अवधारणा है।

उदाहरण

class A {
   private int a = 0;
   public int getA() {
      System.out.println("getA() method");
      return a;
   }
   public void setA(int aa) {
      if(!(aa > 10))
         a = aa;
   }
}
public class B {
   public static void main(String[] args) {
      A aObject = new A();
      aObject.setA(100); // No way to set 'a' to such value as this method call will
                         // fail due to its enforced rule.
      System.out.println("aObject value is: " + aObject.getA());
   }
}

उपरोक्त उदाहरण में, इस तरह के कार्यान्वयन द्वारा परिभाषित कोड ढीले युग्मन का उपयोग करता है और इसकी अनुशंसा की जाती है क्योंकि कक्षा बी को अपने राज्य को प्राप्त करने के लिए कक्षा ए से गुजरना पड़ता है जहां नियम लागू होते हैं। यदि कक्षा A को आंतरिक रूप से बदल दिया जाता है, तो कक्षा B नहीं टूटेगी क्योंकि यह संचार के तरीके के रूप में केवल कक्षा A का उपयोग करती है।

आउटपुट

getA() method
aObject value is: 0

  1. जावा में JTextField और JTextArea के बीच क्या अंतर हैं?

    JTextField . के बीच मुख्य अंतर और JTextArea जावा में यह है कि एक JTextField पाठ की एक पंक्ति . में प्रवेश करने की अनुमति देता है GUI एप्लिकेशन में जबकि JTextArea पाठ की एक से अधिक पंक्तियाँ entering दर्ज करने की अनुमति देता है GUI एप्लिकेशन में। JTextField एक JTextFeld सबसे महत्वपूर्ण घटकों म

  1. जावा में JFrame और JDialog में क्या अंतर हैं?

    जेफ्रेम फ्रेम में जोड़े गए घटकों को इसकी सामग्री के रूप में संदर्भित किया जाता है, इन्हें contentPane द्वारा प्रबंधित किया जाता है . JFrame . में एक घटक जोड़ने के लिए , हमें इसके contentPane . का उपयोग करना चाहिए इसके बजाय। एक JFrame शीर्षक . के साथ एक विंडो है , सीमा , (वैकल्पिक) मेनू बार और उप

  1. Java में GridLayout और GridBagLayout में क्या अंतर हैं?

    एक ग्रिडलेआउट सभी घटकों को एक आयताकार ग्रिड में रखता है और समान आकार के आयतों . में विभाजित किया जाता है और प्रत्येक घटक को एक आयत के अंदर रखा जाता है जबकि GridBagLayout एक लचीला . है लेआउट प्रबंधक जो घटकों को लंबवत और क्षैतिज रूप से . संरेखित करता है यह आवश्यक नहीं है कि घटक समान आकार के हों।