ऑब्जेक्ट कॉन्स्ट्रेंट लैंग्वेज: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(6 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Short description|Declarative language}}'''ऑब्जेक्ट कॉन्स्ट्रेंट लैंग्वेज''' (ओसीएल) एक [[घोषणात्मक भाषा]] है जो [[आईबीएम]] में विकसित [[ एकीकृत मॉडलिंग भाषा |एकीकृत मॉडलिंग भाषा]] (यूएमएल) मॉडल पर प्रयुक्त होने वाले नियमों का वर्णन करती है और अब यूएमएल मानक का हिस्सा है। प्रारंभ में ओसीएल यूएमएल के लिए केवल एक औपचारिक विनिर्देश भाषा विस्तार था।<ref>Object Management Group (OMG); ''Object Constraint Language Specification'', Chapter 7 of ''OMG Unified Modeling Language Specification'', Version 1.3, March 2000 (first edition)</ref> ओसीएल का उपयोग अब यूएमएल सहित किसी भी [[मेटा-ऑब्जेक्ट सुविधा]] (एमओएफ) [[ लक्ष्य प्रबंधन समूह |लक्ष्य प्रबंधन समूह]] (ओएमजी) [[मेटामॉडलिंग]] या मेटा-मॉडल के साथ किया जा सकता है।<ref>Object Management Group (OMG); ''Object Constraint Language OMG Available Specification Version 2.0'', May 2006</ref> ऑब्जेक्ट बाधा भाषा एक स्पष्ट पाठ भाषा है जो किसी भी एमओएफ मॉडल या मेटा-मॉडल पर बाधा और ऑब्जेक्ट क्वेरी अभिव्यक्ति प्रदान करती है जिसे अन्यथा आरेखीय नोटेशन द्वारा व्यक्त नहीं किया जा सकता है। ओसीएल, मॉडलों को बदलने के लिए नई ओएमजी मानक अनुशंसा, क्वेरीज़/व्यू/ट्रांसफ़ॉर्मेशन ([[ QVT | क्यूवीटी]]) विनिर्देश का एक प्रमुख घटक है।
{{Short description|Declarative language}}'''ऑब्जेक्ट कॉन्स्ट्रेंट लैंग्वेज''' (ओसीएल) एक डिक्लेरेशन लैंग्वेज है जो [[आईबीएम]] में विकसित यूनिफाइड मॉडलिंग लैंग्वेज (यूएमएल) मॉडल पर प्रयुक्त होने वाले नियमों का वर्णन करती है और अब यूएमएल मानक का भाग है। प्रारंभ में ओसीएल यूएमएल के लिए केवल एक औपचारिक विनिर्देश लैंग्वेज विस्तार था।<ref>Object Management Group (OMG); ''Object Constraint Language Specification'', Chapter 7 of ''OMG Unified Modeling Language Specification'', Version 1.3, March 2000 (first edition)</ref> ओसीएल का उपयोग अब यूएमएल सहित किसी भी [[मेटा-ऑब्जेक्ट सुविधा]] (एमओएफ) लक्ष्य प्रबंधन समूह (ओएमजी) [[मेटामॉडलिंग]] या मेटा-मॉडल के साथ किया जा सकता है।<ref>Object Management Group (OMG); ''Object Constraint Language OMG Available Specification Version 2.0'', May 2006</ref> ऑब्जेक्ट बाधा लैंग्वेज एक स्पष्ट पाठ लैंग्वेज है जो किसी भी एमओएफ मॉडल या मेटा-मॉडल पर बाधा और ऑब्जेक्ट क्वेरी अभिव्यक्ति प्रदान करती है जिसे अन्यथा आरेखीय नोटेशन द्वारा व्यक्त नहीं किया जा सकता है। ओसीएल, मॉडलों को बदलने के लिए नई ओएमजी मानक अनुशंसा, क्वेरीज़/व्यू/ट्रांसफ़ॉर्मेशन ([[ QVT |क्यूवीटी]]) विनिर्देश का एक प्रमुख घटक है।


