"यदि आप वास्तव में OO चीनी चाहते हैं - C ++ का उपयोग करें" - यह पूछने पर मुझे मेरे एक मित्र से तत्काल प्रतिक्रिया मिली। मैं जानता हूं कि दो चीजें यहां गलत हैं। पहला OO 'चीनी' नहीं है, और दूसरा, C ++ ने C को अवशोषित नहीं किया है।
हमें सी में एक सर्वर लिखने की ज़रूरत है (सामने का छोर जो पायथन में होगा), और इसलिए मैं बड़े सी कार्यक्रमों को प्रबंधित करने के लिए बेहतर तरीके तलाश रहा हूं।
वस्तुओं के संदर्भ में एक बड़ी प्रणाली की मॉडलिंग करना, और ऑब्जेक्ट इंटरैक्शन इसे अधिक प्रबंधनीय, बनाए रखने योग्य और एक्स्टेंसिबल बनाता है। लेकिन जब आप इस मॉडल का सी में अनुवाद करने की कोशिश करते हैं जो वस्तुओं को सहन नहीं करता है (और बाकी सब कुछ), तो आपको कुछ महत्वपूर्ण निर्णयों के साथ चुनौती दी जाती है।
क्या आप अपने सिस्टम की ज़रूरतों के लिए OO सार प्रदान करने के लिए एक कस्टम लाइब्रेरी बनाते हैं? ऑब्जेक्ट्स, इनकैप्सुलेशन, इनहेरिटेंस, पॉलीमोर्फिज़्म, अपवाद, पब / सब (इवेंट्स / सिग्नल), नेमस्पेस, इंट्रोस्पेक्शन , आदि (उदाहरण के लिए GObject या COS ) जैसी चीजें ।
या, आप struct
अपने सभी ऑब्जेक्ट वर्गों (और अन्य अमूर्त) को तदर्थ तरीके से अनुमानित करने के लिए मूल सी कंस्ट्रक्शन ( और फ़ंक्शंस) का उपयोग करते हैं। (उदाहरण के लिए, एसओ पर इस प्रश्न के कुछ उत्तर )
पहला दृष्टिकोण आपको सी में अपने पूरे मॉडल को लागू करने के लिए एक संरचित तरीका देता है लेकिन यह जटिलता की एक परत भी जोड़ता है जिसे आपको बनाए रखना होगा। (याद रखें, जटिलता वह थी जिसे हम पहले स्थान पर वस्तुओं का उपयोग करके कम करना चाहते थे)।
मैं दूसरे दृष्टिकोण के बारे में नहीं जानता, और यह आपके लिए आवश्यक सभी अमूर्तियों का अनुमान लगाने में कितना प्रभावी है।
तो, मेरे सरल प्रश्न हैं: सी में ऑब्जेक्ट ओरिएंटेड डिज़ाइन को साकार करने में सबसे अच्छा अभ्यास क्या हैं। याद रखें कि मैं यह कैसे करने के लिए नहीं कह रहा हूं। यह और यह सवाल इसके बारे में बात करता है, और इस पर एक किताब भी है । मुझे जो कुछ अधिक दिलचस्पी है वह कुछ यथार्थवादी सलाह / उदाहरण हैं जो वास्तविक मुद्दों को संबोधित करते हैं जो इस डोंग को दिखाते हैं।
नोट: कृपया सलाह न दें कि C का उपयोग C ++ के पक्ष में क्यों नहीं किया जाना चाहिए। हम उस अवस्था में अच्छी तरह से आगे बढ़ चुके हैं।
extern "C"
और इसका उपयोग अजगर से किया जा सकता है। आप इसे मैन्युअल रूप से कर सकते हैं या आप इसके साथ SWIG की मदद ले सकते हैं । तो अजगर सामने वाले के लिए इच्छा सी ++ का उपयोग नहीं करने का कोई कारण नहीं है। इसलिए ऐसा नहीं है कि सी के साथ रहने के लिए कोई मान्य कारण नहीं हैं