दो सबसे महत्वपूर्ण वस्तु-उन्मुख सिद्धांत सामंजस्य और युग्मन हैं।
सामंजस्य एक वर्ग के अंदर सभी विधियों के बीच संबंध के बारे में है। क्या वे आवृत्ति चर और पैरामीटर के समान सेट का उपयोग कर रहे हैं, सभी एक ही लक्ष्य की दिशा में एक साथ काम कर रहे हैं ? या क्या हर तरीका एक दूसरे से अलग महसूस करता है?
युग्मन यह है कि एक वर्ग अन्य वर्गों पर कितना निर्भर है, यह बाकी प्रणाली के लिए कितना "एक साथ बंधा हुआ" है, और इस वर्ग की अलगाव में उपयोग करने की क्षमता है।
ये दोनों अवधारणाएं आपको लेंस के एक विशिष्ट सेट के माध्यम से आपके कोड बेस में प्रत्येक वर्ग को देखने में मदद करती हैं। ये लेंस आपको यह पता लगाने में मदद करते हैं कि आपकी कक्षा का डिज़ाइन कितना ठोस है और आप कहाँ कुछ बदलाव कर सकते हैं।
सर्वोत्तम परिणामों के लिए आप उच्च सामंजस्य का लक्ष्य रखना चाहते हैं &कम युग्मन ।
सामंजस्य का एक उदाहरण
कम सामंजस्य आपके पिज्जा पर एक असामान्य टॉपिंग की तरह है, जबकि उच्च सामंजस्य ऐसा महसूस करता है कि सब कुछ वहीं है जहां इसे होना चाहिए।
आप इसके लिए एक भावना प्राप्त कर सकते हैं, लेकिन इसे मापना कठिन है, आपको केवल एक संख्या नहीं मिल सकती है जो आपको बताए कि आपकी कक्षा कितनी एकजुट है। तो इसे समझने में आसान . बनाने के लिए मैं आपको एक कोड उदाहरण दिखाना चाहता हूं जहां यह वास्तव में स्पष्ट है।
ये रहा:
कक्षा लाइब्रेरी def लेंड_बुक एंड डीफ रिटर्न_बुक एंड डेफ मेक_कॉफी एंडेंड
इस उदाहरण में make_coffee
काफी अलग है, भले ही इस पुस्तकालय में एक कैफेटेरिया है, यह Library
के लिए कोई मतलब नहीं है कॉफी बनाने वाली कक्षा 🙂
कैफेटेरिया को किताबों के बारे में किसी भी जानकारी की आवश्यकता नहीं है, किताब कैसे उधार देनी है, आदि।
और पुस्तकालय को यह जानने की जरूरत नहीं है कि कितनी कॉफी बची है या इसे कैसे बनाया जाए।
कम सामंजस्य से हमारा यही मतलब है।
बेशक :
यह हमेशा स्पष्ट नहीं होता है, कभी-कभी आपको ध्यान देने . की आवश्यकता होती है और विधि के नामों से परे देखें।
- ये तरीके वास्तव में क्या कर रहे हैं?
- वे किस डेटा के साथ काम कर रहे हैं?
- वे किन वस्तुओं के साथ सहयोग कर रहे हैं?
इन प्रश्नों से आपको अपनी कक्षा के सामंजस्य के स्तर का अंदाजा हो जाएगा।
आप कम सामंजस्य को कैसे ठीक करते हैं?
आपको उन विधियों को निकालने की आवश्यकता होगी जो इस वर्ग से संबंधित नहीं हैं, किसी अन्य वर्ग के लिए, अक्सर एक नई।
युग्मन का एक उदाहरण
आइए अब युग्मन पर एक नजर डालते हैं।
यहां उदाहरण दिया गया है :
क्लास शॉपिंगकार्ट attr_accessor :आइटम डेफ इनिशियलाइज़ @items =[] एंडएंडक्लास ऑर्डर डीईएफ़ प्रोसेस_ऑर्डर (कार्ट) कार्ट.आइटम्स.मैप (&:मूल्य)। इंजेक्ट (:+) एंडएंड
इस उदाहरण में Order
ShoppingCart
. के साथ अत्यधिक युग्मित है क्योंकि यह इसके बारे में बहुत कुछ जानता है, यह जानता है कि एक items
है चर और यह उसके साथ कुछ गणना कर रहा है।
अब अगर आप ShoppingCart
change बदलते हैं तो items
. का कार्यान्वयन , आपको Order
भी बदलना होगा ।
अच्छा नहीं!
हम इसे इस तरह ठीक कर सकते हैं :
क्लास शॉपिंगकार्ट attr_accessor :आइटम डेफ इनिशियलाइज़ @items =[] एंड डीफ़ कैलकुलेट_टोटल आइटम्स।हमने कपलिंग कम कर दी है गणना के विवरण को स्थानांतरित करके जहां वे संबंधित हैं।
यदि आपको इसके लिए एक रूपक की आवश्यकता है तो इन सेल फोन के बारे में सोचें जो एक निश्चित बैटरी के साथ आते हैं, वह है उच्च युग्मन ।
अगर आप बैटरी को बदल सकते हैं तो वह है कम कपलिंग ।
ध्यान दें कि आपको अभी भी कुछ स्तर के युग्मन की आवश्यकता है, फ़ोन बिना बैटरी और
Order
के काम नहीं करेगा ग्राहक को कितना शुल्क देना है, यह जाने बिना क्लास काम नहीं करेगी।सारांश
आपने दो अति महत्वपूर्ण OOP सिद्धांतों, सामंजस्य और युग्मन के बारे में सीखा है। ये दो अवधारणाएं आपको यह पता लगाने में मदद करती हैं कि कक्षा में विधियां कितनी अच्छी तरह एक साथ काम करती हैं और आपकी कक्षा बाकी प्रणाली से कितनी स्वतंत्र है।
आप इसे अभी अपने किसी प्रोजेक्ट पर लागू कर सकते हैं, इसे खोल सकते हैं और अपनी कुछ कक्षाओं को देख सकते हैं . आपने अभी जो सीखा है उसका उपयोग करके आप उन्हें कैसे सुधार सकते हैं?
पढ़ने के लिए धन्यवाद! साझा करना . करना न भूलें और न्यूज़लेटर की सदस्यता लें यदि आपने अभी तक 🙂
. नहीं किया है