== विवरण ==
== विवरण ==
ओसीएल सिंट्रॉपी (सॉफ्टवेयर) का वंशज है, जो दूसरी पीढ़ी की वस्तु-उन्मुख विश्लेषण और डिजाइन पद्धति है। ओसीएल1.4 परिभाषा एक बाधा भाषा निर्दिष्ट करती है। ओसीएल 2.0 में, सामान्य ऑब्जेक्ट क्वेरी भाषा परिभाषाओं को सम्मिलित करने के लिए परिभाषा का विस्तार किया गया है।
ओसीएल सिंट्रॉपी (सॉफ्टवेयर) का वंशज है, जो दूसरी पीढ़ी की वस्तु-उन्मुख विश्लेषण और डिजाइन पद्धति है। ओसीएल1.4 परिलैंग्वेज एक बाधा लैंग्वेज निर्दिष्ट करती है। ओसीएल 2.0 में, सामान्य ऑब्जेक्ट क्वेरी लैंग्वेज परिलैंग्वेजओं को सम्मिलित करने के लिए परिलैंग्वेज का विस्तार किया गया है।


ओसीएल स्टेटमेंट चार भागों में बनाए गए हैं:
ओसीएल स्टेटमेंट चार भागों में बनाए गए हैं:
Line 14: Line 14:


=== ओसीएल और यूएमएल ===
=== ओसीएल और यूएमएल ===
ओसीएल एकीकृत मॉडलिंग भाषा को उन अभिव्यक्तियों को प्रदान करके पूरक करता है जिनमें न तो प्राकृतिक भाषा की अस्पष्टता है और न ही जटिल गणित का उपयोग करने की अंतर्निहित कठिनाई है। ओसीएल ग्राफ़-आधारित मॉडलों के लिए एक नेविगेशन भाषा भी है।
ओसीएल यूनिफाइड मॉडलिंग लैंग्वेज को उन अभिव्यक्तियों को प्रदान करके पूरक करता है जिनमें न तो प्राकृतिक लैंग्वेज की अस्पष्टता है और न ही जटिल गणित का उपयोग करने की अंतर्निहित कठिनाई है। ओसीएल ग्राफ़-आधारित मॉडलों के लिए एक नेविगेशन लैंग्वेज भी है।


=== ओसीएल और एमओएफ ===
=== ओसीएल और एमओएफ ===
Line 20: Line 20:


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


