ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) एक प्रोग्रामिंग प्रतिमान है जो केंद्रीय अवधारणा के रूप में वस्तुओं पर आधारित है। OOP में, कोड को कार्यक्षमता के आधार पर स्वरूपित किया जाता है, जिससे कोड रखरखाव, अमूर्तता, पुन: प्रयोज्य, दक्षता और ऑब्जेक्ट पर कई कार्यक्षमता सक्षम होती है।
वस्तु में विशेषताएँ (चर) होती हैं जो इसकी विशेषताओं, गुणों और विधियों (कार्यों) को परिभाषित करती हैं जो वस्तु की क्रियाओं (प्रक्रियाओं) और व्यवहारों को परिभाषित करती हैं।
गो में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग अन्य भाषाओं से अलग है। ऑब्जेक्ट-ओरिएंटेड कॉन्सेप्ट्स को गो में स्ट्रक्चर्स, इंटरफेस और कस्टम प्रकारों का उपयोग करके लागू किया जाता है।
Go. में अनुकूलित प्रकार
कस्टम प्रकार पुन: उपयोग के लिए समान कोड को समूहबद्ध करना और पहचानना आसान बनाते हैं।
कस्टम प्रकार घोषित करने के लिए कोड है:
प्रकार टाइपनाम डेटाटाइप
एक कस्टम प्रकार बनाने और एक चर निर्दिष्ट करने पर, आप का उपयोग करके प्रकार की जांच कर सकते हैं विचार करना। के प्रकार() जो एक वेरिएबल लेता है और वेरिएबल के प्रकार को लौटाता है।
आयात("एफएमटी"
"विचार करना")
प्रकार दो पूर्णांक
// टाइप "दो" बनाता है
वर नंबर दो // प्रकार "दो" का चर
एफएमटी Println (प्रतिबिंबित करें। टाइपऑफ़ (संख्या))
संख्या चर एक प्रकार का है दो जो एक पूर्णांक है। आप और अधिक कस्टम प्रकार बनाने के लिए आगे जा सकते हैं।
Go. में स्ट्रक्चर बनाना
गो में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के लिए स्ट्रक्चर (स्ट्रक्चर) ब्लूप्रिंट हैं। स्ट्रक्चर्स फ़ील्ड के उपयोगकर्ता-परिभाषित संग्रह हैं।
एक संरचना में विभिन्न प्रकार के डेटा प्रकार हो सकते हैं, जिसमें यौगिक प्रकार और विधियाँ शामिल हैं।
आप इस सिंटैक्स का उपयोग करके एक संरचना बना सकते हैं:
प्रकार संरचना का नाम struct {
// कुछ कोड
}
परंपरागत रूप से, संरचना नाम आमतौर पर पूंजीकृत होते हैं और पठनीयता के लिए ऊंट-आवरण होते हैं।
संरचना प्रकार फ़ील्ड नाम और डेटा प्रकार लेता है। स्ट्रक्चर कस्टम प्रकार सहित किसी भी गो डेटा प्रकार में ले सकते हैं।
प्रकार उपयोगकर्ता struct {
फ़ील्ड1 डोरी
क्षेत्र 2 पूर्णांक
फील्ड मैप नक्शा[डोरी]पूर्णांक
}
आप संरचना को एक चर के रूप में निर्दिष्ट करके एक संरचना प्रकार को तुरंत चालू कर सकते हैं।
उदाहरण: = उपयोगकर्ता {
// कुछ कोड
}
स्ट्रक्चर इंस्टेंस को इनिशियलाइज़ेशन पर फ़ील्ड के साथ पॉप्युलेट किया जा सकता है जैसा कि इनिशियलाइज़ेशन पर परिभाषित किया गया है या शून्य पर सेट किया गया है।
उदाहरण: = उपयोगकर्ता {
फ़ील्ड1: "ए डोरी खेत",
क्षेत्र 2: 10,
फील्ड मैप: नक्शा[डोरी]पूर्णांक{},
}
स्ट्रक्चर तत्वों तक पहुंचना
आप फ़ील्ड में डॉट नोटेशन का उपयोग करके स्ट्रक्चर इंस्टेंस के फ़ील्ड तक पहुंच सकते हैं।
एफएमटी Println ("मूल्य के एक क्षेत्र तक पहुँच", उदाहरण। फ़ील्ड 2)
यह आउटपुट करता है क्षेत्र 2 संरचना उदाहरण के तत्काल।
स्ट्रक्चर्स को तरीके असाइन करना
नीचे दिए गए सिंटैक्स में दिखाए गए फ़ंक्शन नाम से पहले एक रिसीवर नाम और संरचना नाम निर्दिष्ट करके स्ट्रक्चर प्रकारों को फ़ंक्शंस (विधियां) असाइन किए जाते हैं।
समारोह(रिसीवर स्ट्रक्चरनाम)समारोहनाम() {
// कुछ कोड
}
प्रक्रिया समारोहनाम केवल निर्दिष्ट संरचना प्रकार पर उपयोग किया जा सकता है।
Go. में इनहेरिटेंस लागू करना
वंशानुक्रम है अन्य वस्तुओं के तरीकों और विशेषताओं तक पहुँचने और उपयोग करने के लिए वस्तुओं और प्रकारों की क्षमता। गो में एक विशेषता के रूप में वंशानुक्रम नहीं है, लेकिन आप रचनाओं का उपयोग कर सकते हैं। गो में, संरचना में अधोसंरचना का नाम उप-संरचना का नाम प्रदान करके एक उप-संरचना (विरासत में प्राप्त होने वाली संरचना) को संदर्भित करता है।
उपरोक्त संरचना उदाहरण का उपयोग करना:
प्रकार उपयोगकर्ता struct {
फ़ील्ड1 डोरी
क्षेत्र 2 पूर्णांक
फील्ड मैप नक्शा[डोरी]पूर्णांक
}
प्रकार User 2 struct {
उपयोगकर्ता
}
पास करके उपयोगकर्ता में संरचना का नाम User 2 संरचना, User 2 संरचना सभी विधियों और विशेषताओं तक पहुंच सकती है उपयोगकर्ता अमूर्त तकनीकों को छोड़कर तात्कालिकता पर संरचना कार्यरत हैं।
बेटा := User2{
उपयोगकर्ता{
फ़ील्ड 1: "बेबी",
क्षेत्र 2: 0,
फील्ड मैप: शून्य,
},
}
एफएमटी Println (son.field2)
बेटा उपरोक्त चर का एक तात्कालिकता है User 2 संरचना जैसा कि उदाहरण में देखा गया है, बेटा वेरिएबल उपयोगकर्ता प्रकार के मानों को एक्सेस और इंस्टेंट कर सकता है और उनका उपयोग कर सकता है।
Go. में एनकैप्सुलेटिंग टाइप फील्ड्स
एनकैप्सुलेशन, जिसे "सूचना छिपाना" भी कहा जाता है, एक है किसी वस्तु की विधियों और विशेषताओं को इकाइयों में बाँधने की तकनीक निर्दिष्ट को छोड़कर उपयोग और पहुंच को प्रतिबंधित करने के लिए (पढ़ने/लिखने के विशेषाधिकारों को सक्षम करना)।
पैकेज में निर्यातित और गैर-निर्यातित पहचानकर्ताओं का उपयोग करके गो में एनकैप्सुलेशन लागू किया गया है।
निर्यात किए गए पहचानकर्ता (पढ़ें और लिखें)
निर्यात किए गए पहचानकर्ताओं को उनके परिभाषित पैकेजों और अन्य कार्यक्रमों तक पहुंच से निर्यात किया जाता है। फ़ील्ड पहचानकर्ता को कैपिटलाइज़ करना फ़ील्ड को निर्यात करता है।
प्रकार उपयोगकर्ता struct {
फ़ील्ड1 डोरी
फ़ील्ड2 पूर्णांक
फील्ड मैप नक्शा[डोरी]पूर्णांक
}
प्रकार User 2 struct {
उपयोगकर्ता
}
निर्यात न किए गए पहचानकर्ता (केवल पढ़ने के लिए)
निर्यात न किए गए पहचानकर्ताओं को परिभाषित पैकेज से निर्यात नहीं किया जाता है और पारंपरिक रूप से लोअरकेस किया जाता है।
प्रकार उपयोगकर्ता struct {
फ़ील्ड1 डोरी
क्षेत्र 2 पूर्णांक
फील्ड मैप नक्शा[डोरी]पूर्णांक
}
प्रकार User 2 struct {
उपयोगकर्ता
}
निर्यात और गैर-निर्यात पहचानकर्ताओं की अवधारणा किसी वस्तु के तरीकों पर भी लागू होती है।
Go. में बहुरूपता
बहुरूपता एक ऐसी तकनीक है जिसका उपयोग लचीलेपन के लिए किसी वस्तु को विभिन्न रूप देने के लिए किया जाता है।
गो इंटरफेस का उपयोग करके बहुरूपता को लागू करता है। इंटरफेस कस्टम प्रकार हैं जिनका उपयोग विधि हस्ताक्षर को परिभाषित करने के लिए किया जाता है।
इंटरफेस घोषित करना
इंटरफेस घोषित करना स्ट्रक्चर घोषित करने के समान है। हालाँकि, इंटरफ़ेस का उपयोग करके घोषित किया जाता है इंटरफेस खोजशब्द।
प्रकार इंटरफ़ेसनाम इंटरफेस{
// कुछ तरीके
}
इंटरफ़ेस घोषणाओं में ऐसे तरीके होते हैं जिन्हें संरचना प्रकारों द्वारा कार्यान्वित किया जाना है।
स्ट्रक्चर्स में इंटरफेस लागू करना
इंटरफ़ेस को लागू करने वाले प्रकारों को घोषित करना होगा जिसके बाद प्रकार के तरीके इंटरफ़ेस को लागू करते हैं।
// अंतरपटल
प्रकार रंग इंटरफेस{
रँगना() डोरी
}
// संरचनाओं की घोषणा
प्रकार हरा struct {
// कुछ संरचना विशिष्ट कोड
}
प्रकार नीला struct {
// कुछ विशिष्ट कोड
}
ऊपर दिए गए कोड स्निपेट में a. है रंग इंटरफ़ेस a. के साथ घोषित किया गया रँगना द्वारा कार्यान्वित की जाने वाली विधि हरा और नीला संरचना प्रकार।
इंटरफेस को स्ट्रक्चर प्रकारों के तरीकों को निर्दिष्ट करके कार्यान्वित किया जाता है और फिर इंटरफ़ेस विधि द्वारा विधि को लागू करने के लिए विधि का नामकरण किया जाता है।
समारोह(जी हरा)रँगना()डोरी {
वापसी "हरा रंगा"
}
समारोह(बी नीला)रँगना()डोरी {
वापसी "नीला रंग"
}
पेंट विधि हरे और नीले प्रकारों द्वारा कार्यान्वित की जाती है जो अब कॉल कर सकते हैं और उपयोग कर सकते हैं रँगना तरीका।
ब्रश:= हरा{}
एफएमटी प्रिंट्लन (ब्रश। रँगना())
"हरे रंग से रंगा" कंसोल पर मुद्रित होता है जो यह पुष्टि करता है कि इंटरफ़ेस सफलतापूर्वक कार्यान्वित किया गया था।
Go. में सार फ़ील्ड
अमूर्तता है महत्वहीन विधियों और प्रकार की विशेषताओं को छिपाने की प्रक्रिया, कार्यक्रम के कुछ हिस्सों को असामान्य, अनपेक्षित उपयोग से सुरक्षित करना आसान बनाता है।
गो के पास बल्ले से लागू अमूर्तता नहीं है; हालांकि, आप इंटरफेस का उपयोग करके अमूर्तता को लागू करने के माध्यम से हमारे तरीके से काम कर सकते हैं।
// मनुष्य दौड़ सकते हैं
प्रकार इंसान इंटरफेस {
Daud() डोरी
}
// लड़का पैरों वाला इंसान है
प्रकार लड़का struct {
पैर डोरी
}
// लड़के पर एक विधि मानव इंटरफ़ेस की रन विधि को लागू करती है
समारोह(एच बॉय)Daud()डोरी {
वापसी एच। पैर
}
उपरोक्त कोड a. बनाता है इंसान एक के साथ इंटरफेस Daud इंटरफ़ेस जो एक स्ट्रिंग देता है। लड़का प्रकार लागू करता है Daud की विधि इंसान इंटरफ़ेस और तात्कालिकता पर एक स्ट्रिंग देता है।
एब्स्ट्रैक्शन को लागू करने के तरीकों में से एक है एक स्ट्रक्चर को इंटरफ़ेस इनहेरिट करना जिसके तरीकों को एब्स्ट्रैक्ट किया जाना है। कई अन्य दृष्टिकोण हैं, लेकिन यह सबसे आसान है।
प्रकार व्यक्ति struct {
नाम डोरी
आयु पूर्णांक
स्थिति मानव
}
समारोहमुख्य() {
व्यक्ति1 := &लड़का {पैर: "दो पैर"}
व्यक्ति 2: = और व्यक्ति { // एक व्यक्ति का उदाहरण
नाम: "अमीना",
आयु: 19,
स्थिति: व्यक्ति1,
}
एफएमटी प्रिंट्लन (व्यक्ति। Status.run ())
}
व्यक्ति संरचना विरासत में मिली है इंसान इंटरफ़ेस और चर का उपयोग करके इसके सभी तरीकों तक पहुंच सकता है स्थिति इंटरफ़ेस विरासत में मिला।
संदर्भ द्वारा तात्कालिकता पर (एक सूचक का उपयोग करके), का उदाहरण व्यक्ति struct व्यक्ति 2 के एक उदाहरण का संदर्भ देता है लड़का struct व्यक्ति1 और विधियों तक पहुँच प्राप्त करता है।
इस तरह, आपको प्रकार द्वारा कार्यान्वित की जाने वाली विशिष्ट विधियों को निर्दिष्ट करना होगा।
ओओपी बनाम कार्यात्मक प्रोग्रामिंग
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग एक महत्वपूर्ण प्रतिमान है क्योंकि यह आपको अपने प्रोग्राम पर अधिक नियंत्रण देता है और कोड के पुन: उपयोग को प्रोत्साहित करता है जिस तरह से कार्यात्मक प्रोग्रामिंग नहीं करता है।
यह कार्यात्मक प्रोग्रामिंग को एक बुरा विकल्प नहीं बनाता है, क्योंकि कार्यात्मक प्रोग्रामिंग कुछ उपयोग-मामलों के लिए सहायक और बेहतर हो सकती है।
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग क्या है? आम आदमी की शर्तों में समझाया गया मूल बातें
आगे पढ़िए
संबंधित विषय
- प्रोग्रामिंग
- वस्तु उन्मुख कार्यकर्म
लेखक के बारे में

गुडनेस एक तकनीकी लेखक, बैकएंड डेवलपर और डेटा विश्लेषक हैं, जो इस आकर्षक क्षेत्र की खोज करते हुए विभिन्न तकनीकी विषयों को सरल बनाते हैं।
हमारे समाचार पत्र के सदस्य बनें
तकनीकी युक्तियों, समीक्षाओं, निःशुल्क ई-पुस्तकों और अनन्य सौदों के लिए हमारे न्यूज़लेटर से जुड़ें!
सब्सक्राइब करने के लिए यहां क्लिक करें