क्या आप क्लास कीवर्ड के बिना "ऑब्जेक्ट-ओरिएंटेड" प्रोग्रामिंग को लागू कर सकते हैं?


29

मान लें कि हम किसी बैंक में "खाता" का संक्षिप्त विवरण देना चाहते हैं। यहाँ एक दृष्टिकोण है, functionपायथन में किसी वस्तु का उपयोग करना :

def account():
    """Return a dispatch dictionary representing a bank account.

    >>> a = account()
    >>> a['deposit'](100)
    100
    >>> a['withdraw'](90)
    10
    >>> a['withdraw'](90)
    'Insufficient funds'
    >>> a['balance']
    10
    """
    def withdraw(amount):
        if amount > dispatch['balance']:
            return 'Insufficient funds'
        dispatch['balance'] -= amount
        return dispatch['balance']
    def deposit(amount):
        dispatch['balance'] += amount
        return dispatch['balance']
    dispatch = {'balance': 0,
                'withdraw': withdraw,
                'deposit': deposit}
    return dispatch

यहां एब्सट्रैक्शन (यानी, classपायथन में कीवर्ड) का उपयोग करके एक और दृष्टिकोण दिया गया है :

class Account(object):
    """A bank account has a balance and an account holder.

    >>> a = Account('John')
    >>> a.deposit(100)
    100
    >>> a.withdraw(90)
    10
    >>> a.withdraw(90)
    'Insufficient funds'
    >>> a.balance
    10
    """



    def __init__(self, account_holder):
        self.balance = 0
        self.holder = account_holder

    def deposit(self, amount):
        """Add amount to balance."""
        self.balance = self.balance + amount
        return self.balance

    def withdraw(self, amount):
        """Subtract amount from balance if funds are available."""
        if amount > self.balance:
            return 'Insufficient funds'
        self.balance = self.balance - amount
        return self.balance

मेरे शिक्षक ने classकीवर्ड शुरू करके और हमें इन बुलेट पॉइंट्स को दिखाते हुए विषय "ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग" शुरू किया :

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग

मॉड्यूलर कार्यक्रमों के आयोजन के लिए एक विधि:

  • अमंगल बाधाएं
  • संदेश देना
  • सूचना और संबंधित व्यवहार को एक साथ बांधना

क्या आपको लगता है कि उपरोक्त परिभाषा को पूरा करने के लिए पहला तरीका पर्याप्त होगा? यदि हाँ, तो हमें classऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग करने के लिए कीवर्ड की आवश्यकता क्यों है ?


2
खुशी है कि आप सहमत हैं। =) हालांकि मैं पायथन को अच्छी तरह से जवाब देने के लिए पर्याप्त रूप से नहीं जानता, आपको यह जानने में रुचि हो सकती है कि जावास्क्रिप्ट में OOP करने का विशिष्ट तरीका आपके द्वारा वर्णित "फ़ंक्शन ऑब्जेक्ट" के समान है (हालांकि हमारे पास प्रोटोटाइप विरासत भी है जो प्रत्येक वस्तु पर प्रत्येक विधि की अलग-अलग प्रतियां होने के बजाय वस्तुओं को "साझा" करने की अनुमति देता है; मुझे लगता है कि पायथन classएक समान अनुकूलन करता है)।
Ixrec

यदि आप एक विस्तृत उत्तर चाहते हैं, तो आपको एक अन्य प्रश्न पूछना चाहिए या चैट रूम में शामिल होना चाहिए, लेकिन संक्षिप्त उत्तर है (यदि आप पूरी तरह से प्रोटोटाइप विरासत, सरणियों आदि को अनदेखा करते हैं) जो मूल रूप से सच है; अधिकांश जेएस वस्तुएं कुछ भी नहीं हैं लेकिन स्ट्रिंग कुंजियों के शब्दकोश मनमाने मूल्यों के लिए हैं। foo.bar()आमतौर पर समान है foo['bar'](), और दुर्लभ अवसरों पर बाद का वाक्य-विन्यास वास्तव में उपयोगी है।
Ixrec


