ऑब्जेक्ट एनकैप्सुलेशन के साथ अपने कोड को कैसे साफ रखें?

एनकैप्सुलेशन का मतलब कुछ अलग-थलग रखना है। यदि आप एक कैप्सूल में कुछ डालते हैं, तो बाहरी दुनिया इसे एक्सेस नहीं कर सकती है। एनकैप्सुलेशन ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में एक महत्वपूर्ण अवधारणा है क्योंकि यह जटिल कोड को प्रबंधनीय रखने में मदद करता है।

व्हाई यू नीड क्लास

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

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

जावास्क्रिप्ट / टाइपस्क्रिप्ट में, जो इस तरह दिखेगा:

 var animal = {name: "piglet", legs: 4, color: "pink", decoration: "snout"}
animal.name = "goat"
animal.decoration = "horns"

अगली बात जो आप जानते हैं, आपको सींगों के साथ गुलाबी बकरियाँ और गुल्लकें मिली हैं। टाइपस्क्रिप्ट सैंडबॉक्स में कार्रवाई कोड देखें फिर कंसोल आउटपुट देखने के लिए रन पर क्लिक करें।

यदि आप प्रोग्राम बनाना सीख रहे हैं और पेटिंग चिड़ियाघर बनाने के अलावा प्रेरणा चाहते हैं, तो यहां आपको प्रेरित करने के लिए 10 और प्रोजेक्ट हैं

क्योंकि आपका कोडबेस इतना विशाल है, इसलिए उस कोड को ढूंढने में सैकड़ों घंटे लग सकते हैं, जो आपके लैम्ब्स लामा गर्दन और आपके डकलिंग्स ऊन दे रहा है। और एक बार जब आप अपमानजनक कोड पाते हैं, तो आपको वस्तुओं को एक दूसरे से हस्तक्षेप करने से रोकने के लिए और भी अधिक स्पेगेटी कोड लिखना होगा। इसके लिए अवश्य ही एक बेहतर तरीका होना चाहिए। '

ओवरलैप समस्या को ठीक करने का तरीका कक्षाओं के साथ वस्तुओं को परिभाषित करना है। कोड का कोई भी भाग वर्ग परिभाषा के आधार पर एक वस्तु बना सकता है। एक अनोखी वस्तु का निर्माण करना तात्कालिकता कहलाता है। यह गारंटी देता है कि बनाई गई प्रत्येक वस्तु के अपने गुण होंगे। और उन वस्तुओं को गलती से एक दूसरे के साथ हस्तक्षेप करने में सक्षम नहीं होगा।

कक्षाएं पर्याप्त नहीं हैं; आपका ऑब्जेक्ट चर भी एनकैप्सुलेशन की आवश्यकता है

इसलिए हमने तय किया है कि हर जानवर को अपनी वस्तु की जरूरत है। आइए एक वर्ग बनाएं जो हमारे जानवरों को परिभाषित करेगा।

 class Animal {
name: string;
legs: number;
color: string;
decoration: string;
constructor(name: string, legs: number, color: string, decoration: string) {
this.name = name;
this.legs = legs;
this.color = color;
this.decoration = decoration;
}
}

अगला, आइए पशु वस्तुओं की एक जोड़ी बनाएं।

 let babyDuck = new Animal("baby duck", 2, "yellow", "beak");
let bunny = new Animal("bunny", 4, "gray", "floppy ears");

अब तक कोड के साथ खेलते हैं।

अब हम उन सभी जानवरों को जोड़ सकते हैं जिन्हें हम बिना किसी अजीब म्यूटेशन के चाहते हैं। या हम कर सकते हैं?

अगर एक रात, एक थके हुए प्रोग्रामर ने खौफनाक-क्रॉलिक ऐप से एक जानवर को संपादित करने के लिए कुछ कोड लिखे, लेकिन उन्होंने गलती से बनी को संपादित किया?

 bunny.color = "black";
bunny.legs = 8;

स्पाइडर बनियां शांत नहीं हैं, यार! यह उतना ही बुरा है जितना कि हम वस्तुओं में अपने कोड को एनकैप्सुलेट नहीं करते हैं। आइए सुनिश्चित करें कि फिर कभी न हो।

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

चर हालांकि अस्थिर होने की जरूरत है। और यहीं से गेटर्स और सेटर्स आते हैं।

गेटर्स और सेटर ऐसे कार्य हैं जो चर को नियंत्रित तरीके से एक्सेस और बदलते हैं। सेटर्स उस डेटा पर सीमाएँ सेट कर सकते हैं जो परिवर्तित हो जाती है। और प्राप्तकर्ता डेटा को पुनः प्राप्त कर सकता है।

यह हमारी कक्षा को लेग काउंट को नियंत्रित करने के लिए सेट और कार्यों के साथ जैसा दिखता है।

 class Animal {
private _name: string;
private _legs: number;
private _color: string;
private _decoration: string;
constructor(name: string, legs: number, color: string, decoration: string) {
this._name = name;
this._legs = legs;
this._color = color;
this._decoration = decoration;
}
get legs() {
return this._legs;
}
set legs(legCount: number) {
if(legCount > 1 && legCount < 5) {
this._legs = legCount;
}
}
}

एनकैप्सुलेशन सीखें और ग्लोबल वेरिएबल्स से बचें

यहाँ अंतिम कोड है। अपनी समझ को सुनिश्चित करने के लिए आपने जो सीखा है उसे पुनः प्राप्त करें:

  • शेष चरों के लिए गेटर्स और सेटर जोड़ें।
  • स्पैन टैग के रूप में पशु का नाम लौटाएँ: <span> llama </ span>
  • कई सजावट के लिए अनुमति देने के लिए सजावट चर बदलें। उस परिवर्तन को प्रतिबिंबित करने के लिए एक उचित गेट्टर और सेटर बनाएं।

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