ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग सिंटैक्स फीचर्स के बारे में नहीं है, यह एक कोडिंग और डिज़ाइन फिलॉस्फी है। इसके मूल में एक वस्तु की अवधारणा है , जो एक निर्माण है जो उस पर कार्य करने के लिए दिनचर्या के साथ समूह (या, आपके दृष्टिकोण पर निर्भर करता है, संदेशों की प्रतिक्रिया)। OOP के अन्य महत्वपूर्ण पहलू है कैप्सूलीकरण : अपारदर्शी संरचनाओं और उन के माध्यम से जोड़ने अच्छी तरह से परिभाषित इंटरफेस में रैपिंग कार्यान्वयन विवरण। OOP सिद्धांत में बहुत कुछ और सब कुछ इन दो मूल सिद्धांतों पर वापस जाता है।
तो, कोई भी भाषा जो किसी भी तरह से वस्तुओं (मॉडल जिसमें डेटा और कोड दोनों होते हैं) और एनकैप्सुलेशन का उपयोग ओओपी करने के लिए किया जा सकता है। उदाहरण के लिए, C में आप फंक्शन पॉइंटर्स का उपयोग स्ट्रक्चर्स में फंक्शन्स को स्टोर करने के लिए कर सकते हैं, और आप रूकावट को महसूस करने के लिए हैडर / सोर्स फाइल सिस्टम का उपयोग कर सकते हैं। यह सुविधाजनक नहीं है, लेकिन यह OOP करने के लिए पर्याप्त है। आप शायद ओस्को करने में हास्केल या एमएल जैसे कुछ भी मोड़ सकते हैं, और मुझे आश्चर्य नहीं होगा अगर कोई असेंबली में ओओपी करने के तरीके के साथ आ सकता है।
व्यावहारिक रूप से, हालांकि, एक भाषा को 'ऑब्जेक्ट-ओरिएंटेड' कहा जा सकता है, अगर यह स्पष्ट ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के लिए सिंटैक्स सुविधाओं का एक पूरा सेट प्रदान करता है। आमतौर पर, इसका मतलब है कि इस तरह की भाषा होनी चाहिए: * किसी वस्तु की एक धारणा * विधि कॉलिंग या संदेश पास करने की एक धारणा * वस्तु सदस्यों तक पहुंच को नियंत्रित करने का एक सहज और सरल तरीका * इंटरफेस को परिभाषित करने का एक सहज और सीधा तरीका
यदि यह OOP सिद्धांतों का पालन करता है और उपलब्ध OOP सिंटैक्स का उपयोग करता है तो नतीजतन, मैं कोड ऑब्जेक्ट-ओरिएंटेड का एक टुकड़ा कहूंगा।
BTW।, आपका कोड उदाहरण शायद बहुरूपता और आभासी कार्यों का उपयोग करता है , हालांकि सी सिंटैक्स इसे स्पष्ट नहीं करता है। मैं SDL का विशेषज्ञ नहीं हूं, लेकिन मैं उम्मीद करूंगा कि SDL_surface
विभिन्न प्रकार की सतहों का प्रतिनिधित्व करने में सक्षम होने के लिए, प्रत्येक अपने स्वयं के कार्यान्वयन के विशिष्ट सेट के साथ - एक मेमोरी बिटमैप पर कुछ ब्लिटिंग और स्क्रीन की सतह पर ब्लिटिंग के लिए मौलिक रूप से अलग होना आवश्यक है। कोड, लेकिन इंटरफ़ेस ( SDL_surface*
एक तर्क के रूप में कार्य करने वाले ) समान रहता है। ठीक उसी तरह, यह एनकैप्सुलेशन को भी लागू करता है: आप किसी सतह के अंतर्निहित प्रतिनिधित्व को सीधे एक्सेस नहीं कर सकते हैं, आपको फ़ंक्शंस से गुजरना होगा जो जानते हैं कि कैसे संभालना है SDL_surface
, क्योंकि यह सब आपके पास है। यह एक अच्छा उदाहरण है कि आप C में OOP कैसे करेंगे।