8
यह OOP की एक बुनियादी समझ के लिए अपने रास्ते पर एक महत्वपूर्ण सवाल है। यदि आप रुचि रखते हैं, तो आप मेरा एक ब्लॉग पोस्ट पढ़ सकते हैं जहाँ मैं भाषा के किसी भी ओओपी भाग पर भरोसा किए बिना जावास्क्रिप्ट में एक सरल ऑब्जेक्ट सिस्टम बनाता हूं। आपके पहले उदाहरण में एक महत्वपूर्ण कमी है: आप कहां लिखेंगे object['method'](args), पायथन ऑब्जेक्ट वास्तव में इसके बराबर है object['method'](object, args)। यह तब प्रासंगिक हो जाता है जब एक बेस क्लास चाइल्ड क्लास में तरीकों को कॉल करता है, जैसे कि रणनीति पैटर्न में।
आमोन

13
जैसा कि अन्य ने उल्लेख किया है, यह OOP के बारे में एक अवधारणात्मक प्रश्न है। मैं यह ध्यान रखना चाहूंगा कि यह ध्यान में नहीं आता है कि वास्तविक बैंक बैंक खातों का प्रतिनिधित्व कैसे करते हैं। बैंकों के पास एक परिवर्तनशील "खाता" ऑब्जेक्ट नहीं है जो डेबिट और क्रेडिट करते समय बदलता है; उनके पास केवल लेन-देन की सूची है, और फिर लेनदेन की सूची से शेष राशि की गणना करें। एक अच्छे व्यायाम के रूप में, उस तंत्र को विभिन्न भाषाओं में लागू करने का प्रयास करें।
एरिक लिपर्ट

जवाबों:


66

बधाई हो! आपने अच्छी तरह से ज्ञात तथ्य को फिर से खोज लिया कि विशिष्ट प्रोग्रामिंग भाषा समर्थन के बिना ऑब्जेक्ट ओरिएंटेशन किया जा सकता है। यह मूल रूप से उसी तरह की वस्तुएं हैं जिन्हें इस क्लासिक टेक्स्ट बुक में स्कीम में पेश किया गया है । ध्यान दें कि स्कीम में एक classकीवर्ड या किसी प्रकार का समतुल्य नहीं है, और ऑब्जेक्ट्स को बिना कक्षाओं के भी बनाया जा सकता है।

हालांकि, ऑब्जेक्ट ओरिएंटेड प्रतिमान इतना सफल था कि बहुत सारी भाषाएं - और पायथन कोई अपवाद नहीं है - इसके लिए अंतर्निहित समर्थन प्रदान करें। यह बस डेवलपर्स के लिए प्रतिमान का उपयोग करना और उस भाषा के लिए ऑब्जेक्ट ओरिएंटेशन का एक मानक रूप प्रदान करना आसान बनाता है। यह मूल रूप से एक ही कारण है कि बहुत सारी भाषाएं एक forलूप प्रदान करती हैं , हालांकि इसे whileकोड के एक या दो अतिरिक्त लाइनों के साथ लूप का उपयोग करके अनुकरण किया जा सकता है - बस उपयोग में आसानी


"उस भाषा के लिए ऑब्जेक्ट ओरिएंटेशन का एक मानक रूप प्रदान करने के लिए" क्या मैं वहां जावास्क्रिप्ट की आलोचना सुनता हूं? ;)
jpmc26

1
@ jpmc26: जानबूझकर नहीं। और ऐसा लगता है कि कुछ व्यापक रूप से स्वीकृत मानक हैं कि कैसे जावास्क्रिप्ट में ऑब्जेक्ट बनाए जाते हैं।
डॉक ब्राउन

@overexchange: क्या आपके पास पूछने के लिए एक प्रश्न है?
डॉक ब्राउन

