इस लेख में, आपको कोटलिन में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग से परिचित कराया जाएगा। आप सीखेंगे कि एक वर्ग क्या है, वस्तुओं को कैसे बनाएं और अपने कार्यक्रम में इसका उपयोग कैसे करें।
कोटलिन कार्यात्मक और वस्तु उन्मुख प्रोग्रामिंग दोनों का समर्थन करता है।
कोटलिन उच्च-क्रम के कार्यों, फ़ंक्शन प्रकारों और लैम्ब्डा जैसी सुविधाओं का समर्थन करता है जो इसे कार्यात्मक प्रोग्रामिंग शैली में काम करने के लिए एक बढ़िया विकल्प बनाता है। आप इन अवधारणा के बारे में बाद के अध्यायों में जानेंगे। यह लेख कोटलिन में प्रोग्रामिंग की वस्तु-उन्मुख शैली पर ध्यान केंद्रित करेगा।
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP)
प्रोग्रामिंग की ऑब्जेक्ट-ओरिएंटेड शैली में, आप ऑब्जेक्ट्स बनाकर एक जटिल समस्या को छोटे सेटों में विभाजित कर सकते हैं।
ये वस्तुएं दो विशेषताएं साझा करती हैं:
- राज्य
- व्यवहार
आइए कुछ उदाहरण लेते हैं:
- दीपक एक वस्तु है
- यह चालू या बंद अवस्था में हो सकता है।
- आप
turn on
औरturn off
दीपक (व्यवहार) कर सकते हैं ।
- साइकिल एक वस्तु है
- इसमें वर्तमान गियर, दो पहिए, गियर की संख्या आदि राज्य हैं।
- इसमें ब्रेक लगाना, तेज करना, गियर बदलना आदि व्यवहार है।
जैसे ही हम आगे बढ़ते हैं, आप ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग की विस्तार विशेषताओं के बारे में जानेंगे: डेटा इनकैप्सुलेशन, इनहेरिटेंस और पॉलिमोर्फिज्म। यह लेख चीजों को सरल रखने के लिए मूल बातों पर ध्यान केंद्रित करेगा।
अनुशंसित पढ़ना: एक वस्तु क्या है?
कोटलिन वर्ग
इससे पहले कि आप कोटलिन में वस्तुओं का निर्माण करें, आपको एक वर्ग को परिभाषित करने की आवश्यकता है।
एक वर्ग वस्तु के लिए एक खाका है।
हम एक घर के एक स्केच (प्रोटोटाइप) के रूप में कक्षा के बारे में सोच सकते हैं। इसमें फर्श, दरवाजे, खिड़कियां आदि के बारे में सभी विवरण शामिल हैं। इन विवरणों के आधार पर हम घर का निर्माण करते हैं। घर की वस्तु है।
चूंकि, कई घरों को एक ही विवरण से बनाया जा सकता है, हम एक वर्ग से कई ऑब्जेक्ट बना सकते हैं।
कोटलिन में एक वर्ग को कैसे परिभाषित किया जाए?
कोटलिन में एक वर्ग को परिभाषित करने के लिए, class
कीवर्ड का उपयोग किया जाता है:
कक्षा ClassName (// संपत्ति // सदस्य फ़ंक्शन…)
यहाँ एक उदाहरण है:
वर्ग लैंप (// संपत्ति (डेटा सदस्य) निजी संस्करण isOn: बूलियन = गलत // सदस्य फ़ंक्शन मज़ा टर्नऑन () (isOn = true) // सदस्य फ़ंक्शन मज़ा टर्नऑफ़ () (isOn = false)
यहां, हमने लैंप नामक एक वर्ग को परिभाषित किया।
वर्ग में एक गुण isOn (चर के रूप में उसी तरह परिभाषित), और दो सदस्य कार्य turnOn()
और हैं turnOff()
।
अनुशंसित पढ़ना: कोटलिन फ़ंक्शन
कोटलिन में, या तो संपत्ति को आरंभीकृत किया जाना चाहिए या घोषित किया जाना चाहिए abstract
( यात्रा: कोटलिन सार वर्ग अधिक जानने के लिए)। उपरोक्त उदाहरण में, ison संपत्ति को आरंभ नहीं हो जाता false
।
कक्षाओं, वस्तुओं, गुणों, सदस्य फ़ंक्शन आदि में दृश्यता संशोधक हो सकते हैं। उदाहरण के लिए, isOn संपत्ति निजी है। इसका मतलब है, isOn प्रॉपर्टी को लैम्प क्लास के अंदर से ही बदला जा सकता है।
अन्य दृश्यता संशोधक हैं:
private
- केवल कक्षा के अंदर से दिखाई (पहुँचा जा सकता है)।public
- हर जगह दिखाई देता है।protected
- वर्ग और उसके उपवर्ग के लिए दृश्यमान।internal
- मॉड्यूल के अंदर कोई भी क्लाइंट उन्हें एक्सेस कर सकता है।
आप बाद में कोटलिन दृश्यता संशोधक लेख के बारे में protected
और internal
संशोधक के बारे में जानेंगे ।
यदि आप दृश्यता संशोधक निर्दिष्ट नहीं करते हैं, तो यह public
डिफ़ॉल्ट रूप से होगा।
उपरोक्त कार्यक्रम में, turnOn()
और turnOff()
सदस्य कार्य हैं public
, जबकि, isOn संपत्ति निजी है।
कोटलिन वस्तुएँ
जब वर्ग को परिभाषित किया जाता है, तो केवल ऑब्जेक्ट के लिए विनिर्देश परिभाषित किया जाता है; कोई मेमोरी या भंडारण आवंटित नहीं किया गया है।
वर्ग के भीतर परिभाषित सदस्यों तक पहुंचने के लिए, आपको ऑब्जेक्ट बनाने की आवश्यकता है। लैम्प क्लास की वस्तुएं बनाते हैं।
class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) ) fun main(args: Array) ( val l1 = Lamp() // create l1 object of Lamp class val l2 = Lamp() // create l2 object of Lamp class )
यह प्रोग्राम दो ऑब्जेक्ट्स एल 1 और एल 2 को क्लास लैंप बनाता है। दोनों लैंप के लिए ison संपत्ति L1 और L2 हो जाएगा false
।
सदस्यों तक कैसे पहुंचें?
आप .
संकेतन का उपयोग करके किसी वर्ग के गुण और सदस्य कार्यों तक पहुँच सकते हैं । उदाहरण के लिए,
l1.turnOn ()
यह कथन एल 1 ऑब्जेक्ट के लिए टर्नऑन () फ़ंक्शन को कॉल करता है।
आइए एक और उदाहरण लेते हैं:
l2.isOn = सत्य
Here, we tried to assign true
to isOn property of l2 object. Note that, isOn property is private
, and if you try to access isOn from outside the class, an exception is thrown.
Example: Kotlin Class and Object
class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) fun displayLightStatus(lamp: String) ( if (isOn == true) println("$lamp lamp is on.") else println("$lamp lamp is off.") ) ) fun main(args: Array) ( val l1 = Lamp() // create l1 object of Lamp class val l2 = Lamp() // create l2 object of Lamp class l1.turnOn() l2.turnOff() l1.displayLightStatus("l1") l2.displayLightStatus("l2") )
When you run the program, the output will be:
l1 Lamp is on. l2 Lamp is off.
In the above program,
Lamp
class is created.- The class has a property isOn and three member functions
turnOn()
,turnOff()
anddisplayLightStatus()
. - Two objects l1 and l2 of Lamp class are created in the
main()
function. - Here,
turnOn()
function is called using l1 object:l1.turnOn()
. This method sets isOn instance variable of l1 object totrue
. - And,
turnOff()
function is called using l2 object:l1.turnOff()
. This method sets isOff instance variable of l2 object tofalse
. - फिर,
displayLightStatus()
फ़ंक्शन को l1 और l2 ऑब्जेक्ट्स के लिए कहा जाता है जो कि isOn प्रॉपर्टी सही है या नहीं, इसके आधार पर उपयुक्त संदेश प्रिंट करता हैfalse
।
ध्यान दें कि, isOn संपत्ति को false
वर्ग के अंदर शुरू किया गया है। जब कक्षा का एक ऑब्जेक्ट बनाया जाता है, तो ऑब्जेक्ट के लिए isOn संपत्ति false
स्वचालित रूप से प्रारंभ होती है । इसलिए, यह आवश्यक नहीं है कि turnOff()
एल 2 ऑब्जेक्ट को आइसऑन प्रॉपर्टी पर सेट करने के लिए कॉल किया जाए false
।
उदाहरण के लिए:
class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) fun displayLightStatus() ( if (isOn == true) println("lamp is on.") else println("lamp is off.") ) ) fun main(args: Array) ( val lamp = Lamp() lamp.displayLightStatus() )
जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:
दीपक बंद है।
यह लेख कोटलिन में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग का एक परिचय है। अधिक जानने के लिए इन अध्यायों की जाँच करें:
- कोटलिन कंस्ट्रक्टर्स एंड इनिशियलाइज़र
- कोटलिन इस खोजशब्द
- कोटलिन नेस्टेड क्लास