वस्तु (कंप्यूटर विज्ञान): Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{Short description|Arbitrarily defined dataset with specified properties used in some programming paradigms}}
{{Short description|Arbitrarily defined dataset with specified properties used in some programming paradigms}}
[[कंप्यूटर विज्ञान]] में, वस्तु एक [[चर (कंप्यूटर विज्ञान)|चर]] [[डेटा संरचना]], [[फलन]]  या एक [[विधि (कंप्यूटर प्रोग्रामिंग)|विधि कंप्यूटर प्रोग्रामिंग]] के रूप में होती है। [[स्मृति]] के क्षेत्र में वे मूल्य के रूप में होते हैं और [[पहचानकर्ता (कंप्यूटर प्रोग्रामिंग)|पहचानकर्ता कंप्यूटर प्रोग्रामिंग]]  द्वारा संदर्भित किया जाता है।
[[कंप्यूटर विज्ञान]] में, ऑब्जेक्ट एक [[चर (कंप्यूटर विज्ञान)|चर]] [[डेटा संरचना]], [[फलन]]  या एक [[विधि (कंप्यूटर प्रोग्रामिंग)|विधि कंप्यूटर प्रोग्रामिंग]] के रूप में होती है। [[स्मृति]] के क्षेत्र में वे मूल्य के रूप में होते हैं और [[पहचानकर्ता (कंप्यूटर प्रोग्रामिंग)|पहचानकर्ता कंप्यूटर प्रोग्रामिंग]]  द्वारा संदर्भित किया जाता है।


[[प्रोग्रामिंग|ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग]] पैराडिगम में, ऑब्जेक्ट वेरिएबल फलन और डेटा स्ट्रक्चर्स का संयोजन के रूप में होता है, विशेष रूप से पैराडिगम के वर्ग-आधारित विविधताओं में यह वर्ग के एक विशेष [[उदाहरण (कंप्यूटर विज्ञान)|उदाहरण कंप्यूटर विज्ञान]] को संदर्भित करता है।
[[प्रोग्रामिंग|ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग]] पैराडिगम में, ऑब्जेक्ट वेरिएबल फलन और डेटा स्ट्रक्चर्स का संयोजन के रूप में होता है, विशेष रूप से पैराडिगम के वर्ग-आधारित विविधताओं में यह वर्ग के एक विशेष [[उदाहरण (कंप्यूटर विज्ञान)|उदाहरण कंप्यूटर विज्ञान]] को संदर्भित करता है।


