Rexx - ऑब्जेक्ट ओरिएंटेड
जब आप पर्यावरण अध्याय के अनुसार ooRexx स्थापित करते हैं, तो आपके पास कक्षाओं और वस्तुओं के साथ काम करने की क्षमता भी होगी। कृपया ध्यान दें कि निम्नलिखित सभी कोड को ooRexx दुभाषिया में चलाने की आवश्यकता है। सामान्य Rexx दुभाषिया इस ऑब्जेक्ट ओरिएंटेड कोड को चलाने में सक्षम नहीं होगा।
कक्षा और विधि घोषणाएँ
निम्नलिखित सिंटैक्स घोषणा के साथ एक वर्ग को परिभाषित किया गया है।
वाक्य - विन्यास
::class classname
कहाँ पे classname वर्ग को दिया गया नाम है।
कक्षा में एक विधि को निम्नलिखित सिंटैक्स घोषणा के साथ परिभाषित किया गया है।
वाक्य - विन्यास
::method methodname
कहाँ पे methodname विधि को दिया गया नाम है।
एक वर्ग में एक संपत्ति को सिंटैक्स घोषणा के साथ परिभाषित किया गया है।
वाक्य - विन्यास
::attribute propertyname
कहाँ पे propertyname संपत्ति को दिया गया नाम है।
उदाहरण
निम्नलिखित Rexx में एक वर्ग का एक उदाहरण है।
::class student
::attribute StudentID
::attribute StudentName
उपरोक्त कार्यक्रम के बारे में निम्नलिखित बातों पर ध्यान देने की आवश्यकता है।
- कक्षा का नाम छात्र है।
- क्लास में 2 प्रॉपर्टीज, StudentID और StudentName हैं।
गेटटर और सेटर विधियाँ
गेट्टर और सेटर विधियों का उपयोग स्वचालित रूप से सेट करने और गुणों के मूल्यों को प्राप्त करने के लिए किया जाता है। Rexx में, जब आप विशेषता कीवर्ड के साथ एक संपत्ति की घोषणा करते हैं, तो गेट्टर और सेटर विधियां पहले से ही डाल दी जाती हैं।
उदाहरण
::class student
::attribute StudentID
::attribute StudentName
उपरोक्त उदाहरण में, स्टूडेंटआईड और स्टूडेंटनाम के लिए गेट्टर और सेटर विधियाँ होंगी।
उनका उपयोग कैसे किया जा सकता है इसका एक उदाहरण निम्नलिखित कार्यक्रम में दिखाया गया है।
/* Main program */
value = .student~new
value~StudentID = 1
value~StudentName = 'Joe'
say value~StudentID
say value~StudentName
exit 0
::class student
::attribute StudentID
::attribute StudentName
उपरोक्त कार्यक्रम का आउटपुट नीचे दिखाया गया है।
1
Joe
उदाहरण के तरीके
कक्षा के माध्यम से वस्तुओं का निर्माण किया जा सकता है ~new operator। कक्षा से एक विधि को निम्नलिखित तरीके से बुलाया जा सकता है।
Object~methodname
कहाँ पे methodname वह विधि है जिसे कक्षा से मंगाना पड़ता है।
उदाहरण
निम्नलिखित उदाहरण से पता चलता है कि किसी वर्ग और संबंधित विधि से एक वस्तु कैसे बनाई जा सकती है।
/* Main program */
value = .student~new
value~StudentID = 1
value~StudentName = 'Joe'
value~Marks1 = 10
value~Marks2 = 20
value~Marks3 = 30
total = value~Total(value~Marks1,value~Marks2,value~Marks3)
say total
exit 0
::class student
::attribute StudentID
::attribute StudentName
::attribute Marks1
::attribute Marks2
::attribute Marks3
::method 'Total'
use arg a,b,c
return (ABS(a) + ABS(b) + ABS(c))
उपरोक्त कार्यक्रम का आउटपुट नीचे दिखाया गया है।
60
कई वस्तुओं का निर्माण
एक वर्ग के कई ऑब्जेक्ट भी बना सकता है। निम्नलिखित उदाहरण दिखाएगा कि यह कैसे प्राप्त किया जा सकता है।
यहाँ हम 3 ऑब्जेक्ट्स बना रहे हैं (st, st1 और st2) और उनके इंस्टेंस सदस्यों और उदाहरण के तरीकों को तदनुसार कॉल कर रहे हैं।
आइए एक उदाहरण देखें कि कितनी वस्तुओं का निर्माण किया जा सकता है।
उदाहरण
/* Main program */
st = .student~new
st~StudentID = 1
st~StudentName = 'Joe'
st~Marks1 = 10
st~Marks2 = 20
st~Marks3 = 30
total = st~Total(st~Marks1,st~Marks2,st~Marks3)
say total
st1 = .student~new
st1~StudentID = 2
st1~StudentName = 'John'
st1~Marks1 = 10
st1~Marks2 = 20
st1~Marks3 = 40
total = st1~Total(st1~Marks1,st1~Marks2,st1~Marks3)
say total
st2 = .student~new
st2~StudentID = 3
st2~StudentName = 'Mark'
st2~Marks1 = 10
st2~Marks2 = 20
st2~Marks3 = 30
total = st2~Total(st2~Marks1,st2~Marks2,st2~Marks3)
say total
exit 0
::class student
::attribute StudentID
::attribute StudentName
::attribute Marks1
::attribute Marks2
::attribute Marks3
::method 'Total'
use arg a,b,c
return (ABS(a) + ABS(b) + ABS(c))
उपरोक्त कार्यक्रम का आउटपुट नीचे दिखाया गया है।
60
70
60
विरासत
वंशानुक्रम को उस प्रक्रिया के रूप में परिभाषित किया जा सकता है जहां एक वर्ग दूसरे के गुणों (तरीकों और क्षेत्रों) को प्राप्त करता है। विरासत के उपयोग के साथ, जानकारी को एक पदानुक्रमित क्रम में प्रबंधनीय बनाया गया है।
वह वर्ग जो दूसरे के गुणों को विरासत में देता है, उसे जाना जाता है subclass (व्युत्पन्न वर्ग, बाल वर्ग) और वह वर्ग जिसके गुण विरासत में मिले हैं, के रूप में जाना जाता है superclass (बेस क्लास, पैरेंट क्लास)।
आइए Rexx में विरासत का एक उदाहरण देखें। निम्नलिखित उदाहरण में हम नामक एक वर्ग बना रहे हैंPerson। वहाँ से हम सबक्लास कीवर्ड का उपयोग करते हैंStudent class के रूप में sub-class of Person।
उदाहरण
/* Main program */
st = .student~new
st~StudentID = 1
st~StudentName = 'Joe'
st~Marks1 = 10
st~Marks2 = 20
st~Marks3 = 30
say st~Total(st~Marks1,st~Marks2,st~Marks3)
exit 0
::class Person
::class student subclass Person
::attribute StudentID
::attribute StudentName
::attribute Marks1
::attribute Marks2
::attribute Marks3
::method 'Total'
use arg a,b,c
return (ABS(a) + ABS(b) + ABS(c))
उपरोक्त कार्यक्रम का आउटपुट नीचे दिखाया गया है।
60