1
@overexchange: ठीक है, OOP का मतलब क्या बहस का विषय है, विचार के विभिन्न स्कूल हैं, लेकिन SICP की परिभाषा आपके प्रश्न में 3 बुलेट बिंदुओं से बहुत अधिक है। यह निश्चित रूप से अमूर्तता के निर्माण के बारे में है, लेकिन अंक 2 और 3 को मत भूलना। हां, ओओपी अवधारणा "राज्य परिवर्तन" को संलग्न करती है, लेकिन यह "अपरिवर्तनीय वस्तुओं" की अवधारणा को भी अनुमति देती है (जैसे जावा या सी # में स्ट्रिंग वर्ग, पायथन) कुछ परिवर्तनशील और कुछ अपरिवर्तनीय डेटा प्रकार भी हैं)। और आपके प्रश्न में आपका पहला उदाहरण उस विक्षेप के साथ-साथ आपके दूसरे उदाहरण की भी पुष्टि करता है।
डॉक ब्राउन

2
@overexchange: यह Alain Kay की ऑब्जेक्ट ओरिएंटेशन (छोटी टॉक लैंग्वेज का आविष्कारक) की परिभाषा पर वापस जाता है। आपको इस stackoverflow.com/questions/2347973/… पूर्व SO लेख में एक व्यापक उत्तर मिलेगा । SICP अर्थों में IMHO "वस्तुओं के बीच संदेश" बस एक "परिभाषित संचार प्रोटोकॉल" के माध्यम से सीधे किसी वस्तु के आंतरिक डेटा तक पहुंचने का मतलब नहीं है। पायथन जैसी ओओ भाषाओं में इसका अर्थ केवल "एक वस्तु की विधि को कॉल करना" हो सकता है।
डॉक ब्राउन

13

मैं सहमत हूँ कि पहली परिभाषा आपके शिक्षक द्वारा किए गए तीन बिंदुओं को संतुष्ट करती है। मुझे नहीं लगता कि हमें किसी भी चीज़ के लिए क्लास कीवर्ड की ज़रूरत है। कवर के तहत, एक और वस्तु क्या है लेकिन डेटा के साथ काम करने के लिए विभिन्न प्रकार के डेटा और फ़ंक्शन के साथ एक डेटा संरचना है? बेशक, कार्य डेटा के रूप में अच्छी तरह से कर रहे हैं ..

मैं और भी आगे जाऊंगा और कहूंगा कि ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग करना आपकी भाषा द्वारा प्रदान किए जाने वाले कीवर्ड पर इतना निर्भर नहीं है , आप चाहें तो सी में ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग कर सकते हैं! वास्तव में, लिनक्स कर्नेल ऐसी तकनीकों को नियुक्त करता है।

यहां आप क्लास कीवर्ड से क्या अनुमान लगा सकते हैं, कि भाषा इस तरह के निर्माण के लिए समर्थन प्रदान करती है, और आपको कार्यक्षमता को फिर से लागू करने के लिए सभी हुप्स के माध्यम से ज़रूरत नहीं है (जो कि बहुत ही मजेदार काम है अपने आप!)। सभी प्रकार की चीनी का उल्लेख नहीं करने के लिए आपको मिल सकता है।


विरासत के बारे में क्या? क्या हम वास्तविक समय में उपप्रकारों / सुपरपेप्स के बारे में महत्वपूर्ण हैं? मेरा पहला तरीका यह मनोरंजन नहीं कर सकता है !!
ओवरएक्सचेंज

5
वंशानुक्रम OOP के लिए किसी भी तरह से आवश्यक नहीं है। आप अपने पहले उदाहरण में विरासत को भी लागू कर सकते हैं। यह बहुत "साफ" नहीं है, लेकिन सभी समान संभव है।
Zavior

3
@Zavior कि टिप्पणी मुझे VB6 के बारे में सोचता है। विरासत के बिना उन्मुख वस्तु वास्तव में कम साफ कोड के लिए बनाती है, इसे हल्के ढंग से डालने के लिए।
रबडकॉक

1
@overexchange जब आप इसके बारे में सोचते हैं, तो वंशानुक्रम सभी वर्गों के बीच सामान्य कोड / व्यवहार साझा करने के बारे में होता है। कुछ भी नहीं आप सभी कोड को दोहराने से रोकता है। हालांकि बनाए रखने के लिए सुपर भयानक होगा। एक कारण है कि विरासत क्यों मौजूद है :)
Zavior

1
@Zavior अपने सबसे बुनियादी रूप में "सबक्लासिंग" एक अमूर्तता है जो कहती है "इससे पहले कि आप उच्च-आदेश प्रेषण-और-डेटा-फ़ंक्शन को वापस कर रहे हैं जो मैं यहां परिभाषित कर रहा हूं (जो हम दिखावा करेंगे" वर्ग "हा है" हा), '' सुपरफैस '' द्वारा संदर्भित 'सुपरक्लास' प्रेषण-और-डेटा-होने-फ़ंक्शन को तुरंत करें। वास्तव में यह सब है। जब यह बहु-वंशानुक्रम को अनुभव करने के लिए आता है, तो यह वास्तव में अभी भी यह सब है, लेकिन इस चेतावनी के साथ कि आप "हीरे की समस्या" का परिचय देते हैं, यही कारण है कि एकाधिक विरासत चूसता है।
zxq9

