समाज में, किसी व्यक्ति की क्षमता और मूल्य का मूल्यांकन करते समय, अक्सर दो अलग-अलग मानदंड होते हैं: एक "रिश्तों पर आधारित" और दूसरा "क्षमता पर आधारित"। दोनों मानक विभिन्न संस्कृतियों, उद्योगों और व्यक्तिगत मूल्यों में सन्निहित हैं, प्रत्येक के अपने समर्थक और आलोचक हैं।
प्रोग्रामिंग भाषाओं के भीतर, दो प्रकार के मानक होते हैं जो कोड को अलग-अलग तरीकों से व्यवस्थित करते हैं, डेटा संरचनाओं को कार्यों से जोड़ते हैं। यह लेख इन दो सामान्य मानकों के अनुप्रयोग और कार्रवाई के सिद्धांत पर संक्षेप में चर्चा करेगा।
जावास्क्रिप्ट भाषा में, क्लास कीवर्ड प्रदान किया जाता है, जिसका उपयोग हम कक्षाओं को परिभाषित करने के लिए कर सकते हैं। महत्वपूर्ण रूप से, कक्षाएं विस्तार योग्य हैं, और जब किसी उदाहरण पर विधियों को बुलाया जाता है, तो वे प्रोटोटाइप श्रृंखला के क्रम में विधि परिभाषाओं को देखते हैं। उदाहरण के लिए:
class Animal { move() { return 'move' } } class Monkey extends Animal { jump() { return 'jump' } } class Human extends Monkey { write() { return 'write' } }
extends कीवर्ड हमें एक नए वर्ग को परिभाषित करने में मदद कर सकते हैं जो अन्य वर्गों से विस्तारित होता है। हम प्रोटोटाइप श्रृंखला इस प्रकार प्राप्त कर सकते हैं:
let me = new Human() let proto = me.__proto__ let r = [] while (proto !== null) { r.push(proto.constructor.name) proto = proto.__proto__ }
हमें r इस प्रकार मिलेगा: ['मानव', 'बंदर', 'पशु', 'वस्तु']। जब हम किसी विधि को कॉल करते हैं, तो विधि कॉल की सफलता इस बात पर निर्भर करती है कि प्रोटोटाइप श्रृंखला पर संबंधित परिभाषा है या नहीं। उदाहरण के लिए, यदि आप me.move() को कॉल करते हैं, तो इसकी एनिमल क्लास में एक परिभाषा होती है, और कॉल सफल हो जाती है।
यह क्लास मॉडल है, जिसे मैं "रिलेशनल" मॉडल कहना पसंद करता हूं, जिसे तब तक कहा जा सकता है जब तक इसे इंस्टेंस के क्लास में या पैरेंट क्लास, ग्रैंडपैरेंट क्लास आदि में परिभाषित किया जाता है। पर।
संबंध-आधारित मॉडल की तुलना में, योग्यता-आधारित मॉडल बहुत सरल है। जब तक कोई उदाहरण एक निश्चित विशेषता को संतुष्ट करता है, तब तक संबंधित विधि उदाहरण के संबंध की परवाह किए बिना उस पर कार्य कर सकती है।
let me = { moveable: true, freezable: false } function move(x) { return x.moveable ? 'move' : undefined } function freeze(x) { return x.freezable ? 'freeze' : undefined }
इस मॉडल में, डेटा और विधियां एक दूसरे से स्वतंत्र हैं। लाभ यह है कि यह संक्षिप्त और सीधा है, लेकिन नुकसान स्पष्ट है, विधि और डेटा की स्वतंत्रता के कारण, विधि परिभाषा को ओवरराइड करना मुश्किल है।
डेटा संरचनाओं और विधियों को जोड़ने के दो तरीकों को पेश करने के बाद, हम सोच सकते हैं कि जब डेटा के वर्ग के अनुसार एक ही नाम के विभिन्न कार्यों के साथ तरीकों को लागू करना आवश्यक होता है, तो रिलेशनल क्लास मॉडल का उपयोग करने की अनुशंसा की जाती है . जब विधि आमतौर पर अपेक्षाकृत निश्चित होती है, और डेटा परिवर्तनशील होता है, और एक ही विधि विभिन्न डेटा पर काम करती है, तो योग्यता-आधारित मॉडल का उपयोग किया जा सकता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3