मान लीजिए कि आप एक पेड़, एक सूची, एक ग्राफ आदि का निर्माण कर रहे हैं। आपको बाहरी दुनिया के नोड या सेल के आंतरिक विवरण को क्यों उजागर करना चाहिए?
ग्राफ़ या सूची का उपयोग करने वाला कोई भी व्यक्ति केवल उसके इंटरफ़ेस पर निर्भर होना चाहिए, उसके कार्यान्वयन पर नहीं, क्योंकि आप इसे भविष्य में एक दिन बदलना चाह सकते हैं (उदाहरण के लिए एक सरणी-आधारित कार्यान्वयन से सूचक-आधारित एक) और आपके उपयोग करने वाले क्लाइंट डेटा संरचना ( उनमें से प्रत्येक ) को नए कार्यान्वयन के लिए इसे पर्याप्त करने के लिए अपने कोड को संशोधित करना होगा।
इसके बजाय, एक निजी आंतरिक वर्ग में नोड या सेल के कार्यान्वयन को एनकैप्सुलेट करने से आपको किसी भी समय आपको कार्यान्वयन को संशोधित करने की स्वतंत्रता मिलती है, बिना ग्राहकों को अपने कोड को समायोजित करने के लिए मजबूर होने के बिना, जब तक कि आपके डेटा संरचना का इंटरफ़ेस रहता है। अछूता।
अपने डेटा संरचना के कार्यान्वयन के विवरण को छिपाने से सुरक्षा लाभ भी होता है, क्योंकि यदि आप अपनी कक्षा को वितरित करना चाहते हैं, तो आप केवल इंटरफ़ेस फ़ाइल को एक साथ संकलित कार्यान्वयन फ़ाइल के साथ उपलब्ध कराएंगे और किसी को पता नहीं चलेगा कि क्या आप वास्तव में सरणियों या बिंदुओं का उपयोग कर रहे हैं। आपके कार्यान्वयन के लिए, इस प्रकार आपके आवेदन को किसी प्रकार के शोषण से बचाने या, कम से कम, आपके कोड का दुरुपयोग या निरीक्षण करने की असंभवता के कारण ज्ञान। व्यावहारिक मुद्दों के अलावा, कृपया इस तथ्य को कम न समझें कि यह ऐसे मामलों में एक बहुत ही सुंदर समाधान है।