[[डेटाबेस]] प्रबंधन के [[संबंधपरक मॉडल]] में, एक वस्तु [[तालिका (डेटाबेस)|तालिका]] या कॉलम डेटाबेस के रूप में होती है, डेटा और डेटाबेस इकाई के बीच एक संबंध हो सकता है जैसे किसी व्यक्ति की आयु को किसी विशिष्ट व्यक्ति से संबंधित होती है।<ref name=Oppel>{{cite book |first=Andy |last=Oppel |title=SQL Demystified |publisher=McGraw Hill |year=2005| page=7 |isbn=0-07-226224-9}}</ref>
[[डेटाबेस]] प्रबंधन के [[संबंधपरक मॉडल]] में, एक ऑब्जेक्ट [[तालिका (डेटाबेस)|तालिका]] या कॉलम डेटाबेस के रूप में होती है, डेटा और डेटाबेस इकाई के बीच एक संबंध हो सकता है जैसे किसी व्यक्ति की आयु को किसी विशिष्ट व्यक्ति से संबंधित होती है।<ref name=Oppel>{{cite book |first=Andy |last=Oppel |title=SQL Demystified |publisher=McGraw Hill |year=2005| page=7 |isbn=0-07-226224-9}}</ref>
== ऑब्जेक्ट-आधारित भाषाएँ ==
== ऑब्जेक्ट-आधारित भाषाएँ ==
{{main|Object-based languages}}
{{main|ऑब्जेक्ट-आधारित भाषाएँ}}
प्रोग्रामिंग भाषाओं में एक महत्वपूर्ण अंतर वस्तु-उन्मुख भाषा और वस्तु-आधारित भाषा के बीच का अंतर है। एक भाषा को सामान्यतः  वस्तु-आधारित माना जाता है यदि इसमें किसी वस्तु के लिए मूलभूत क्षमताएं सम्मलित  हैं: पहचान, गुण और गुण। एक भाषा को वस्तु-उन्मुख माना जाता है यदि यह वस्तु-आधारित है और इसमें [[बहुरूपता (कंप्यूटर विज्ञान)]], [[वंशानुक्रम (वस्तु-उन्मुख प्रोग्रामिंग)]], एनकैप्सुलेशन (कंप्यूटर प्रोग्रामिंग), और, संभवतः, वस्तु संरचना की क्षमता भी है। बहुरूपता एक फ़ंक्शन के नाम को कई व्यवहारों के साथ अधिभारित करने की क्षमता को संदर्भित करता है, जिसके आधार पर ऑब्जेक्ट (ओं) को पास किया जाता है। परंपरागत संदेश पासिंग केवल पहली वस्तु पर भेदभाव करता है और मानता है कि उस वस्तु को संदेश भेजना है। अनुसार , कुछ ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग लैंग्वेज जैसे [[जायके (प्रोग्रामिंग भाषा)]] और [[कॉमन लिस्प ऑब्जेक्ट सिस्टम]] (CLOS) फ़ंक्शन के पहले पैरामीटर से अधिक पर भेदभाव करने में सक्षम हैं।<ref>{{cite journal|last=Gabriel|first=Richard|author2=Linda G. DeMichie |title=The Common Lisp Object System: An Overview|journal=Lucid Inc. Technical Report|series=Lecture Notes in Computer Science|year=1987|volume=276|page=151|doi=10.1007/3-540-47891-4_15|bibcode=1987LNCS..276..151D|isbn=978-3-540-18353-2|url=http://www.dreamsongs.com/NewFiles/ECOOP.pdf}}</ref> वंशानुक्रम एक वस्तु वर्ग को उपवर्गित करने की क्षमता है, एक नया वर्ग बनाने के लिए जो एक सम्मलित  ा वर्ग का उपवर्ग है और अपने माता-पिता के सभी डेटा बाधाओं और व्यवहारों को विरासत में मिला है, लेकिन नए और / या उनमें से एक या अधिक को बदलता है।<ref>{{cite journal|last=Wegner|first=Peter|title=Dimensions of Object-Based Language Design|journal=OOPSLA'87 Conference Proceedings|date=December 1987|volume=22|issue=12|pages=168–182|editor1-first=Norman|editor1-last=Meyrowitz|doi=10.1145/38807.38823}}</ref><ref>{{cite journal|last=Barbey|first=S |author2=M. Kempe |author3=A. Strohmeier|title=Object-Oriented Programming with Ada 9X|journal=Draft Technical Report|year=1993|url=http://www.adahome.com/9X/OOP-Ada9X.html|access-date=15 December 2013|publisher=Swiss Federal Institute of Technology in Lausanne Software Engineering Laboratory|quote=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.}}</ref>


 
प्रोग्रामिंग भाषाओं में एक महत्वपूर्ण अंतर ऑब्जेक्ट ओरिएंटेड भाषा और ऑब्जेक्ट आधारित भाषा के बीच का अंतर होता है। एक भाषा को सामान्यतः  पर ऑब्जेक्ट आधारित माना जाता है यदि इसमें किसी ऑब्जेक्ट के पहचान गुणों और विशेषताओं के लिए मूलभूत क्षमताएं सम्मलित होती है। तो उस भाषा को ऑब्जेक्ट ओरिएंटेड  के रूप में माना जाता है यदि यह ऑब्जेक्ट आधारित है और इसमें [[बहुरूपता (कंप्यूटर विज्ञान)]], [[वंशानुक्रम (वस्तु-उन्मुख प्रोग्रामिंग)|इनहेरिटेंस (ऑब्जेक्ट ओरिएंटेड  प्रोग्रामिंग)]], एनकैप्सुलेशन (कंप्यूटर प्रोग्रामिंग) और संभवतः ऑब्जेक्ट संरचना की क्षमता के रूप में होती है। बहुरूपता एक फलन के नाम को कई व्यवहारों के साथ अधिभारित करने की क्षमता को संदर्भित करता है, जिसके आधार पर ऑब्जेक्ट को पास किया जाता है। परंपरागत संदेश पासिंग केवल पहली ऑब्जेक्ट पर विभेदन के रूप में कार्य करता है और मानता है कि उस ऑब्जेक्ट को संदेश भेजना है। चूँकि, कुछ ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग लैंग्वेज जैसे [[जायके (प्रोग्रामिंग भाषा)|फ्लेवोर्स प्रोग्रामिंग भाषा]]  और [[कॉमन लिस्प ऑब्जेक्ट सिस्टम|कॉमन लिस्प ऑब्जेक्ट प्रणाली]]  (सीएलओएस) फलन के पहले पैरामीटर से अधिक पर विभेदन करने में सक्षम होते है।<ref>{{cite journal|last=Gabriel|first=Richard|author2=Linda G. DeMichie |title=The Common Lisp Object System: An Overview|journal=Lucid Inc. Technical Report|series=Lecture Notes in Computer Science|year=1987|volume=276|page=151|doi=10.1007/3-540-47891-4_15|bibcode=1987LNCS..276..151D|isbn=978-3-540-18353-2|url=http://www.dreamsongs.com/NewFiles/ECOOP.pdf}}</ref> इनहेरिटेंस एक ऑब्जेक्ट वर्ग के उपवर्ग में  एक नया वर्ग बनाने की क्षमता होती है, जो एक सम्मलित वर्ग का उपवर्ग है और जो डेटा बाधाओं और व्यवहारों को इनहेरिटें में प्राप्त करता है, लेकिन उसमें एक या अधिक परिवर्तन भी करता है।<ref>{{cite journal|last=Wegner|first=Peter|title=Dimensions of Object-Based Language Design|journal=OOPSLA'87 Conference Proceedings|date=December 1987|volume=22|issue=12|pages=168–182|editor1-first=Norman|editor1-last=Meyrowitz|doi=10.1145/38807.38823}}</ref><ref>{{cite journal|last=Barbey|first=S |author2=M. Kempe |author3=A. Strohmeier|title=Object-Oriented Programming with Ada 9X|journal=Draft Technical Report|year=1993|url=http://www.adahome.com/9X/OOP-Ada9X.html|access-date=15 December 2013|publisher=Swiss Federal Institute of Technology in Lausanne Software Engineering Laboratory|quote=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.}}</ref>
== वस्तु-उन्मुख प्रोग्रामिंग ==
== ऑब्जेक्ट ओरिएंटेड  प्रोग्रामिंग ==
{{main|Object-oriented programming}}
{{main|Object-oriented programming}}
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग मॉड्यूलर पुन: प्रयोज्य सॉफ़्टवेयर सिस्टम को डिज़ाइन करने का एक विधि  है। ऑब्जेक्ट-ओरिएंटेड दृष्टिकोण अच्छी डिज़ाइन प्रथाओं का एक विकास है जो कंप्यूटर प्रोग्रामिंग की शुरुआत में वापस जाता है। ऑब्जेक्ट-ओरिएंटेशन केवल पुरानी तकनीकों जैसे [[संरचित प्रोग्रामिंग]] और अमूर्त डेटा प्रकारों का तार्किक विस्तार है। एक वस्तु एक अमूर्त डेटा प्रकार है जिसमें बहुरूपता (कंप्यूटर विज्ञान) और वंशानुक्रम (वस्तु-उन्मुख प्रोग्रामिंग) सम्मलित  हैं।
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग मॉड्यूलर पुन: प्रयोज्य सॉफ़्टवेयर प्रणाली  को डिज़ाइन करने का एक विधि  है। ऑब्जेक्ट-ओरिएंटेड दृष्टिकोण अच्छी डिज़ाइन प्रथाओं का एक विकास है जो कंप्यूटर प्रोग्रामिंग की शुरुआत में वापस जाता है। ऑब्जेक्ट-ओरिएंटेशन केवल पुरानी तकनीकों जैसे [[संरचित प्रोग्रामिंग]] और अमूर्त डेटा प्रकारों का तार्किक विस्तार है। एक ऑब्जेक्ट एक अमूर्त डेटा प्रकार है जिसमें बहुरूपता (कंप्यूटर विज्ञान) और इनहेरिटेंस (ऑब्जेक्ट ओरिएंटेड  प्रोग्रामिंग) सम्मलित  हैं।


प्रोग्राम को कोड और डेटा के रूप में स्ट्रक्चर करने के अतिरिक्त , एक ऑब्जेक्ट-ओरिएंटेड सिस्टम ऑब्जेक्ट की अवधारणा का उपयोग करके दोनों को एकीकृत करता है। एक वस्तु में स्थिति (डेटा) और व्यवहार (कोड) होता है। वस्तुएं वास्तविक दुनिया में पाई जाने वाली चीजों के अनुरूप हो सकती हैं। उदाहरण के लिए, एक ग्राफिक्स प्रोग्राम में सर्कल, स्क्वायर, मेन्यू जैसे ऑब्जेक्ट होंगे। एक ऑनलाइन शॉपिंग सिस्टम में शॉपिंग कार्ट, ग्राहक, उत्पाद जैसी वस्तुएं होंगी। खरीदारी प्रणाली आदेश देने, भुगतान करने और छूट प्रदान करने जैसे व्यवहारों का समर्थन करेगी। वस्तुओं को वर्ग पदानुक्रम के रूप में डिज़ाइन किया गया है। तो उदाहरण के लिए शॉपिंग सिस्टम के साथ इलेक्ट्रॉनिक्स उत्पाद, रसोई उत्पाद और पुस्तक जैसे उच्च स्तरीय वर्ग हो सकते हैं। इलेक्ट्रॉनिक उत्पादों के अनुसार  उदाहरण के लिए और परिशोधन हो सकते हैं: सीडी प्लेयर, डीवीडी प्लेयर, आदि। ये वर्ग और उपवर्ग गणितीय तर्क में [[सेट (गणित)]] और [[सबसेट]] के अनुरूप हैं।<ref>{{cite book|last=Jacobsen|first=Ivar|title=Object Oriented Software Engineering|year=1992|publisher=Addison-Wesley ACM Press|isbn=0-201-54435-0|author2=Magnus Christerson|author3=Patrik Jonsson|author4=Gunnar Overgaard|url=https://archive.org/details/objectorientedso00jaco}}</ref><ref>{{cite web|title=What is an Object?|url=http://docs.oracle.com/javase/tutorial/java/concepts/object.html|work=oracle.com|publisher=Oracle Corporation|access-date=13 December 2013}}</ref>
प्रोग्राम को कोड और डेटा के रूप में स्ट्रक्चर करने के अतिरिक्त , एक ऑब्जेक्ट-ओरिएंटेड प्रणाली  ऑब्जेक्ट की अवधारणा का उपयोग करके दोनों को एकीकृत करता है। एक ऑब्जेक्ट में स्थिति (डेटा) और व्यवहार (कोड) होता है। वस्तुएं वास्तविक दुनिया में पाई जाने वाली चीजों के अनुरूप हो सकती हैं। उदाहरण के लिए, एक ग्राफिक्स प्रोग्राम में सर्कल, स्क्वायर, मेन्यू जैसे ऑब्जेक्ट होंगे। एक ऑनलाइन शॉपिंग प्रणाली  में शॉपिंग कार्ट, ग्राहक, उत्पाद जैसी वस्तुएं होंगी। खरीदारी प्रणाली आदेश देने, भुगतान करने और छूट प्रदान करने जैसे व्यवहारों का समर्थन करेगी। वस्तुओं को वर्ग पदानुक्रम के रूप में डिज़ाइन किया गया है। तो उदाहरण के लिए शॉपिंग प्रणाली  के साथ इलेक्ट्रॉनिक्स उत्पाद, रसोई उत्पाद और पुस्तक जैसे उच्च स्तरीय वर्ग हो सकते हैं। इलेक्ट्रॉनिक उत्पादों के अनुसार  उदाहरण के लिए और परिशोधन हो सकते हैं: सीडी प्लेयर, डीवीडी प्लेयर, आदि। ये वर्ग और उपवर्ग गणितीय तर्क में [[सेट (गणित)]] और [[सबसेट]] के अनुरूप हैं।<ref>{{cite book|last=Jacobsen|first=Ivar|title=Object Oriented Software Engineering|year=1992|publisher=Addison-Wesley ACM Press|isbn=0-201-54435-0|author2=Magnus Christerson|author3=Patrik Jonsson|author4=Gunnar Overgaard|url=https://archive.org/details/objectorientedso00jaco}}</ref><ref>{{cite web|title=What is an Object?|url=http://docs.oracle.com/javase/tutorial/java/concepts/object.html|work=oracle.com|publisher=Oracle Corporation|access-date=13 December 2013}}</ref>




== विशिष्ट वस्तुएं ==
== विशिष्ट वस्तुएं ==
वस्तुओं के लिए एक महत्वपूर्ण अवधारणा [[सॉफ्टवेयर डिजाइन पैटर्न]] है। एक सामान्य समस्या का समाधान करने के लिए एक डिज़ाइन पैटर्न एक पुन: प्रयोज्य टेम्पलेट प्रदान करता है। निम्नलिखित वस्तु विवरण वस्तुओं के लिए कुछ सबसे सामान्य डिजाइन पैटर्न के उदाहरण हैं।<ref name="R.C.Martin">{{cite web |url=http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf |title=Design Principles and Design Patterns |last=Martin |first=Robert C. |author-link=Robert Cecil Martin |access-date=28 April 2017 |url-status=dead |archive-url=https://web.archive.org/web/20150906155800/http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf |archive-date=September 6, 2015 }}</ref>
वस्तुओं के लिए एक महत्वपूर्ण अवधारणा [[सॉफ्टवेयर डिजाइन पैटर्न]] है। एक सामान्य समस्या का समाधान करने के लिए एक डिज़ाइन पैटर्न एक पुन: प्रयोज्य टेम्पलेट प्रदान करता है। निम्नलिखित ऑब्जेक्ट विवरण वस्तुओं के लिए कुछ सबसे सामान्य डिजाइन पैटर्न के उदाहरण हैं।<ref name="R.C.Martin">{{cite web |url=http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf |title=Design Principles and Design Patterns |last=Martin |first=Robert C. |author-link=Robert Cecil Martin |access-date=28 April 2017 |url-status=dead |archive-url=https://web.archive.org/web/20150906155800/http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf |archive-date=September 6, 2015 }}</ref>
*[[फंक्शन ऑब्जेक्ट]]: एक एकल विधि के साथ एक वस्तु (सी ++ में, यह विधि फ़ंक्शन ऑपरेटर, ऑपरेटर() होगी) जो फ़ंक्शन की प्रकार  कार्य करती है (जैसे सी/सी ++ फ़ंक्शन के लिए सूचक)।
*[[फंक्शन ऑब्जेक्ट]]: एक एकल विधि के साथ एक ऑब्जेक्ट (सी ++ में, यह विधि फलन ऑपरेटर, ऑपरेटर() होगी) जो फलन की प्रकार  कार्य करती है (जैसे सी/सी ++ फलन के लिए सूचक)।
* [[अपरिवर्तनीय वस्तु]]: निर्माण के समय एक निश्चित स्थिति के साथ एक वस्तु स्थापित की जाती है और जो बाद में नहीं बदलती है।
* [[अपरिवर्तनीय वस्तु]]: निर्माण के समय एक निश्चित स्थिति के साथ एक ऑब्जेक्ट स्थापित की जाती है और जो बाद में नहीं बदलती है।
* [[प्रथम श्रेणी की वस्तु]]: एक वस्तु जिसका उपयोग बिना प्रतिबंध के किया जा सकता है।
* [[प्रथम श्रेणी की वस्तु]]: एक ऑब्जेक्ट जिसका उपयोग बिना प्रतिबंध के किया जा सकता है।
* [[कंटेनर (डेटा संरचना)]]: एक वस्तु जिसमें अन्य वस्तुएँ हो सकती हैं।
* [[कंटेनर (डेटा संरचना)]]: एक ऑब्जेक्ट जिसमें अन्य वस्तुएँ हो सकती हैं।
*[[फैक्टरी वस्तु]]: एक वस्तु जिसका उद्देश्य अन्य वस्तुओं का निर्माण करना है।
*[[फैक्टरी वस्तु]]: एक ऑब्जेक्ट जिसका उद्देश्य अन्य वस्तुओं का निर्माण करना है।
*Metaobject: एक वस्तु जिससे अन्य वस्तुएँ बनाई जा सकती हैं (एक वर्ग (कंप्यूटर विज्ञान) के साथ तुलना करें, जो आवश्यक रूप से एक वस्तु नहीं है)।
*Metaobject: एक ऑब्जेक्ट जिससे अन्य वस्तुएँ बनाई जा सकती हैं (एक वर्ग (कंप्यूटर विज्ञान) के साथ तुलना करें, जो आवश्यक रूप से एक ऑब्जेक्ट नहीं है)।
*[[प्रोटोटाइप पैटर्न]]: एक विशेष [[मेटाऑब्जेक्ट]] जिससे कॉपी करके अन्य ऑब्जेक्ट बनाए जा सकते हैं
*[[प्रोटोटाइप पैटर्न]]: एक विशेष [[मेटाऑब्जेक्ट]] जिससे कॉपी करके अन्य ऑब्जेक्ट बनाए जा सकते हैं
*[[ईश्वर वस्तु]]: एक ऐसी वस्तु जो बहुत कुछ जानती है या करती है (यह एक एंटी-पैटर्न का उदाहरण है)।
*[[ईश्वर वस्तु]]: एक ऐसी ऑब्जेक्ट जो बहुत कुछ जानती है या करती है (यह एक एंटी-पैटर्न का उदाहरण है)।
*[[सिंगलटन पैटर्न]]: एक वस्तु जो कार्यक्रम के जीवनकाल के समय  अपनी कक्षा का एकमात्र उदाहरण है।
*[[सिंगलटन पैटर्न]]: एक ऑब्जेक्ट जो कार्यक्रम के जीवनकाल के समय  अपनी कक्षा का एकमात्र उदाहरण है।
* [[फ़िल्टर वस्तु]]: एक ऑब्जेक्ट जो इनपुट के रूप में डेटा की एक धारा प्राप्त करता है और इसे ऑब्जेक्ट के आउटपुट में बदल देता है। अधिकांशतः  इनपुट और आउटपुट धाराएँ वर्णों की धाराएँ होती हैं, लेकिन ये मनमानी वस्तुओं की धाराएँ भी हो सकती हैं। ये सामान्यतः  रैपर में उपयोग किए जाते हैं क्योंकि वे डेवलपर पक्ष में आवश्यक अमूर्तता के साथ सम्मलित  ा कार्यान्वयन को छुपाते हैं।
* [[फ़िल्टर वस्तु]]: एक ऑब्जेक्ट जो इनपुट के रूप में डेटा की एक धारा प्राप्त करता है और इसे ऑब्जेक्ट के आउटपुट में बदल देता है। अधिकांशतः  इनपुट और आउटपुट धाराएँ वर्णों की धाराएँ होती हैं, लेकिन ये मनमानी वस्तुओं की धाराएँ भी हो सकती हैं। ये सामान्यतः  रैपर में उपयोग किए जाते हैं क्योंकि वे डेवलपर पक्ष में आवश्यक अमूर्तता के साथ सम्मलित  ा कार्यान्वयन को छुपाते हैं।


== वितरित वस्तुएं ==
== वितरित वस्तुएं ==
{{main|Distributed object}}
{{main|Distributed object}}
वस्तु-उन्मुख दृष्टिकोण केवल एक प्रोग्रामिंग मॉडल नहीं है। यह वितरित सिस्टम के लिए [[इंटरफ़ेस विवरण भाषा]] के रूप में समान रूप से अच्छी प्रकार  से उपयोग किया जा सकता है। एक वितरित कंप्यूटिंग मॉडल में ऑब्जेक्ट प्रोग्रामिंग ऑब्जेक्ट्स की तुलना में बड़े दानेदार, लंबे समय तक चलने वाले और अधिक सेवा-उन्मुख होते हैं।
ऑब्जेक्ट ओरिएंटेड  दृष्टिकोण केवल एक प्रोग्रामिंग मॉडल नहीं है। यह वितरित प्रणाली  के लिए [[इंटरफ़ेस विवरण भाषा]] के रूप में समान रूप से अच्छी प्रकार  से उपयोग किया जा सकता है। एक वितरित कंप्यूटिंग मॉडल में ऑब्जेक्ट प्रोग्रामिंग ऑब्जेक्ट्स की तुलना में बड़े दानेदार, लंबे समय तक चलने वाले और अधिक सेवा-उन्मुख होते हैं।


वितरित वस्तुओं को पैकेज करने का एक मानक विधियो  एक इंटरफ़ेस डेफिनिशन लैंग्वेज (IDL) के माध्यम से है। एक IDL क्लाइंट को वितरित सर्वर ऑब्जेक्ट के सभी विवरणों को ढाल देता है। विवरण जैसे कि कौन सा कंप्यूटर ऑब्जेक्ट पर रहता है, यह किस [[प्रोग्रामिंग भाषा]] का उपयोग करता है, कौन सा [[ऑपरेटिंग सिस्टम]], और अन्य प्लेटफ़ॉर्म-विशिष्ट मुद्दे। IDL भी सामान्यतः  एक वितरित वातावरण का भाग  होता है जो एक समान विधि से सभी वस्तुओं को लेनदेन और दृढ़ता जैसी सेवाएं प्रदान करता है। वितरित वस्तुओं के लिए सबसे लोकप्रिय मानकों में से दो [[लक्ष्य प्रबंधन समूह]] के कॉरबा मानक और [[माइक्रोसॉफ्ट]] के डीसीओएम हैं।<ref>{{cite book|last=Orfali|first=Robert|title=The Essential Client/Server Survival Guide|year=1996|publisher=Wiley Computer Publishing|location=New York|isbn=0-471-15325-7|pages=[https://archive.org/details/essentialclients00orfa/page/399 399–403]|url=https://archive.org/details/essentialclients00orfa/page/399}}</ref>
वितरित वस्तुओं को पैकेज करने का एक मानक विधियो  एक इंटरफ़ेस डेफिनिशन लैंग्वेज (IDL) के माध्यम से है। एक IDL क्लाइंट को वितरित सर्वर ऑब्जेक्ट के सभी विवरणों को ढाल देता है। विवरण जैसे कि कौन सा कंप्यूटर ऑब्जेक्ट पर रहता है, यह किस [[प्रोग्रामिंग भाषा]] का उपयोग करता है, कौन सा [[ऑपरेटिंग सिस्टम|ऑपरेटिंग प्रणाली]] , और अन्य प्लेटफ़ॉर्म-विशिष्ट मुद्दे। IDL भी सामान्यतः  एक वितरित वातावरण का भाग  होता है जो एक समान विधि से सभी वस्तुओं को लेनदेन और दृढ़ता जैसी सेवाएं प्रदान करता है। वितरित वस्तुओं के लिए सबसे लोकप्रिय मानकों में से दो [[लक्ष्य प्रबंधन समूह]] के कॉरबा मानक और [[माइक्रोसॉफ्ट]] के डीसीओएम हैं।<ref>{{cite book|last=Orfali|first=Robert|title=The Essential Client/Server Survival Guide|year=1996|publisher=Wiley Computer Publishing|location=New York|isbn=0-471-15325-7|pages=[https://archive.org/details/essentialclients00orfa/page/399 399–403]|url=https://archive.org/details/essentialclients00orfa/page/399}}</ref>
वितरित वस्तुओं के अतिरिक्त , वितरित कंप्यूटिंग को सक्षम करने के लिए किसी वस्तु की मूल अवधारणा के लिए कई अन्य विस्तार प्रस्तावित किए गए हैं:
वितरित वस्तुओं के अतिरिक्त , वितरित कंप्यूटिंग को सक्षम करने के लिए किसी ऑब्जेक्ट की मूल अवधारणा के लिए कई अन्य विस्तार प्रस्तावित किए गए हैं:
*प्रोटोकॉल ऑब्जेक्ट एक [[प्रोटोकॉल स्टैक]] के घटक होते हैं जो ऑब्जेक्ट-ओरिएंटेड इंटरफ़ेस के भीतर नेटवर्क संचार को घेरते हैं।
*प्रोटोकॉल ऑब्जेक्ट एक [[प्रोटोकॉल स्टैक]] के घटक होते हैं जो ऑब्जेक्ट-ओरिएंटेड इंटरफ़ेस के भीतर नेटवर्क संचार को घेरते हैं।
*[[प्रतिकृति (कंप्यूटर विज्ञान)]] वितरित वस्तुओं के समूह हैं (जिन्हें प्रतिकृति कहा जाता है) जो अपने आंतरिक राज्यों के बीच उच्च स्थिरता प्राप्त करने के लिए एक वितरित बहु-पक्षीय प्रोटोकॉल चलाते हैं, और जो समन्वित विधि से अनुरोधों का उत्तर  देते हैं। उदाहरणों में दोष-सहिष्णु CORBA ऑब्जेक्ट सम्मलित  हैं।
*[[प्रतिकृति (कंप्यूटर विज्ञान)]] वितरित वस्तुओं के समूह हैं (जिन्हें प्रतिकृति कहा जाता है) जो अपने आंतरिक राज्यों के बीच उच्च स्थिरता प्राप्त करने के लिए एक वितरित बहु-पक्षीय प्रोटोकॉल चलाते हैं, और जो समन्वित विधि से अनुरोधों का उत्तर  देते हैं। उदाहरणों में दोष-सहिष्णु CORBA ऑब्जेक्ट सम्मलित  हैं।
* [[लाइव वितरित वस्तु]]एँ (या केवल लाइव वितरित वस्तु)<ref>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.</ref> प्रतिकृतियों के समूहों के लिए प्रतिकृति वस्तु अवधारणा को सामान्यीकृत करें जो किसी भी वितरित प्रोटोकॉल का आंतरिक रूप से उपयोग कर सकते हैं, जिसके परिणामस्वरूप उनके स्थानीय राज्यों के बीच केवल एक कमजोर स्थिरता हो सकती है।
* [[लाइव वितरित वस्तु]]एँ (या केवल लाइव वितरित वस्तु)<ref>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.</ref> प्रतिकृतियों के समूहों के लिए प्रतिकृति ऑब्जेक्ट अवधारणा को सामान्यीकृत करें जो किसी भी वितरित प्रोटोकॉल का आंतरिक रूप से उपयोग कर सकते हैं, जिसके परिणामस्वरूप उनके स्थानीय राज्यों के बीच केवल एक कमजोर स्थिरता हो सकती है।


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


== [[सेमांटिक वेब]] ==
== [[सेमांटिक वेब]] ==
सिमेंटिक वेब अनिवार्य रूप से एक वितरित-वस्तु ढांचा है। सिमेंटिक वेब में दो प्रमुख प्रौद्योगिकियां [[वेब ओन्टोलॉजी भाषा]] (OWL) और [[संसाधन विवरण ढांचा]] (RDF) हैं। RDF मौलिक  वस्तुओं को परिभाषित करने की क्षमता प्रदान करता है - नाम, गुण, विशेषताएँ, संबंध - जो इंटरनेट के माध्यम से सुलभ हैं। OWL सेट थ्योरी के आधार पर एक समृद्ध ऑब्जेक्ट मॉडल जोड़ता है, जो अतिरिक्त मॉडलिंग क्षमताएं प्रदान करता है जैसे कि [[एकाधिक वंशानुक्रम]]।
सिमेंटिक वेब अनिवार्य रूप से एक वितरित-ऑब्जेक्ट ढांचा है। सिमेंटिक वेब में दो प्रमुख प्रौद्योगिकियां [[वेब ओन्टोलॉजी भाषा]] (OWL) और [[संसाधन विवरण ढांचा]] (RDF) हैं। RDF मौलिक  वस्तुओं को परिभाषित करने की क्षमता प्रदान करता है - नाम, गुण, विशेषताएँ, संबंध - जो इंटरनेट के माध्यम से सुलभ हैं। OWL सेट थ्योरी के आधार पर एक समृद्ध ऑब्जेक्ट मॉडल जोड़ता है, जो अतिरिक्त मॉडलिंग क्षमताएं प्रदान करता है जैसे कि [[एकाधिक वंशानुक्रम]]।


OWL ऑब्जेक्ट्स एक इंटरफ़ेस डेफिनिशन लैंग्वेज के माध्यम से एक्सेस किए गए मानक बड़े दाने वाले वितरित ऑब्जेक्ट्स की प्रकार  नहीं हैं। ऐसा दृष्टिकोण इंटरनेट के लिए उपयुक्त नहीं होगा क्योंकि इंटरनेट लगातार विकसित हो रहा है और इंटरफेस के एक सेट पर मानकीकरण हासिल करना कठिनाई  है। ओडब्लूएल ऑब्जेक्ट्स प्रोग्रामिंग भाषाओं जैसे [[जावा (प्रोग्रामिंग भाषा)]] और [[सी ++]] में एप्लिकेशन डोमेन मॉडल को परिभाषित करने के लिए उपयोग की जाने वाली वस्तुओं के समान होते हैं।
OWL ऑब्जेक्ट्स एक इंटरफ़ेस डेफिनिशन लैंग्वेज के माध्यम से एक्सेस किए गए मानक बड़े दाने वाले वितरित ऑब्जेक्ट्स की प्रकार  नहीं हैं। ऐसा दृष्टिकोण इंटरनेट के लिए उपयुक्त नहीं होगा क्योंकि इंटरनेट लगातार विकसित हो रहा है और इंटरफेस के एक सेट पर मानकीकरण हासिल करना कठिनाई  है। ओडब्लूएल ऑब्जेक्ट्स प्रोग्रामिंग भाषाओं जैसे [[जावा (प्रोग्रामिंग भाषा)]] और [[सी ++]] में एप्लिकेशन डोमेन मॉडल को परिभाषित करने के लिए उपयोग की जाने वाली वस्तुओं के समान होते हैं।


अनुसार , OWL ऑब्जेक्ट्स और पारंपरिक ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग ऑब्जेक्ट्स के बीच महत्वपूर्ण अंतर हैं। पारंपरिक वस्तुओं को सामान्यतः  एकल वंशानुक्रम के साथ स्थिर पदानुक्रम में संकलित किया जाता है, लेकिन OWL वस्तुएँ गतिशील होती हैं। एक OWL ऑब्जेक्ट रन टाइम पर अपनी संरचना बदल सकता है और नए या भिन्न -भिन्न  वर्गों का उदाहरण बन सकता है।
अनुसार , OWL ऑब्जेक्ट्स और पारंपरिक ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग ऑब्जेक्ट्स के बीच महत्वपूर्ण अंतर हैं। पारंपरिक वस्तुओं को सामान्यतः  एकल इनहेरिटेंस के साथ स्थिर पदानुक्रम में संकलित किया जाता है, लेकिन OWL वस्तुएँ गतिशील होती हैं। एक OWL ऑब्जेक्ट रन टाइम पर अपनी संरचना बदल सकता है और नए या भिन्न -भिन्न  वर्गों का उदाहरण बन सकता है।


एक और महत्वपूर्ण अंतर यह है कि जिस प्रकार  से मॉडल उस जानकारी का व्यवहार करता है जो वर्तमान में सिस्टम में नहीं है। प्रोग्रामिंग ऑब्जेक्ट्स और अधिकांश डेटाबेस सिस्टम क्लोज्ड-वर्ल्ड धारणा का उपयोग करते हैं। यदि कोई तथ्य सिस्टम को ज्ञात नहीं है तो उस तथ्य को झूठा मान लिया जाता है। सिमेंटिक वेब ऑब्जेक्ट ओपन-वर्ल्ड धारणा का उपयोग करते हैं, एक कथन को केवल तभी गलत माना जाता है जब वास्तविक प्रासंगिक जानकारी होती है कि यह गलत है, अन्यथा इसे अज्ञात माना जाता है, न तो सत्य और न ही गलत।
एक और महत्वपूर्ण अंतर यह है कि जिस प्रकार  से मॉडल उस जानकारी का व्यवहार करता है जो वर्तमान में प्रणाली  में नहीं है। प्रोग्रामिंग ऑब्जेक्ट्स और अधिकांश डेटाबेस प्रणाली  क्लोज्ड-वर्ल्ड धारणा का उपयोग करते हैं। यदि कोई तथ्य प्रणाली  को ज्ञात नहीं है तो उस तथ्य को झूठा मान लिया जाता है। सिमेंटिक वेब ऑब्जेक्ट ओपन-वर्ल्ड धारणा का उपयोग करते हैं, एक कथन को केवल तभी गलत माना जाता है जब वास्तविक प्रासंगिक जानकारी होती है कि यह गलत है, अन्यथा इसे अज्ञात माना जाता है, न तो सत्य और न ही गलत।


OWL ऑब्जेक्ट वास्तव में [[KL-ONE]] और लूम जैसी आर्टिफिशियल इंटेलिजेंस [[फ्रेम भाषा]] में ऑब्जेक्ट्स की प्रकार  हैं।
OWL ऑब्जेक्ट वास्तव में [[KL-ONE]] और लूम जैसी आर्टिफिशियल इंटेलिजेंस [[फ्रेम भाषा]] में ऑब्जेक्ट्स की प्रकार  हैं।

Revision as of 19:30, 18 February 2023

कंप्यूटर विज्ञान में, ऑब्जेक्ट एक चर डेटा संरचना, फलन या एक विधि कंप्यूटर प्रोग्रामिंग के रूप में होती है। स्मृति के क्षेत्र में वे मूल्य के रूप में होते हैं और पहचानकर्ता कंप्यूटर प्रोग्रामिंग द्वारा संदर्भित किया जाता है।

ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग पैराडिगम में, ऑब्जेक्ट वेरिएबल फलन और डेटा स्ट्रक्चर्स का संयोजन के रूप में होता है, विशेष रूप से पैराडिगम के वर्ग-आधारित विविधताओं में यह वर्ग के एक विशेष उदाहरण कंप्यूटर विज्ञान को संदर्भित करता है।

डेटाबेस प्रबंधन के संबंधपरक मॉडल में, एक ऑब्जेक्ट तालिका या कॉलम डेटाबेस के रूप में होती है, डेटा और डेटाबेस इकाई के बीच एक संबंध हो सकता है जैसे किसी व्यक्ति की आयु को किसी विशिष्ट व्यक्ति से संबंधित होती है।[1]

ऑब्जेक्ट-आधारित भाषाएँ

प्रोग्रामिंग भाषाओं में एक महत्वपूर्ण अंतर ऑब्जेक्ट ओरिएंटेड भाषा और ऑब्जेक्ट आधारित भाषा के बीच का अंतर होता है। एक भाषा को सामान्यतः पर ऑब्जेक्ट आधारित माना जाता है यदि इसमें किसी ऑब्जेक्ट के पहचान गुणों और विशेषताओं के लिए मूलभूत क्षमताएं सम्मलित होती है। तो उस भाषा को ऑब्जेक्ट ओरिएंटेड के रूप में माना जाता है यदि यह ऑब्जेक्ट आधारित है और इसमें बहुरूपता (कंप्यूटर विज्ञान), इनहेरिटेंस (ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग), एनकैप्सुलेशन (कंप्यूटर प्रोग्रामिंग) और संभवतः ऑब्जेक्ट संरचना की क्षमता के रूप में होती है। बहुरूपता एक फलन के नाम को कई व्यवहारों के साथ अधिभारित करने की क्षमता को संदर्भित करता है, जिसके आधार पर ऑब्जेक्ट को पास किया जाता है। परंपरागत संदेश पासिंग केवल पहली ऑब्जेक्ट पर विभेदन के रूप में कार्य करता है और मानता है कि उस ऑब्जेक्ट को संदेश भेजना है। चूँकि, कुछ ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग लैंग्वेज जैसे फ्लेवोर्स प्रोग्रामिंग भाषा और कॉमन लिस्प ऑब्जेक्ट प्रणाली (सीएलओएस) फलन के पहले पैरामीटर से अधिक पर विभेदन करने में सक्षम होते है।[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]


यह भी देखें


संदर्भ

  1. Oppel, Andy (2005). SQL Demystified. McGraw Hill. p. 7. ISBN 0-07-226224-9.
  2. 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.
  3. 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.
  4. 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.
  5. Jacobsen, Ivar; Magnus Christerson; Patrik Jonsson; Gunnar Overgaard (1992). Object Oriented Software Engineering. Addison-Wesley ACM Press. ISBN 0-201-54435-0.
  6. "What is an Object?". oracle.com. Oracle Corporation. Retrieved 13 December 2013.
  7. Martin, Robert C. "Design Principles and Design Patterns" (PDF). Archived from the original (PDF) on September 6, 2015. Retrieved 28 April 2017.
  8. Orfali, Robert (1996). The Essential Client/Server Survival Guide. New York: Wiley Computer Publishing. pp. 399–403. ISBN 0-471-15325-7.
  9. 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.
  10. 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.
  11. 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.
  12. Table excerpted from tables in: http://www.w3.org/2001/sw/BestPractices/SE/ODSD/


बाहरी संबंध