लोगों का एक बहुत कार्यान्वयन, जो मेरे लिए है की बारीकियों encapsulating उल्लेख किया है है की आंतरिक प्रतिनिधित्व छिपाई जा रही है कक्षा में गेटर्स और सेटर्स का उपयोग करने का सबसे बड़ा कारण। इसके साथ-साथ आपको कई अन्य लाभ भी मिलते हैं, जिसमें आपकी कक्षा का उपयोग करने वाले कोड के प्रत्येक टुकड़े को छूने की आवश्यकता के बिना कार्यान्वयन को फेंकने और बदलने की क्षमता शामिल है। एक छोटी परियोजना में, यह एक बड़ा लाभ नहीं है, लेकिन यदि आपका कोड एक अच्छी तरह से उपयोग (आंतरिक या सार्वजनिक) लाइब्रेरी के रूप में समाप्त होता है, तो यह विशाल लाभ हो सकता है।
एक विशिष्ट उदाहरण: गणित में जटिल संख्या। कुछ भाषाओं में उन्हें एक भाषा या ढांचे की सुविधा के रूप में रखा जाता है, अन्य नहीं। मैं यहां एक उदाहरण के रूप में एक उत्परिवर्ती वर्ग का उपयोग करूंगा, लेकिन यह आसानी से अपरिवर्तनीय हो सकता है।
एक जटिल संख्या वास्तविक और काल्पनिक भागों के साथ प्रपत्र a + bi
पर लिखा जा सकता है, जो अपने आप [gs]etRealPart
और [gs]etImaginaryPart
को अच्छी तरह से उधार।
हालांकि, कुछ मामलों में ध्रुवीय रूप re^(iθ)
पर जटिल संख्याओं के बारे में तर्क करना आसान है, [gs]etRadius
(आर) और [gs]etAngle
(θ) दे रहा है।
आप [gs]etComplexNumber(realPart, imaginaryPart)
और [gs]etComplexNumber(radius, angle)
जैसी विधियों का भी खुलासा कर सकते हैं। तर्क प्रकारों के आधार पर इन्हें अलग-अलग नामों की आवश्यकता हो सकती है या नहीं, लेकिन फिर कक्षा 'उपभोक्ता अपनी आवश्यकताओं के अनुरूप उपयोग कर सकते हैं।
दो रूपों में अंतर-परिवर्तनीय हैं; आप एक से दूसरे में काफी आसानी से परिवर्तित कर सकते हैं, इसलिए कक्षा के आंतरिक भंडारण के लिए कक्षा का उपयोग किस वर्ग के उपभोक्ताओं के लिए अप्रासंगिक है। हालांकि, उपभोक्ता किसी भी रूप का उपयोग कर सकते हैं। यदि आप आंतरिक प्रतिनिधित्व के लिए फॉर्म + द्वि का चयन करते हैं, और का खुलासा करते हैं कि गेटर्स और सेटर्स के बजाय फ़ील्ड्स का उपयोग करके, न केवल क्लास उपभोक्ताओं को उस फॉर्म का उपयोग करने के लिए मजबूर करते हैं, तो आप बाद में आसानी से अपना मन बदल सकते हैं और आंतरिक को प्रतिस्थापित नहीं कर सकते re^(iθ) के साथ प्रतिनिधित्व क्योंकि यह आपके विशेष परिदृश्य में लागू करना आसान हो जाता है। आप जिस सार्वजनिक एपीआई को परिभाषित कर चुके हैं, उसके साथ अटक गए हैं, जो अनिवार्य है कि विशेष रूप से असली और काल्पनिक भागों को विशिष्ट फ़ील्ड नामों का उपयोग करके उजागर किया जाता है।
स्रोत
2012-05-02 08:37:41
यह http://stackoverflow.com/a/1568230/985143 –
सटीक डुप्लिकेट @ZazGmy –
सच यह है कि [जीएस] ईटर एक बड़ा बोझ हैं और आपको वास्तव में प्रत्येक मामले में लागत बनाम लाभ का वजन करना चाहिए। ऐसे उदाहरण हैं जहां सार्वजनिक क्षेत्र (विशेष रूप से यदि आप उन्हें अंतिम बना सकते हैं!) सही तरीके हैं। –