ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग सबसे लोकप्रिय प्रोग्रामिंग प्रतिमानों में से एक है। ऐसा इसलिए है क्योंकि यह डेटा और फ़ंक्शन दोनों को मॉडल करता है और आपको वास्तविक दुनिया की वस्तुओं के संदर्भ में सोचने देता है। कक्षाएं ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग का एक मूलभूत पहलू हैं क्योंकि वे आपको ऑब्जेक्ट बनाने के लिए आवश्यक ब्लूप्रिंट प्रदान करते हैं।
C# एक लोकप्रिय बहु-प्रतिमान प्रोग्रामिंग भाषा है, जो वस्तु-उन्मुख प्रतिमान का उपयोग करती है। इस लेख में, आप सीखेंगे कि C# में कक्षाएं कैसे बनाएं और उनका उपयोग कैसे करें।
कक्षा घोषणा बनाना
सी # में, एक वर्ग एक संदर्भ प्रकार है, जिसमें होगा शून्य value जब तक आप कक्षा की एक नई वस्तु नहीं बनाते। सी # में एक नया वर्ग बनाने के लिए आपको कई घटकों की आवश्यकता होगी:
- एक एक्सेस संशोधक।
- कक्षा खोजशब्द।
- वह नाम जिसे आप कक्षा को निर्दिष्ट करना चाहते हैं।
- खुले और करीबी घुंघराले ब्रेसिज़ की एक जोड़ी (जो वर्ग की विशेषताओं, निर्माणकर्ताओं और विधियों को संलग्न करेगी)।
आंतरिक कक्षाग्राहक{ }
उपरोक्त कोड एक नया वर्ग बनाता है जो एक ही असेंबली (संकलन फ़ाइल) में अन्य वर्गों द्वारा पहुंचा जा सकता है। C# में ठीक छह एक्सेस संशोधक हैं जिनका उपयोग आप अपनी कक्षाओं, चरों और विधियों के अभिगम्यता स्तरों को नियंत्रित करने के लिए कर सकते हैं। छह एक्सेस संशोधक हैं:
- जनता: प्रत्येक वर्ग (इसकी असेंबली की परवाह किए बिना) सार्वजनिक वर्ग और उसके सार्वजनिक सदस्यों (विशेषताओं, निर्माणकर्ताओं और विधियों) तक पहुंच सकता है।
- निजी: केवल निजी वर्ग और उसके सदस्य ही इसे एक्सेस कर सकते हैं।
- संरक्षित: केवल व्युत्पन्न वर्ग (बच्चे और पोते वर्ग) संरक्षित वर्ग तक पहुँच सकते हैं।
- आंतरिक: केवल एक ही असेंबली में कक्षाएं आंतरिक वर्ग तक पहुंच सकती हैं।
- संरक्षित आंतरिक: केवल उसी असेंबली में कक्षाएं या किसी अन्य असेंबली से व्युत्पन्न वर्ग संरक्षित आंतरिक वर्ग तक पहुंच सकता है।
- निजी संरक्षित: केवल उसी असेंबली में व्युत्पन्न वर्ग निजी संरक्षित वर्ग तक पहुँच सकते हैं।
गुण घोषित करना और एक्सेस करना
गुण आपके द्वारा बनाई गई कक्षाओं के लिए बिल्डिंग ब्लॉक्स हैं। उनके पास संवेदनशील डेटा होता है और आमतौर पर उनके पास एक निजी या संरक्षित एक्सेस संशोधक होता है। इसलिए, इन कक्षाओं को बाहरी कक्षाओं से एक्सेस करने के लिए आपको एक्सेसर्स और म्यूटेटर (गेटर्स और सेटर्स) का उपयोग करना होगा।
सी # आपको अपनी विशेषताओं, म्यूटेटर और एक्सेसर्स को निम्नानुसार घोषित करने की अनुमति देता है:
आंतरिक कक्षाग्राहक
{
// गुण
निजीपूर्णांक आईडी नंबर;
निजी स्ट्रिंग नाम;
निजीदोहरा कुल;// बसता है
जनताशून्यसेट आईडी नंबर(पूर्णांक आईडी नंबर){ यह.IdNumber = IdNumber; }
जनताशून्यनाम भरें(स्ट्रिंग नाम){ यहनाम = नाम; }
जनताशून्यकुल सेट करें(दोहरा कुल){ यहकुल = कुल; }
// गेटर्स
जनतापूर्णांकGetIdNumber(){ वापसीयह।आईडी नंबर; }
जनता डोरी GetName(){ वापसीयह।नाम; }
जनतादोहराकुल प्राप्त करें(){ वापसीयह।कुल; }
}
अन्य लोकप्रिय वस्तु-उन्मुख भाषाएँ उपरोक्त दृष्टिकोण का भी उपयोग करें। वास्तव में, यदि आप चाहते हैं जावा कक्षाएं बनाएं, आपको उपरोक्त संरचना का उपयोग करना होगा। हालाँकि, C# में अब विशेषताएँ और एक्सेसर्स बनाने का एक आसान तरीका है। C# में, इस वर्ग का वही कार्य है जो ऊपर दिया गया है:
आंतरिक कक्षाग्राहक
{
पब्लिक इंट IdNumber { प्राप्त; समूह; }
सार्वजनिक स्ट्रिंग नाम { प्राप्त; समूह; }
सार्वजनिक डबल कुल { प्राप्त; समूह; }
}
उपरोक्त वर्ग में C# कॉल क्या है गुण, जो विशेषताओं (फ़ील्ड) और विधियों का एक संयोजन है। साथ गुण, आप अपनी विशेषता घोषणा, म्यूटेटर और एक्सेसर्स कोड को आधा कर सकते हैं।
कंस्ट्रक्टर घोषित करना
रचनाकार एक वर्ग का एक और मूलभूत पहलू हैं। किसी वर्ग से ऑब्जेक्ट बनाने के लिए आपको इसके किसी एक कंस्ट्रक्टर को कॉल करना होगा। प्रत्येक कंस्ट्रक्टर के पास एक वैकल्पिक एक्सेस संशोधक और उसकी कक्षा के समान नाम होता है। ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषाओं के लिए, आमतौर पर तीन प्रकार के कंस्ट्रक्टर होते हैं:
- डिफ़ॉल्ट कंस्ट्रक्टर: कोई तर्क नहीं लेता है और प्रत्येक विशेषता को एक डिफ़ॉल्ट मान प्रदान करता है।
- प्राथमिक निर्माता: एक या अधिक तर्क लेता है (कक्षा में चर की संख्या के आधार पर)।
- कॉपी कंस्ट्रक्टर: एक और कंस्ट्रक्टर को एक तर्क के रूप में लेता है।
C# में डिफ़ॉल्ट और प्राथमिक कंस्ट्रक्टरों के लिए एक छत्र शब्द है - इंस्टेंस कंस्ट्रक्टर। इस प्रोग्रामिंग भाषा में दो अन्य कंस्ट्रक्टर (निजी और स्थिर) भी हैं। यह लेख तीन पारंपरिक रचनाकारों पर केंद्रित है।
डिफ़ॉल्ट कंस्ट्रक्टर
// डिफ़ॉल्ट कंस्ट्रक्टर
जनता ग्राहक()
{
आईडीनंबर = 0;
नाम = "अनजान";
कुल = 0;
}
प्राथमिक कंस्ट्रक्टर
// प्राथमिक कंस्ट्रक्टर
जनताग्राहक(पूर्णांक IdNumber, स्ट्रिंग नाम, स्ट्रिंग CustomerType, दोहरा कुल)
{
यह.IdNumber = IdNumber;
यहनाम = नाम;
यहकुल = कुल;
}
कॉपी कंस्ट्रक्टर
// कॉपी कंस्ट्रक्टर
जनता ग्राहक (ग्राहक पिछला ग्राहक)
{
यह.IdNumber = पिछला ग्राहक। आईडी नंबर;
यहनाम = पिछला ग्राहक। नाम;
यहकुल = पिछला ग्राहक। कुल;
}
बनाने के तरीके
तरीके एक महत्वपूर्ण वर्ग घटक नहीं हैं, लेकिन वे उपयोगी हैं। एक वर्ग में एक या अधिक विधियाँ हो सकती हैं। एक विधि में एक एक्सेस संशोधक, एक रिटर्न प्रकार, एक नाम और एक निकाय होता है।
// तरीका
जनता स्ट्रिंग ग्राहक विवरण ()
{
वापसी " पहचान: " + पहचान संख्या + " नाम: " + नाम + " कुल: " + कुल;
}
उपरोक्त कोड ग्राहक वस्तु का एक स्ट्रिंग प्रतिनिधित्व देता है।
वस्तुओं का निर्माण
एक पूर्ण वर्ग बनाने के बाद, इसे विशेषताओं, कंस्ट्रक्टर्स और एक विधि से लैस करके, आप विभिन्न कंस्ट्रक्टर्स का उपयोग करके ऑब्जेक्ट बनाना शुरू कर सकते हैं। बिना किसी विशेषता के ऑब्जेक्ट बनाने के लिए, आप डिफ़ॉल्ट कंस्ट्रक्टर का उपयोग कर सकते हैं:
ग्राहक जॉन = नया ग्राहक();
ऊपर दी गई कोड की पंक्ति एक डिफ़ॉल्ट ग्राहक बनाती है और इसे एक वैरिएबल को असाइन करती है जिसे. कहा जाता है जॉन. साथ जॉन, आप प्रत्येक ग्राहक विशेषता के डिफ़ॉल्ट मान तक पहुंच सकते हैं।
सांत्वना देना।पंक्ति लिखो(जॉन।नाम);
उपरोक्त कोड को निष्पादित करना कंसोल में निम्नलिखित प्रिंट करता है:
अनजान
आप का भी उपयोग कर सकते हैं जॉन ग्राहक वर्ग में किसी भी विधि तक पहुँचने के लिए चर।
सांत्वना देना।पंक्ति लिखो(जॉन.ग्राहक विवरण());
उपरोक्त कोड की लाइन को निष्पादित करने से कंसोल में निम्न आउटपुट प्रिंट होता है:
आईडी: 0 नाम: अज्ञात कुल: 0
विशेषताओं के साथ एक वस्तु बनाने के लिए, आप प्राथमिक निर्माता का उपयोग करेंगे:
ग्राहक जॉन = नया ग्राहक (1001, "जॉन डो", 250.20);
सांत्वना देना।पंक्ति लिखो(जॉन.ग्राहक विवरण());
उपरोक्त कोड को निष्पादित करने से कंसोल में निम्न आउटपुट प्रिंट होता है:
पहचान: 1001 नाम: जॉनहरिणीकुल: 250.2
ऊपर दिए गए ऑब्जेक्ट की कॉपी बनाने के लिए आप कॉपी कंस्ट्रक्टर का उपयोग कर सकते हैं:
ग्राहक जॉनी = नया ग्राहक (जॉन);
सांत्वना देना।पंक्ति लिखो(छोकरा.ग्राहक विवरण());
उपरोक्त कोड को निष्पादित करने से कंसोल में निम्न आउटपुट प्रिंट होता है:
पहचान: 1001 नाम: जॉनहरिणीकुल: 250.2
जैसा कि आप देख सकते हैं कि कॉपी कंस्ट्रक्टर प्राथमिक कंस्ट्रक्टर की एक प्रति है। कॉपी कंस्ट्रक्टर एक डिफॉल्ट कंस्ट्रक्टर को एक तर्क के रूप में भी ले सकता है:
ग्राहक जॉन = नया ग्राहक();
ग्राहक जॉनी = नया ग्राहक (जॉन);
सांत्वना देना।पंक्ति लिखो(छोकरा.ग्राहक विवरण());
उपरोक्त कोड को निष्पादित करने से कंसोल में निम्न आउटपुट प्रिंट होता है:
आईडी: 0 नाम: अज्ञात कुल: 0
अब आप C# Classes बना सकते हैं और उपयोग कर सकते हैं
आप कक्षाओं को परिभाषित करने और उनसे ऑब्जेक्ट बनाने के लिए C# में ऑब्जेक्ट-ओरिएंटेड प्रतिमान का उपयोग कर सकते हैं। आप प्रत्येक वर्ग के लिए विधियाँ बना सकते हैं जो तब उनकी वस्तुओं की विशेषताओं पर काम कर सकती हैं।
हालाँकि, केवल वस्तु-उन्मुख प्रतिमान केवल एक ही नहीं है जिससे आपको परिचित होने की आवश्यकता है। शीर्ष तीन प्रोग्रामिंग प्रतिमान अनिवार्य, वस्तु-उन्मुख और कार्यात्मक हैं।