9

निःसंदेह तुमसे हो सकता है!

सेल्फ प्रोग्रामिंग भाषा एक गतिशील प्रोटोटाइप-आधारित ऑब्जेक्ट ओरिएंटेड भाषा है जिसमें सब कुछ एक ऑब्जेक्ट है और कक्षाओं या जो भी हो, का कोई अर्थ नहीं है। यह प्रोटोटाइप ऑब्जेक्ट्स के विचार में केंद्रित है और ऑब्जेक्ट बनाने के तरीके के टेम्प्लेट के रूप में कक्षाओं के बजाय उन्हें क्लोन करने के विचार।

अधिक जानकारी के लिए आपको http://www.selflanguage.org/ की जाँच करनी चाहिए । मुझे लगता है कि यह बहुत दिलचस्प है और अगर आपको OOP पसंद है तो किसी चीज़ की जाँच करना अच्छा है जो कि आम नहीं है।


0

हमेशा नहीं: यह भाषा पर निर्भर करता है। आपने पायथन में ऐसा करने की क्षमता का प्रदर्शन किया है लेकिन (यदि आपके प्रश्न का अर्थ पायथन टैग के बावजूद भाषा अज्ञेय होना है) तो सभी भाषाएँ ऐसा नहीं कर सकती हैं। उदाहरण के लिए, जावा, ज्यादातर नहीं कर सकता। उस वर्ग की उपेक्षा करना जिसमें मुख्य होता है, वर्ग कीवर्ड के बिना मुख्य के भीतर परिभाषित किसी वस्तु पर मनमाने तरीके / फ़ील्ड को परिभाषित करने का कोई तरीका नहीं है। हालांकि अनाम कक्षाएं मौजूद हैं, उन्हें एक इंटरफ़ेस की आवश्यकता होती है और इंटरफ़ेस में परिभाषित लोगों को छोड़कर उनके पास कोई सार्वजनिक सदस्य नहीं हो सकता है। हालांकि कस्टम इंटरफेस को परिभाषित करना संभव है, फिर उनके लिए अनाम कक्षाएं बनाएं, यह प्रभावी रूप से एक वर्ग का उपयोग करने की तुलना में समान (लेकिन कम सुविधाजनक) है।

डॉक्टर ब्राउन के पास एक शानदार जवाब है लेकिन मैं जिस बिंदु को बनाने की कोशिश कर रहा हूं वह यह है कि मुझे यकीन है कि कम से कम एक भाषा है जो आपके समाधान की अनुमति नहीं देगी।


एक शुरुआत के रूप में, "ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग" अवधारणा को सीखने के लिए, हाँ मैं भाषा अज्ञेय बनने की कोशिश कर रहा हूं। मुझे लगता है कि "डॉक ब्राउन" ने उसी तर्ज पर उत्तर दिया है, उन्होंने मुझे sicp टेक्स्ट-च्वॉइस पढ़ा, जिसका किसी भी भाषा वाक्य रचना से कोई लेना-देना नहीं है।
ओवरएक्सचेंज

मेरी इच्छा है कि मैं एक ऐसी भाषा का नाम दूं जिसे मेरे उत्तर को मान्य करने के लिए कक्षाओं का उपयोग करने की आवश्यकता हो। लेकिन मैं केवल कुछ भाषाओं को जानता हूं और अफसोस जावा आसपास काम करने की अनुमति देता है। C ++ में स्ट्रक्चर्स और जावास्क्रिप्ट फ़्लैट आउट है जो आपने प्रदर्शित किया है। मुझे संदेह है कि स्मॉलटॉक और एफिल को क्लास की आवश्यकता हो सकती है क्योंकि मैंने सुना है कि वे सख्ती से संरचित हैं।
स्काईस्पीरल 7

डॉक्टर ब्राउन के रूप में, अगर मैंने स्कीम का उपयोग करना सीखा था, तो मैंने यह सवाल नहीं पूछा होगा। दुर्भाग्य से, एसआईसीपी पाठ्यक्रम का संस्करण जो मैं सीख रहा हूं वह अजगर का उपयोग करता है।
ओवरएक्सचेंज

