मैं थोड़ा अस्पष्ट हूं कि सभी सदस्यों को कक्षा के भीतर निजी बनाने और उत्परिवर्तनों को संभालने के लिए सार्वजनिक तरीकों को बनाने में विचार कितना दूर है। आदिम प्रकार मुद्दे नहीं हैं, यह encapsulated वस्तु है कि मैं अस्पष्ट हूँ। ऑब्जेक्ट सदस्यों को निजी बनाने का लाभ उन विधियों को छिपाने की क्षमता है जो कक्षा के निर्माण के संदर्भ में लागू नहीं होते हैं। नकारात्मकता यह है कि आपको अंतर्निहित वस्तु (अधिक विधियों, अधिक काम) को पैरामीटर पास करने के लिए सार्वजनिक विधियां प्रदान करनी होंगी। दूसरी तरफ, यदि आप अंतर्निहित वस्तु के लिए सभी विधियों और संपत्तियों का खुलासा करना चाहते हैं, तो क्या आप वस्तु को सार्वजनिक नहीं कर सकते? वस्तुओं को इस तरह से उजागर करने में क्या खतरे हैं?पारित वस्तुओं को सार्वजनिक या निजी होना चाहिए?
उदाहरण के लिए, मुझे वेक्टर, या ऐरे लिस्ट, सब कुछ से सबकुछ प्राप्त करना उपयोगी लगेगा। एकमात्र नकारात्मक पक्ष मैं सोच सकता हूं कि सार्वजनिक सदस्य संभावित रूप से एक प्रकार को असाइन कर सकते हैं कि यह अंतर्निहित कास्टिंग (या उस पर कुछ प्रभाव नहीं) के माध्यम से नहीं है। क्या एक अस्थिर पदनाम समस्याओं की संभावना को कम करेगा?
बस एक तरफ नोट: मैं समझता हूं कि वास्तविक enapsulation का मतलब है कि सदस्य निजी हैं।
जाएँ Demeter के कानून देखें http://en.wikipedia.org/wiki/Law_of_Demeter, एक ओओपी भाषा में आपको निर्भरताओं को कम करने की तलाश करनी चाहिए। यह निर्भर करता है कि "कक्षा" में वास्तव में कार्यक्षमता है या वास्तव में एक डेटा संरचना है। यदि यह केवल एक डेटा संरचना है तो गेटर्स 'एन' सेटर्स ओवरकिल लगते हैं, खासकर यदि सभी फ़ील्ड अपरिवर्तनीय (अंतिम) हो सकते हैं। – earcam