== विकल्प ==
== विकल्प ==
नियम-आधारित सत्यापन भाषा होने के कारण, [[स्कीमेट्रोन]] को ओसीएल का एक विकल्प माना जा सकता है। हालाँकि स्कीमट्रॉन एक्स्टेंसिबल मार्कअप लैंग्वेज एक्सएमएल ट्री|(एक्सएमएल) ट्री के लिए काम करता है जबकि ओसीएल मेटा-ऑब्जेक्ट सुविधा-आधारित मॉडल और मेटा-मॉडल (अथार्त [[एक्सएमएल मेटाडेटा इंटरचेंज]] (एक्सएमएल मेटाडेटा इंटरचेंज) ट्री) को नेविगेट करना संभव बनाता है। दूसरे शब्दों में, ओसीएल यूनिफाइड मॉडलिंग लैंग्वेज या एमओएफ से उसी तरह संबंधित है जैसे स्कीमट्रॉन [[एक्सएमएल]] से संबंधित है। (ध्यान दें कि स्कीमट्रॉन एक्सएमएल पेड़ों के अंदर नेविगेट करने के लिए [[XPath|एक्सपाथ]] का उपयोग करता है।)<br>एक मॉडल विनिर्देश भाषा होने के नाते डिजाइनरों को एक मॉडल या मेटा-मॉडल को साइड-इफ़ेक्ट-मुक्त एनोटेशन के साथ सजाने की अनुमति मिलती है ओसीएल को [[मिश्र धातु भाषा]] जैसी भाषाओं द्वारा प्रतिस्थापित किया जा सकता है . स्वचालित ओसीएल पीढ़ी सैद्धांतिक रूप से प्राकृतिक भाषा से संभव है।<ref name="NL2OCL">{{cite journal| author=Imran Sarwar Bajwa|title=OCL Constraints Generation from Natural Language Specification, 2010|publisher =[[IEEE]]|date=October 2010|doi=10.1109/EDOC.2010.33|s2cid=7495256}}</ref>
नियम-आधारित सत्यापन लैंग्वेज होने के कारण, [[स्कीमेट्रोन]] को ओसीएल का एक विकल्प माना जा सकता है। हालाँकि स्कीमट्रॉन एक्स्टेंसिबल मार्कअप लैंग्वेज एक्सएमएल ट्री|(एक्सएमएल) ट्री के लिए काम करता है जबकि ओसीएल मेटा-ऑब्जेक्ट सुविधा-आधारित मॉडल और मेटा-मॉडल (अथार्त [[एक्सएमएल मेटाडेटा इंटरचेंज]] (एक्सएमएल मेटाडेटा इंटरचेंज) ट्री) को नेविगेट करना संभव बनाता है। दूसरे शब्दों में, ओसीएल यूनिफाइड मॉडलिंग लैंग्वेज या एमओएफ से उसी तरह संबंधित है जैसे स्कीमट्रॉन [[एक्सएमएल]] से संबंधित है। (ध्यान दें कि स्कीमट्रॉन एक्सएमएल पेड़ों के अंदर नेविगेट करने के लिए [[XPath|एक्सपाथ]] का उपयोग करता है।)<br>एक मॉडल विनिर्देश लैंग्वेज होने के नाते डिजाइनरों को एक मॉडल या मेटा-मॉडल को साइड-इफ़ेक्ट-मुक्त एनोटेशन के साथ सजाने की अनुमति मिलती है ओसीएल को [[मिश्र धातु भाषा|मिश्र धातु लैंग्वेज]] जैसी लैंग्वेजओं द्वारा प्रतिस्थापित किया जा सकता है स्वचालित ओसीएल पीढ़ी सैद्धांतिक रूप से प्राकृतिक लैंग्वेज से संभव है।<ref name="NL2OCL">{{cite journal| author=Imran Sarwar Bajwa|title=OCL Constraints Generation from Natural Language Specification, 2010|publisher =[[IEEE]]|date=October 2010|doi=10.1109/EDOC.2010.33|s2cid=7495256}}</ref>


{| class="wikitable"
{| class="wikitable"
Line 60: Line 60:
|<code style="white-space: nowrap">'''context''' Person '''inv'''<nowiki>: Person.allInstances()->exists(p | p.cars->size() > 0)</nowiki></code>
|<code style="white-space: nowrap">'''context''' Person '''inv'''<nowiki>: Person.allInstances()->exists(p | p.cars->size() > 0)</nowiki></code>
|}
|}
<br/>
== एक्सटेंशन ==
== एक्सटेंशन ==