1
हर वैध जावा प्रोग्राम में classकीवर्ड होना चाहिए ताकि बहुत आश्चर्य न हो। लेकिन आप जावा के ऑब्जेक्ट सिस्टम के शीर्ष पर अपनी खुद की वस्तु प्रणाली को लागू कर सकते हैं, हालांकि मुझे नहीं पता कि आप ऐसा क्यों करना चाहते हैं।
ब्रायन गॉर्डन

1. जावा इस संबंध में वास्तव में विशेष है, क्योंकि यह केवल अन्य सभी खोजशब्दों को फेंक दिया है जो कि कस्टम डेटा संरचनाओं को बनाने के लिए उपयोग किया जा सकता है। लगभग सभी अन्य भाषाएं जिन्हें मैं जानता हूं उनके पास रिकॉर्ड या क्लोजर हैं। 2. जावा में भी, आप एक अरै से निर्मित मेमोरी पर प्रोग्राम कर सकते हैं । और आप उस कीवर्ड के उपयोग से ऑब्जेक्ट ओरिएंटेशन को लागू कर सकते हैं , classक्योंकि भाषा के लिए आपको अपने कार्यों को कक्षाओं में रखना होगा। बेशक, यह अत्यंत सिद्धांतवादी है, लेकिन जावा में भी आप बिल्ट वर्ग के बिना ऑब्जेक्ट ओरिएंटेशन कर सकते हैं!
cmaster

0

आपके शिक्षक की परिभाषा पूरी तरह से ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के सबसे महत्वपूर्ण बिंदु को याद करती है, एक चीज जो इसे उपयोगी और अद्वितीय बनाती है। "संदेश पासिंग" स्मालटाक लोगों द्वारा सपना देखा गया बकवास का एक गुच्छा है, और यह हर जगह असफल हो गया है। OOP की असली शक्ति Liskov प्रतिस्थापन के रूप में जानी जाती है , और जबकि अवधारणा का वर्णन और समझने में काफी सरल है, अंतर्निहित कार्यान्वयन पर्याप्त जटिल है कि भाषा-स्तर के समर्थन के बिना सही तरीके से करना असंभव है।

लिस्कोव प्रतिस्थापन का विचार यह है कि कहीं भी जहां आपका कोड एक निश्चित प्रकार के एक चर की उम्मीद कर रहा है, उसे उस प्रकार से प्राप्त किसी भी प्रकार को स्वीकार करने में सक्षम होना चाहिए और अभी भी व्युत्पन्न प्रकार के विवरण का ज्ञान होने के बिना सही ढंग से काम करना चाहिए।

उदाहरण के लिए, GUI चौखटे सभी जगह पर Liskov प्रतिस्थापन का उपयोग करते हैं। उनके पास एक आधार Controlवर्ग है जो "किसी भी नियंत्रण" का प्रतिनिधित्व कर सकता है, जो एक ऐसे इंटरफ़ेस को परिभाषित करता है, जो उपयोगकर्ता इनपुट के लिए ड्राइंग, आकार बदलने और प्रतिक्रिया करने जैसी बुनियादी क्रियाओं के बारे में जानता है। यदि आप किसी नियंत्रण पर क्लिक करते हैं, तो UI फ़्रेमवर्क इस Clickबात की परवाह किए बिना नियंत्रण में एक विधि को कॉल करेगा कि यह किस प्रकार का नियंत्रण है, और फिर नियंत्रण को अपनी कक्षा के लिए उपयुक्त तरीके से क्लिक को संभालने दें। एक Buttonनियंत्रण को पूरी तरह से अलग करना चाहिए जब एक TextBoxनियंत्रण पर क्लिक किया जाता है , केवल एक उदाहरण देने के लिए।

तो हाँ, आप उपरोक्त वर्णित नेस्ट फ़ंक्शंस ट्रिक का उपयोग करके वस्तुओं के समान कुछ बना सकते हैं, लेकिन क्योंकि आप विरासत और लिस्कोव प्रतिस्थापन प्राप्त नहीं कर सकते हैं, यह सही OOP के लिए एक अत्यंत सीमित विकल्प है।


C भाषा में, मैं 'संरचित माता-पिता {}' और फिर 'संरचित बालक {संरचित माता-पिता * ptr?}' नहीं कह सकता? क्या यह गैर-ओप भाषा वाक्य रचना में विरासत नहीं है?
ओवरएक्सचेंज

