वस्तु (कंप्यूटर विज्ञान)
कंप्यूटर विज्ञान में, एक वस्तु एक चर (कंप्यूटर विज्ञान), एक डेटा संरचना, एक सबरूटीन, या एक विधि (कंप्यूटर प्रोग्रामिंग) हो सकती है। स्मृति पता के क्षेत्रों के रूप में, उनमें वैल्यू (कंप्यूटर विज्ञान) होता है और पहचानकर्ता (कंप्यूटर प्रोग्रामिंग) द्वारा संदर्भित किया जाता है।
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग|ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग प्रोग्रामिंग प्रतिमान में, ऑब्जेक्ट वेरिएबल्स, फ़ंक्शंस और डेटा स्ट्रक्चर्स का एक संयोजन हो सकता है; विशेष रूप से वर्ग-आधारित प्रोग्रामिंग|प्रतिमान के वर्ग-आधारित रूपांतरों में यह एक वर्ग (कंप्यूटर विज्ञान) के एक विशेष उदाहरण (कंप्यूटर विज्ञान) को संदर्भित करता है।
डेटाबेस प्रबंधन के संबंधपरक मॉडल में, एक वस्तु एक तालिका (डेटाबेस) या कॉलम (डेटाबेस), या डेटा और एक डेटाबेस इकाई के बीच एक संबंध हो सकता है (जैसे कि किसी व्यक्ति की आयु को किसी विशिष्ट व्यक्ति से संबंधित करना)।[1]
ऑब्जेक्ट-आधारित भाषाएँ
प्रोग्रामिंग भाषाओं में एक महत्वपूर्ण अंतर वस्तु-उन्मुख भाषा और वस्तु-आधारित भाषा के बीच का अंतर है। एक भाषा को आमतौर पर वस्तु-आधारित माना जाता है यदि इसमें किसी वस्तु के लिए मूलभूत क्षमताएं शामिल हैं: पहचान, गुण और गुण। एक भाषा को वस्तु-उन्मुख माना जाता है यदि यह वस्तु-आधारित है और इसमें बहुरूपता (कंप्यूटर विज्ञान), वंशानुक्रम (वस्तु-उन्मुख प्रोग्रामिंग), एनकैप्सुलेशन (कंप्यूटर प्रोग्रामिंग), और, संभवतः, वस्तु संरचना की क्षमता भी है। बहुरूपता एक फ़ंक्शन के नाम को कई व्यवहारों के साथ अधिभारित करने की क्षमता को संदर्भित करता है, जिसके आधार पर ऑब्जेक्ट (ओं) को पास किया जाता है। परंपरागत संदेश पासिंग केवल पहली वस्तु पर भेदभाव करता है और मानता है कि उस वस्तु को संदेश भेजना है। हालाँकि, कुछ ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग लैंग्वेज जैसे जायके (प्रोग्रामिंग भाषा) और कॉमन लिस्प ऑब्जेक्ट सिस्टम (CLOS) फ़ंक्शन के पहले पैरामीटर से अधिक पर भेदभाव करने में सक्षम हैं।[2] वंशानुक्रम एक वस्तु वर्ग को उपवर्गित करने की क्षमता है, एक नया वर्ग बनाने के लिए जो एक मौजूदा वर्ग का उपवर्ग है और अपने माता-पिता के सभी डेटा बाधाओं और व्यवहारों को विरासत में मिला है, लेकिन नए और / या उनमें से एक या अधिक को बदलता है।[3][4]
वस्तु-उन्मुख प्रोग्रामिंग
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग मॉड्यूलर पुन: प्रयोज्य सॉफ़्टवेयर सिस्टम को डिज़ाइन करने का एक तरीका है। ऑब्जेक्ट-ओरिएंटेड दृष्टिकोण अच्छी डिज़ाइन प्रथाओं का एक विकास है जो कंप्यूटर प्रोग्रामिंग की शुरुआत में वापस जाता है। ऑब्जेक्ट-ओरिएंटेशन केवल पुरानी तकनीकों जैसे संरचित प्रोग्रामिंग और अमूर्त डेटा प्रकारों का तार्किक विस्तार है। एक वस्तु एक अमूर्त डेटा प्रकार है जिसमें बहुरूपता (कंप्यूटर विज्ञान) और वंशानुक्रम (वस्तु-उन्मुख प्रोग्रामिंग) शामिल हैं।
प्रोग्राम को कोड और डेटा के रूप में स्ट्रक्चर करने के बजाय, एक ऑब्जेक्ट-ओरिएंटेड सिस्टम ऑब्जेक्ट की अवधारणा का उपयोग करके दोनों को एकीकृत करता है। एक वस्तु में स्थिति (डेटा) और व्यवहार (कोड) होता है। वस्तुएं वास्तविक दुनिया में पाई जाने वाली चीजों के अनुरूप हो सकती हैं। उदाहरण के लिए, एक ग्राफिक्स प्रोग्राम में सर्कल, स्क्वायर, मेन्यू जैसे ऑब्जेक्ट होंगे। एक ऑनलाइन शॉपिंग सिस्टम में शॉपिंग कार्ट, ग्राहक, उत्पाद जैसी वस्तुएं होंगी। खरीदारी प्रणाली आदेश देने, भुगतान करने और छूट प्रदान करने जैसे व्यवहारों का समर्थन करेगी। वस्तुओं को वर्ग पदानुक्रम के रूप में डिज़ाइन किया गया है। तो उदाहरण के लिए शॉपिंग सिस्टम के साथ इलेक्ट्रॉनिक्स उत्पाद, रसोई उत्पाद और पुस्तक जैसे उच्च स्तरीय वर्ग हो सकते हैं। इलेक्ट्रॉनिक उत्पादों के तहत उदाहरण के लिए और परिशोधन हो सकते हैं: सीडी प्लेयर, डीवीडी प्लेयर, आदि। ये वर्ग और उपवर्ग गणितीय तर्क में सेट (गणित) और सबसेट के अनुरूप हैं।[5][6]
विशिष्ट वस्तुएं
वस्तुओं के लिए एक महत्वपूर्ण अवधारणा सॉफ्टवेयर डिजाइन पैटर्न है। एक सामान्य समस्या का समाधान करने के लिए एक डिज़ाइन पैटर्न एक पुन: प्रयोज्य टेम्पलेट प्रदान करता है। निम्नलिखित वस्तु विवरण वस्तुओं के लिए कुछ सबसे सामान्य डिजाइन पैटर्न के उदाहरण हैं।[7]
- फंक्शन ऑब्जेक्ट: एक एकल विधि के साथ एक वस्तु (सी ++ में, यह विधि फ़ंक्शन ऑपरेटर, ऑपरेटर() होगी) जो फ़ंक्शन की तरह कार्य करती है (जैसे सी/सी ++ फ़ंक्शन के लिए सूचक)।
- अपरिवर्तनीय वस्तु: निर्माण के समय एक निश्चित स्थिति के साथ एक वस्तु स्थापित की जाती है और जो बाद में नहीं बदलती है।
- प्रथम श्रेणी की वस्तु: एक वस्तु जिसका उपयोग बिना प्रतिबंध के किया जा सकता है।
- कंटेनर (डेटा संरचना): एक वस्तु जिसमें अन्य वस्तुएँ हो सकती हैं।
- फैक्टरी वस्तु: एक वस्तु जिसका उद्देश्य अन्य वस्तुओं का निर्माण करना है।
- Metaobject: एक वस्तु जिससे अन्य वस्तुएँ बनाई जा सकती हैं (एक वर्ग (कंप्यूटर विज्ञान) के साथ तुलना करें, जो आवश्यक रूप से एक वस्तु नहीं है)।
- प्रोटोटाइप पैटर्न: एक विशेष मेटाऑब्जेक्ट जिससे कॉपी करके अन्य ऑब्जेक्ट बनाए जा सकते हैं
- ईश्वर वस्तु: एक ऐसी वस्तु जो बहुत कुछ जानती है या करती है (यह एक एंटी-पैटर्न का उदाहरण है)।
- सिंगलटन पैटर्न: एक वस्तु जो कार्यक्रम के जीवनकाल के दौरान अपनी कक्षा का एकमात्र उदाहरण है।
- फ़िल्टर वस्तु: एक ऑब्जेक्ट जो इनपुट के रूप में डेटा की एक धारा प्राप्त करता है और इसे ऑब्जेक्ट के आउटपुट में बदल देता है। अक्सर इनपुट और आउटपुट धाराएँ वर्णों की धाराएँ होती हैं, लेकिन ये मनमानी वस्तुओं की धाराएँ भी हो सकती हैं। ये आम तौर पर रैपर में उपयोग किए जाते हैं क्योंकि वे डेवलपर पक्ष में आवश्यक अमूर्तता के साथ मौजूदा कार्यान्वयन को छुपाते हैं।
वितरित वस्तुएं
वस्तु-उन्मुख दृष्टिकोण केवल एक प्रोग्रामिंग मॉडल नहीं है। यह वितरित सिस्टम के लिए इंटरफ़ेस विवरण भाषा के रूप में समान रूप से अच्छी तरह से उपयोग किया जा सकता है। एक वितरित कंप्यूटिंग मॉडल में ऑब्जेक्ट प्रोग्रामिंग ऑब्जेक्ट्स की तुलना में बड़े दानेदार, लंबे समय तक चलने वाले और अधिक सेवा-उन्मुख होते हैं।
वितरित वस्तुओं को पैकेज करने का एक मानक तरीका एक इंटरफ़ेस डेफिनिशन लैंग्वेज (IDL) के माध्यम से है। एक IDL क्लाइंट को वितरित सर्वर ऑब्जेक्ट के सभी विवरणों को ढाल देता है। विवरण जैसे कि कौन सा कंप्यूटर ऑब्जेक्ट पर रहता है, यह किस प्रोग्रामिंग भाषा का उपयोग करता है, कौन सा ऑपरेटिंग सिस्टम, और अन्य प्लेटफ़ॉर्म-विशिष्ट मुद्दे। IDL भी आमतौर पर एक वितरित वातावरण का हिस्सा होता है जो एक समान तरीके से सभी वस्तुओं को लेनदेन और दृढ़ता जैसी सेवाएं प्रदान करता है। वितरित वस्तुओं के लिए सबसे लोकप्रिय मानकों में से दो लक्ष्य प्रबंधन समूह के कॉरबा मानक और माइक्रोसॉफ्ट के डीसीओएम हैं।[8] वितरित वस्तुओं के अलावा, वितरित कंप्यूटिंग को सक्षम करने के लिए किसी वस्तु की मूल अवधारणा के लिए कई अन्य विस्तार प्रस्तावित किए गए हैं:
- प्रोटोकॉल ऑब्जेक्ट एक प्रोटोकॉल स्टैक के घटक होते हैं जो ऑब्जेक्ट-ओरिएंटेड इंटरफ़ेस के भीतर नेटवर्क संचार को घेरते हैं।
- प्रतिकृति (कंप्यूटर विज्ञान) वितरित वस्तुओं के समूह हैं (जिन्हें प्रतिकृति कहा जाता है) जो अपने आंतरिक राज्यों के बीच उच्च स्थिरता प्राप्त करने के लिए एक वितरित बहु-पक्षीय प्रोटोकॉल चलाते हैं, और जो समन्वित तरीके से अनुरोधों का जवाब देते हैं। उदाहरणों में दोष-सहिष्णु CORBA ऑब्जेक्ट शामिल हैं।
- लाइव वितरित वस्तुएँ (या केवल लाइव वितरित वस्तु)[9] प्रतिकृतियों के समूहों के लिए प्रतिकृति वस्तु अवधारणा को सामान्यीकृत करें जो किसी भी वितरित प्रोटोकॉल का आंतरिक रूप से उपयोग कर सकते हैं, जिसके परिणामस्वरूप उनके स्थानीय राज्यों के बीच केवल एक कमजोर स्थिरता हो सकती है।
इनमें से कुछ एक्सटेंशन, जैसे वितरित ऑब्जेक्ट्स और प्रोटोकॉल ऑब्जेक्ट्स, एक निश्चित संदर्भ में उपयोग की जाने वाली विशेष प्रकार की साधारण वस्तुओं के लिए डोमेन-विशिष्ट शब्द हैं (जैसे दूरस्थ विधि मंगलाचरण या प्रोटोकॉल स्टैक)। अन्य, जैसे कि प्रतिरूपित वस्तुएं और लाइव वितरित वस्तुएं, अधिक गैर-मानक हैं, जिसमें वे सामान्य मामले को छोड़ देते हैं कि एक वस्तु एक समय में एक ही स्थान पर रहती है, और अवधारणा को उन संस्थाओं (प्रतिकृतियों) के समूहों पर लागू करती है जो फैल सकती हैं कई स्थानों पर, केवल कमजोर संगत स्थिति हो सकती है, और जिसकी सदस्यता गतिशील रूप से बदल सकती है।
सेमांटिक वेब
सिमेंटिक वेब अनिवार्य रूप से एक वितरित-वस्तु ढांचा है। सिमेंटिक वेब में दो प्रमुख प्रौद्योगिकियां वेब ओन्टोलॉजी भाषा (OWL) और संसाधन विवरण ढांचा (RDF) हैं। RDF बुनियादी वस्तुओं को परिभाषित करने की क्षमता प्रदान करता है - नाम, गुण, विशेषताएँ, संबंध - जो इंटरनेट के माध्यम से सुलभ हैं। OWL सेट थ्योरी के आधार पर एक समृद्ध ऑब्जेक्ट मॉडल जोड़ता है, जो अतिरिक्त मॉडलिंग क्षमताएं प्रदान करता है जैसे कि एकाधिक वंशानुक्रम।
OWL ऑब्जेक्ट्स एक इंटरफ़ेस डेफिनिशन लैंग्वेज के माध्यम से एक्सेस किए गए मानक बड़े दाने वाले वितरित ऑब्जेक्ट्स की तरह नहीं हैं। ऐसा दृष्टिकोण इंटरनेट के लिए उपयुक्त नहीं होगा क्योंकि इंटरनेट लगातार विकसित हो रहा है और इंटरफेस के एक सेट पर मानकीकरण हासिल करना मुश्किल है। ओडब्लूएल ऑब्जेक्ट्स प्रोग्रामिंग भाषाओं जैसे जावा (प्रोग्रामिंग भाषा) और सी ++ में एप्लिकेशन डोमेन मॉडल को परिभाषित करने के लिए उपयोग की जाने वाली वस्तुओं के समान होते हैं।
हालाँकि, OWL ऑब्जेक्ट्स और पारंपरिक ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग ऑब्जेक्ट्स के बीच महत्वपूर्ण अंतर हैं। पारंपरिक वस्तुओं को आमतौर पर एकल वंशानुक्रम के साथ स्थिर पदानुक्रम में संकलित किया जाता है, लेकिन OWL वस्तुएँ गतिशील होती हैं। एक OWL ऑब्जेक्ट रन टाइम पर अपनी संरचना बदल सकता है और नए या अलग-अलग वर्गों का उदाहरण बन सकता है।
एक और महत्वपूर्ण अंतर यह है कि जिस तरह से मॉडल उस जानकारी का व्यवहार करता है जो वर्तमान में सिस्टम में नहीं है। प्रोग्रामिंग ऑब्जेक्ट्स और अधिकांश डेटाबेस सिस्टम क्लोज्ड-वर्ल्ड धारणा का उपयोग करते हैं। यदि कोई तथ्य सिस्टम को ज्ञात नहीं है तो उस तथ्य को झूठा मान लिया जाता है। सिमेंटिक वेब ऑब्जेक्ट ओपन-वर्ल्ड धारणा का उपयोग करते हैं, एक कथन को केवल तभी गलत माना जाता है जब वास्तविक प्रासंगिक जानकारी होती है कि यह गलत है, अन्यथा इसे अज्ञात माना जाता है, न तो सत्य और न ही गलत।
OWL ऑब्जेक्ट वास्तव में KL-ONE और लूम जैसी आर्टिफिशियल इंटेलिजेंस फ्रेम भाषा में ऑब्जेक्ट्स की तरह हैं।
निम्न तालिका पारंपरिक वस्तुओं को ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषाओं जैसे जावा या सी ++ सेमेन्टिक वेब ऑब्जेक्ट्स के विपरीत करती है:[10][11]
OOP Objects | Semantic Web Objects |
---|---|
Classes are regarded as types for instances. | Classes are regarded as sets of individuals. |
Instances can not change their type at runtime. | Class membership may change at runtime. |
The list of classes is fully known at compile-time and cannot change after that. | Classes can be created and changed at runtime. |
Compilers are used at build-time. Compile-time errors indicate problems. | Reasoners can be used for classification and consistency checking at runtime or build-time. |
Classes encode much of their meaning and behavior through imperative functions and methods. | Classes make their meaning explicit in terms of OWL statements. No imperative code can be attached. |
Instances are anonymous insofar that they cannot easily be addressed from outside of an executing program. | All named RDF and OWL resources have a unique URI under which they can be referenced. |
Closed world: If there is not enough information to prove a statement true, then it is assumed to be false. | Open world: If there is not enough information to prove a statement true, then it may be true or false.[12] |
यह भी देखें
संदर्भ
- ↑ Oppel, Andy (2005). SQL Demystified. McGraw Hill. p. 7. ISBN 0-07-226224-9.
- ↑ Gabriel, Richard; Linda G. DeMichie (1987). "The Common Lisp Object System: An Overview" (PDF). Lucid Inc. Technical Report. Lecture Notes in Computer Science. 276: 151. Bibcode:1987LNCS..276..151D. doi:10.1007/3-540-47891-4_15. ISBN 978-3-540-18353-2.
- ↑ Wegner, Peter (December 1987). Meyrowitz, Norman (ed.). "Dimensions of Object-Based Language Design". OOPSLA'87 Conference Proceedings. 22 (12): 168–182. doi:10.1145/38807.38823.
- ↑ Barbey, S; M. Kempe; A. Strohmeier (1993). "Object-Oriented Programming with Ada 9X". Draft Technical Report. Swiss Federal Institute of Technology in Lausanne Software Engineering Laboratory. Retrieved 15 December 2013.
Ada 83 itself is generally not considered to be object-oriented; rather, according to the terminology of Wegner [Weg 87], it is said to be object-based, since it provides only a restricted form of inheritance and it lacks polymorphism.
- ↑ Jacobsen, Ivar; Magnus Christerson; Patrik Jonsson; Gunnar Overgaard (1992). Object Oriented Software Engineering. Addison-Wesley ACM Press. ISBN 0-201-54435-0.
- ↑ "What is an Object?". oracle.com. Oracle Corporation. Retrieved 13 December 2013.
- ↑ Martin, Robert C. "Design Principles and Design Patterns" (PDF). Archived from the original (PDF) on September 6, 2015. Retrieved 28 April 2017.
- ↑ Orfali, Robert (1996). The Essential Client/Server Survival Guide. New York: Wiley Computer Publishing. pp. 399–403. ISBN 0-471-15325-7.
- ↑ Ostrowski, K., Birman, K., Dolev, D., and Ahnn, J. (2008). "Programming with Live Distributed Objects", Proceedings of the 22nd European Conference on Object-Oriented Programming, Paphos, Cyprus, July 07–11, 2008, J. Vitek, Ed., Lecture Notes in Computer Science, vol. 5142, Springer-Verlag, Berlin, Heidelberg, 463-489, http://portal.acm.org/citation.cfm?id=1428508.1428536.
- ↑ Berners-Lee, Tim; James Hendler; Ora Lassila (May 17, 2001). "The Semantic Web A new form of Web content that is meaningful to computers will unleash a revolution of new possibilities". Scientific American. 284: 34–43. doi:10.1038/scientificamerican0501-34. Archived from the original on April 24, 2013.
- ↑ Knublauch, Holger; Oberle, Daniel; Tetlow, Phil; Wallace, Evan (2006-03-09). "A Semantic Web Primer for Object-Oriented Software Developers". W3C. Retrieved 2008-07-30.
- ↑ Table excerpted from tables in: http://www.w3.org/2001/sw/BestPractices/SE/ODSD/
बाहरी संबंध
- What Is an Object? from The Java Tutorials