2012-12-22 24 views
87

मुझे low in coupling and high in cohesion कथन को समझने में समस्याएं हैं। मैंने गुमराह किया है और इसके बारे में बहुत कुछ पढ़ा है, लेकिन अभी भी इसे समझना मुश्किल है।'कम युग्मन और उच्च मिलाकर' का अर्थ क्या है

जो मैं समझता हूं वह High cohesion का अर्थ है, हमारे पास एक विशेष कार्य करने के लिए विशिष्ट कक्षाएं होनी चाहिए। उम्मीद है कि यह सही है? क्रेडिट कार्ड सत्यापन वर्ग की तरह, जो केवल क्रेडिट कार्ड को प्रमाणित करने के लिए विशिष्ट है।

और अभी भी समझ में नहीं आता कि कम कपलिंग का मतलब क्या है?

+2

अधिक विस्तृत स्पष्टीकरण के लिए, आप इस पोस्ट [कोहेशन और कपलिंग] (http://stackoverflow.com/questions/3085285/cohesion-coupling) से जवाब देना पसंद कर सकते हैं – Infinity

+0

[यह उत्तर] (http: // stackoverflow.com/a/3085419/2623749) निश्चित रूप से यहां दिए गए लोगों को बेहतर और संक्षिप्त है। – Lokesh

उत्तर

135

यह क्या मेरा मानना ​​है कि यह है:

सामंजस्य डिग्री एक मॉड्यूल/वर्ग के तत्वों को एक साथ हैं जो करने के लिए करने के लिए संदर्भित करता है, यह सुझाव दिया है कि संबंधित कोड एक-दूसरे के करीब होना चाहिए, इसलिए हमें उच्च समेकन के लिए प्रयास करना चाहिए और जितना संभव हो सके सभी संबंधित कोड को एक साथ बांधना चाहिए। इसे तत्वों के साथ मॉड्यूल/कक्षा के भीतर करना है।

युग्मन उस डिग्री को संदर्भित करता है जिस पर विभिन्न मॉड्यूल/कक्षाएं एक दूसरे पर निर्भर करती हैं, यह सुझाव दिया जाता है कि सभी मॉड्यूल यथासंभव स्वतंत्र होना चाहिए, यही कारण है कि कम युग्मन। इसे विभिन्न मॉड्यूल/कक्षाओं के बीच तत्वों के साथ करना है।

+5

हमारे प्रोफेसर कहते हैं, "उच्च संयोजन यह सुनिश्चित करने के बारे में है कि मॉड्यूल कई चीजें नहीं करता है, यह केवल एक विशेष चीज़ करना है"। – Lokesh

+1

जो मुझे विश्वास है उससे यह "यह सुनिश्चित करना है कि एक मॉड्यूल एक चीज करता है, कई मॉड्यूल एक ही काम नहीं करते हैं", इसके द्वारा आप यह सुनिश्चित कर सकते हैं कि केवल एक ही मॉड्यूल व्यवहार को निर्दिष्ट करता है, इसलिए किसी चीज़ के लिए समग्र व्यवहार एकसाथ है । – sschrass

4

लंबी कहानी छोटी, कम युग्मन जैसा कि मैंने समझा था, इसका मतलब है कि घटकों को सिस्टम के उचित कामकाज को प्रभावित किए बिना बाहर बदला जा सकता है। मूल रूप से कार्य कर रहा घटक है कि प्रणाली को तोड़ने के बिना व्यक्तिगत रूप से अद्यतन किया जा सकता में आपके सिस्टम Modulize

+0

क्या यह उच्च संयोजन के समान नहीं है? – user1315906

0

कम युग्मन और उच्च संयोजन एक अनुशंसित घटना है।

कपलिंग का मतलब है कि विभिन्न मॉड्यूल परस्पर निर्भरता है और मॉड्यूल की कुछ/काफी कार्यक्षमता को बदलने पर अन्य मॉड्यूल कैसे प्रभावित होते हैं। कम युग्मन पर जोर दिया जाता है क्योंकि निर्भरता को कम बनाए रखा जाना चाहिए ताकि अन्य मॉड्यूल में कम से कम/नगण्य परिवर्तन किए जा सकें।

7

कम युग्मन दो या कई मॉड्यूल के संदर्भ में है। यदि एक मॉड्यूल में बदलाव के परिणामस्वरूप अन्य मॉड्यूल में कई बदलाव होते हैं तो उन्हें अत्यधिक युग्मित कहा जाता है। यह वह जगह है जहां इंटरफेस आधारित प्रोग्रामिंग मदद करता है। मॉड्यूल के भीतर कोई भी परिवर्तन अन्य मॉड्यूल को प्रभावित नहीं करेगा क्योंकि इंटरफेस (इंटरैक्शन का मतलब) उनके बीच नहीं बदला है।

उच्च संयोजन- समान चीजों को एक साथ रखो। तो एक वर्ग में संबंधित नौकरी करने के लिए विधि या व्यवहार होना चाहिए। बस एक अतिरंजित खराब उदाहरण देने के लिए: सूची इंटरफ़ेस के कार्यान्वयन में स्ट्रिंग से संबंधित ऑपरेशन नहीं होना चाहिए। स्ट्रिंग क्लास में विधियों, फ़ील्ड होना चाहिए जो स्ट्रिंग के लिए प्रासंगिक हैं और इसी तरह, सूची के कार्यान्वयन में संबंधित चीजें होनी चाहिए।

उम्मीद है कि मदद करता है।

23

वास्तविक जीवन के रूप में सॉफ़्टवेयर इंजीनियरिंग में, यह है कि कितने तत्व शामिल हैं (हमारे मामले में एक वर्ग कहें) कहा जा सकता है कि वे वास्तव में एक साथ हैं। इस प्रकार, यह एक उपाय है कि सॉफ्टवेयर मॉड्यूल के स्रोत कोड द्वारा व्यक्त की गई कार्यक्षमता के प्रत्येक टुकड़े कितनी दृढ़ता से संबंधित हैं।

ओओ के संदर्भ में एकजुटता को देखने का एक तरीका यह है कि यदि कक्षा में विधियां किसी भी निजी विशेषताओं का उपयोग कर रही हैं।जब एक मॉड्यूल के कुछ हिस्सों बांटा जाता है क्योंकि वे सभी मॉड्यूल के एक भी अच्छी तरह से परिभाषित कार्य करने के लिए योगदान है -

अब चर्चा इस लेकिन उच्च सामंजस्य (कार्यात्मक सामंजस्य या एकता की सबसे अच्छी प्रकार) से भी बड़ा है।

सरल शब्दों में युग्मन, कितना एक घटक (फिर से, एक वर्ग, कल्पना हालांकि जरूरी नहीं) अंदरूनी कामकाज या एक दूसरे के भीतरी तत्वों, के बारे में जानता है अर्थात कितना ज्ञान यह अन्य घटक के है।

ढीला युग्मन ताकि उन घटकों, कम से कम हद तक व्यावहारिक रूप से संभव करने के लिए एक दूसरे पर निर्भर एक सिस्टम या नेटवर्क में घटकों परस्पर की एक विधि ...

इस बारे में I wrote a blog post है। यह उदाहरणों के साथ, इस बारे में बहुत विस्तार से चर्चा करता है। यह इन सिद्धांतों का पालन करने के लाभों के बारे में भी बताता है।

10

सॉफ़्टवेयर डिज़ाइन उच्च समेकन का अर्थ है कि कक्षा को एक चीज़ और एक चीज़ बहुत अच्छी तरह से करनी चाहिए। उच्च समेकन Single responsibility principle से निकटता से संबंधित है।

कम युग्मन सुझाव देता है कि कक्षा में कम से कम संभावित निर्भरता होनी चाहिए। साथ ही, निर्भरताएं जो मौजूद होनी चाहिए कमजोर निर्भरता होनी चाहिए - कंक्रीट वर्ग पर निर्भरता के बजाय इंटरफ़ेस पर निर्भरता पसंद करें, या विरासत पर संरचना को प्राथमिकता दें।

उच्च संयोजन और कम युग्मन हमें बेहतर डिज़ाइन कोड प्रदान करता है जो बनाए रखना आसान है।

+0

आप निर्भरता इंजेक्शन चूक गए। यह कम युग्मन से निकटता से संबंधित है ताकि यह सुनिश्चित किया जा सके कि कक्षा में कम से कम/कोई निर्भरता न हो। – BugHunterUK

0

एक उदाहरण उपयोगी हो सकता है। एक ऐसी प्रणाली की कल्पना करें जो डेटा उत्पन्न करती है और इसे डेटा स्टोर में रखती है, या तो डिस्क या डेटाबेस पर एक फ़ाइल।

डेटा उत्पादन कोड से डेटा स्टोर कोड को अलग करके उच्च संयोजन प्राप्त किया जा सकता है। (और वास्तव में डेटाबेस भंडारण से डिस्क भंडारण को अलग करना)।

कम कपलिंग को यह सुनिश्चित करके हासिल किया जा सकता है कि डेटा उत्पादन में डेटा स्टोर का कोई अनावश्यक ज्ञान नहीं है (उदा। फाइलनाम या डीबी कनेक्शन के बारे में डेटा स्टोर नहीं पूछता है)।

0

विरासत या सामान्यीकरण उच्च युग्मन (यानी उच्च परस्पर निर्भरता) का एक उदाहरण है। इसका मतलब यह है कि विरासत में अक्सर माता-पिता वर्ग मूल कार्यशीलताओं को परिभाषित करता है जिसका उपयोग अपने बच्चे वर्ग द्वारा किया जाता है और माता-पिता वर्ग के तरीकों में परिवर्तन सीधे अपने बच्चों के वर्गों को प्रभावित करता है। इसलिए हम कह सकते हैं कि कक्षाओं के बीच परस्पर निर्भरता की एक बड़ी डिग्री है।

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

2

क्या आपके पास एक स्मार्ट फोन है? क्या कोई बड़ा ऐप है या बहुत सारे छोटे हैं? क्या एक ऐप दूसरे पर जवाब देता है? क्या आप किसी ऐप का उपयोग करके इंस्टॉलेशन, अपडेटिंग और/या अनइंस्टॉल करते समय उपयोग कर सकते हैं? कि प्रत्येक ऐप स्वयं निहित है उच्च संयोजन है। कि प्रत्येक ऐप दूसरों से स्वतंत्र है कम युग्मन है। DevOps इस आर्किटेक्चर का समर्थन करता है क्योंकि इसका मतलब है कि आप पूरे सिस्टम को बाधित किए बिना निरंतर निरंतर तैनाती कर सकते हैं।

संबंधित मुद्दे