ग्रहण ओसीएल <ref>{{cite web | url=https://projects.eclipse.org/projects/modeling.mdt.ocl | title=Eclipse OCL™ (Object Constraint Language) | date=31 January 2013 }}</ref> अतिरिक्त ऑपरेटरों और मैप्स के लिए एक प्रकार के साथ मानक ओसीएल का विस्तार करता है। एजाइलयूएमएल मानचित्र और फ़ंक्शन प्रकारों के साथ मानक ओसीएल का विस्तार करता है।<ref>{{cite book | chapter-url=https://link.springer.com/chapter/10.1007/978-3-030-89247-0_8 | doi=10.1007/978-3-030-89247-0_8 | chapter=Extending OCL with Map and Function Types | title=सॉफ्टवेयर इंजीनियरिंग के बुनियादी सिद्धांत| series=Lecture Notes in Computer Science | year=2021 | last1=Lano | first1=Kevin | last2=Kolahdouz-Rahimi | first2=Shekoufeh | volume=12818 | pages=108–123 | isbn=978-3-030-89246-3 | s2cid=239029860 }}</ref> ये एक्सटेंशन आधुनिक प्रोग्रामिंग भाषाओं जैसे पायथन और स्विफ्ट में उपस्थित मैप और फ़ंक्शन प्रकारों के अनुरूप हैं।
ग्रहण ओसीएल <ref>{{cite web | url=https://projects.eclipse.org/projects/modeling.mdt.ocl | title=Eclipse OCL™ (Object Constraint Language) | date=31 January 2013 }}</ref> अतिरिक्त ऑपरेटरों और मैप्स के लिए एक प्रकार के साथ मानक ओसीएल का विस्तार करता है। एजाइलयूएमएल मानचित्र और फलन प्रकारों के साथ मानक ओसीएल का विस्तार करता है।<ref>{{cite book | chapter-url=https://link.springer.com/chapter/10.1007/978-3-030-89247-0_8 | doi=10.1007/978-3-030-89247-0_8 | chapter=Extending OCL with Map and Function Types | title=सॉफ्टवेयर इंजीनियरिंग के बुनियादी सिद्धांत| series=Lecture Notes in Computer Science | year=2021 | last1=Lano | first1=Kevin | last2=Kolahdouz-Rahimi | first2=Shekoufeh | volume=12818 | pages=108–123 | isbn=978-3-030-89246-3 | s2cid=239029860 }}</ref> ये एक्सटेंशन आधुनिक प्रोग्रामिंग लैंग्वेजओं जैसे पायथन और स्विफ्ट में उपस्थित मैप और फलन प्रकारों के अनुरूप हैं।


== यह भी देखें ==
== यह भी देखें ==
* [[कंप्यूटर मॉडल]]
* [[कंप्यूटर मॉडल]]
* [[डेटा मैपिंग]]
* [[डेटा मैपिंग]]
* [[डोमेन विशिष्ट भाषा]] (डीएसएल)
* [[डोमेन विशिष्ट भाषा|डोमेन विशिष्ट लैंग्वेज]] (डीएसएल)
* [[डोमेन-विशिष्ट मॉडलिंग]] (डीएसएम)
* [[डोमेन-विशिष्ट मॉडलिंग]] (डीएसएम)
* [[ग्रहण (सॉफ्टवेयर)]] [https://web.archive.org/web/20060407092135/http://www.eclipse.org/gmt/ जीएमटी प्रोजेक्ट]
* [[ग्रहण (सॉफ्टवेयर)]] [https://web.archive.org/web/20060407092135/http://www.eclipse.org/gmt/ जीएमटी प्रोजेक्ट]
* [[गेलो अभिव्यक्ति भाषा]]
* [[गेलो अभिव्यक्ति भाषा|गेलो अभिव्यक्ति लैंग्वेज]]
* एकीकृत [[मॉडलिंग भाषा]] शब्दों की शब्दावली
* यूनिफाइड [[मॉडलिंग भाषा|मॉडलिंग लैंग्वेज]] शब्दों की शब्दावली
* [[जानबूझकर प्रोग्रामिंग]] (आईपी)
* [[जानबूझकर प्रोग्रामिंग]] (आईपी)
* [[यूएमएल उपकरण]] की सूची
* [[यूएमएल उपकरण]] की सूची
Line 83: Line 81:
* मॉडल-संचालित वास्तुकला (एमडीए)
* मॉडल-संचालित वास्तुकला (एमडीए)
* मॉडल संचालित इंजीनियरिंग (एमडीई)
* मॉडल संचालित इंजीनियरिंग (एमडीई)
* [[मॉडल [[परिवर्तन भाषा]]]] (एमटीएल)
* [[मॉडल [[परिवर्तन भाषा|परिवर्तन लैंग्वेज]]]] (एमटीएल)
* मॉडलिंग भाषा
* मॉडलिंग लैंग्वेज
* मॉडलिंग परिप्रेक्ष्य
* मॉडलिंग परिप्रेक्ष्य
*एमओएफएम2टी
*एमओएफएम2टी
Line 90: Line 88:
* क्यूवीटी|एमओएफ प्रश्न/दृश्य/परिवर्तन (क्यूवीटी)
* क्यूवीटी|एमओएफ प्रश्न/दृश्य/परिवर्तन (क्यूवीटी)
* [[शब्दार्थ अनुवाद]]
* [[शब्दार्थ अनुवाद]]
* परिवर्तन भाषा (टीएल)
* परिवर्तन लैंग्वेज (टीएल)
* यूएमएल उपकरण
* यूएमएल उपकरण
* शब्दावली-आधारित परिवर्तन
* शब्दावली-आधारित परिवर्तन
* एक्सएमएल मेटाडेटा इंटरचेंज
* एक्सएमएल मेटाडेटा इंटरचेंज
* [[ एक्सएमएल परिवर्तन भाषा | एक्सएमएल परिवर्तन भाषा]] (एक्सटीएल)
* [[ एक्सएमएल परिवर्तन भाषा | एक्सएमएल परिवर्तन लैंग्वेज]] (एक्सटीएल)


== संदर्भ ==
== संदर्भ ==
{{Reflist}}
{{Reflist}}
== बाहरी संबंध ==
== बाहरी संबंध ==
* [http://www.omg.org/spec/OCL/ OMG ओसीएल specification]
* [http://www.omg.org/spec/OCL/ OMG ओसीएल specification]
Line 114: Line 110:
* [http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=5630350/ NL2]ओसीएल (ओसीएल Tool for invariant generation from NL)
* [http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=5630350/ NL2]ओसीएल (ओसीएल Tool for invariant generation from NL)


{{Query languages}}
[[Category:CS1 errors]]
{{ISO standards}}
[[Category: एकीकृत मॉडलिंग भाषा]] [[Category: औपचारिक विशिष्टता भाषाएँ]] [[Category: आईएसओ मानक]]
 
 
 
[[Category: Machine Translated Page]]
[[Category:Created On 10/07/2023]]
[[Category:Created On 10/07/2023]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Pages with script errors]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:आईएसओ मानक]]
[[Category:एकीकृत मॉडलिंग भाषा]]
[[Category:औपचारिक विशिष्टता भाषाएँ]]

Latest revision as of 14:47, 6 September 2023

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

विवरण

ओसीएल सिंट्रॉपी (सॉफ्टवेयर) का वंशज है, जो दूसरी पीढ़ी की वस्तु-उन्मुख विश्लेषण और डिजाइन पद्धति है। ओसीएल1.4 परिलैंग्वेज एक बाधा लैंग्वेज निर्दिष्ट करती है। ओसीएल 2.0 में, सामान्य ऑब्जेक्ट क्वेरी लैंग्वेज परिलैंग्वेजओं को सम्मिलित करने के लिए परिलैंग्वेज का विस्तार किया गया है।

ओसीएल स्टेटमेंट चार भागों में बनाए गए हैं:

  1. एक संदर्भ जो उस सीमित स्थिति को परिभाषित करता है जिसमें कथन मान्य है
  2. एक संपत्ति जो संदर्भ की कुछ विशेषताओं का प्रतिनिधित्व करती है (उदाहरण के लिए, यदि संदर्भ एक वर्ग है, तो एक संपत्ति एक विशेषता हो सकती है)
  3. एक ऑपरेशन (उदाहरण के लिए, अंकगणित, सेट-उन्मुख) जो किसी संपत्ति में हेरफेर या योग्यता प्राप्त करता है, और
  4. कीवर्ड (उदाहरण के लिए, यदि, फिर, अन्यथा, और, या, नहीं, तात्पर्य) जिनका उपयोग सशर्त अभिव्यक्तियों को निर्दिष्ट करने के लिए किया जाता है।

संबंध

ओसीएल और यूएमएल

ओसीएल यूनिफाइड मॉडलिंग लैंग्वेज को उन अभिव्यक्तियों को प्रदान करके पूरक करता है जिनमें न तो प्राकृतिक लैंग्वेज की अस्पष्टता है और न ही जटिल गणित का उपयोग करने की अंतर्निहित कठिनाई है। ओसीएल ग्राफ़-आधारित मॉडलों के लिए एक नेविगेशन लैंग्वेज भी है।

ओसीएल और एमओएफ

ओसीएल अपने मेटा-तत्वों के साथ अभिकथनों को जोड़कर मेटा-ऑब्जेक्ट सुविधा मॉडल को अधिक स्पष्ट बनाता है।

ओसीएल और क्यूवीटी

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

विकल्प

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

उदाहरण
बाध्यता ओसीएल समतुल्य
किसी व्यक्ति की उम्र नकारात्मक नहीं होती. context Person inv: self.age >=0
एक व्यक्ति अपने माता-पिता से छोटा है। context Person inv: self.parents->forAll(p|p.age>self.age)
जन्मदिन के बाद व्यक्ति एक वर्ष का हो जाता है। context Person::hasBirthday() post: self.age=self.age@pre+1
एक व्यक्ति के अधिकतम 2 माता-पिता होते हैं। context Person inv: self.parents->size()<=2
किसी के बच्चा होने के बाद उसका बच्चा-सेट खाली नहीं रहता और वह पहले से बड़ा हो जाता है। context Person::getsChild() post: self.childs->notEmpty() and self.childs->size() > self.childs@pre->size()
केवल एक वयस्क ही कार का मालिक हो सकता है। context Person inv: self.age<18 implies self.cars->isEmpty()
किसी कार का पहला पंजीकरण उसके बनने से पहले नहीं हो सकता। context Auto inv: self.registration>=self.constructionYear
प्रत्येक व्यक्ति जिसके पास कार है उसके पास कम से कम एक कार है जो उस व्यक्ति से छोटी है। context Person inv: self.cars->notEmpty() implies self.cars->exists( c | Calendar.YEAR - c.constructionYear < self.age)
कोई भी अपना माता-पिता नहीं हो सकता. context Person inv: self.parents->excludes(self)
कम से कम एक व्यक्ति ऐसा है जिसके पास कार है। context Person inv: Person.allInstances()->exists(p | p.cars->size() > 0)

एक्सटेंशन

ग्रहण ओसीएल [4] अतिरिक्त ऑपरेटरों और मैप्स के लिए एक प्रकार के साथ मानक ओसीएल का विस्तार करता है। एजाइलयूएमएल मानचित्र और फलन प्रकारों के साथ मानक ओसीएल का विस्तार करता है।[5] ये एक्सटेंशन आधुनिक प्रोग्रामिंग लैंग्वेजओं जैसे पायथन और स्विफ्ट में उपस्थित मैप और फलन प्रकारों के अनुरूप हैं।

यह भी देखें

संदर्भ

  1. Object Management Group (OMG); Object Constraint Language Specification, Chapter 7 of OMG Unified Modeling Language Specification, Version 1.3, March 2000 (first edition)
  2. Object Management Group (OMG); Object Constraint Language OMG Available Specification Version 2.0, May 2006
  3. Imran Sarwar Bajwa (October 2010). "OCL Constraints Generation from Natural Language Specification, 2010". IEEE. doi:10.1109/EDOC.2010.33. S2CID 7495256. {{cite journal}}: Cite journal requires |journal= (help)
  4. "Eclipse OCL™ (Object Constraint Language)". 31 January 2013.
  5. Lano, Kevin; Kolahdouz-Rahimi, Shekoufeh (2021). "Extending OCL with Map and Function Types". सॉफ्टवेयर इंजीनियरिंग के बुनियादी सिद्धांत. Lecture Notes in Computer Science. Vol. 12818. pp. 108–123. doi:10.1007/978-3-030-89247-0_8. ISBN 978-3-030-89246-3. S2CID 239029860.

बाहरी संबंध