@overexchange: यह एक गैर-OO है जो इसे नकली करने का प्रयास करता है, लेकिन संकलक आपको दूसरे के लिए एक विकल्प नहीं देगा । (आप child*एक फ़ंक्शन को पास कर सकते हैं जो parent*एक तर्क के रूप में लेता है , कम से कम टाइपकास्ट के बिना नहीं।) और इससे भी बदतर, सी संरचनाओं में उनके लिए बाध्य तरीके नहीं हो सकते हैं, और वर्चुअल तरीकों के लिए कोई समर्थन नहीं है , जो हैं Liskov प्रतिस्थापन कार्य का जादू क्या है, इसलिए आपको हाथ से VMTs का निर्माण करना होगा, जो कि एक जटिल प्रक्रिया है जिसे पेंच करना आसान है।
मेसन व्हीलर

1
लिनक्स कर्नेल में कई OO तकनीकों का अनुकरण होता है, जिन्हें सभी को भाषा समर्थन के बिना मैन्युअल रूप से कोडित करना होता है। इससे बग के लिए बहुत सारे अवसर पैदा होते हैं, जो लिनक्स होने के नाते, लिनुस लॉ के एक उदार अनुप्रयोग द्वारा प्रतिसंतुलित है। हां, ऐसा करना संभव है - ट्यूरिंग समतुल्यता यह साबित करती है - लेकिन मेरा कहना है कि भाषा के समर्थन के बिना अधिकार प्राप्त करना बेहद कठिन है। साथ ही, C के बारे में ये सारे सवाल क्यों जब सवाल पायथन के बारे में था? सी में पहले स्थान पर नेस्टेड फ़ंक्शन ट्रिक करना संभव नहीं है।
मेसन व्हीलर

1
@overexchange जावा कब से "प्रोग्रामर पैराडाइज" है?
ब्रैंडिन

1
मैसेज पासिंग स्मॉलटाकल, एरलैंग, या यहां तक ​​कि जावा-शैली ओओपी सिस्टमों में भी विफलता नहीं हुई है, जहां "संदेश" का अर्थ "फ़ंक्शन कॉल" (क्यूटी के संकेत और स्लॉट के साथ कुछ अलग है) शब्द "संदेश का उपयोग करते हुए वी.एस. पुराने जावा मार्केटिंग" जब इसका मतलब है "विधि कॉल")। संदेश! = फ़ंक्शन कॉल। वास्तविक संदेशन केवल सफल नहीं है, यह एकमात्र तरीका प्रतीत होता है जिसे हम सामूहिक रूप से समवर्ती और मजबूत सिस्टम लिखना जानते हैं। यह 'क्लास' कीवर्ड के बिना जावा-शैली OOP को लागू करने के लिए रूढ़िवादी है। यह किया जा सकता है। यह हमेशा उपयोगी नहीं होता है। मैसेजिंग प्वाइंट के बगल में है।
zxq9

-1

त्वरित संक्षिप्त उत्तर

हां, प्रोग्रामर "क्लासेस" के बिना ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग लागू कर सकते हैं।

लंबे बोरिंग व्यापक वर्णनात्मक उत्तर

"ऑब्जेक्ट ओरिएंटेशन" की कई विविधताएं हैं, जैसा कि कहा गया है, कई प्रोग्रामर के दिमाग में आने वाली पहली अवधारणा "कक्षाएं" है।

हां, प्रोग्रामर "क्लासेस" के बिना ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग को लागू कर सकते हैं, लेकिन, प्रत्येक प्रोग्रामिंग भाषा से सुविधाओं और सीमाओं तक सीमित है।

आपकी पोस्ट को पायथन के रूप में टैग किया गया है , इसलिए, आपका प्रश्न शीर्षक "पायथन में कक्षाओं के बिना ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग कैसे लागू करें" अधिक हो सकता है।

मैं वर्तमान में "ऑब्जेक्ट और क्लास ओरिएंटेड प्रोग्रामिंग" वाक्यांश का उपयोग करता हूं, जावास्क्रिप्ट की "प्रोटोटाइप", या विज़ुअल बेसिक "आधारित" जैसे अन्य विविधताओं से पहचानने के लिए, या "फ़ंक्शनल" का उपयोग करके "शुद्ध सी" में अनुकरण करता हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.