2009-10-28 16 views
9

मैंने छोटी बात पूरी तरह ऑब्जेक्ट उन्मुख होने के बारे में पढ़ा .. क्या सी ++ भी पूरी तरह उन्मुख ऑब्जेक्ट है? यदि नहीं .. तो क्यों ??क्या सी ++ पूरी तरह उन्मुख भाषा का ऑब्जेक्ट है?

+0

'छोटी बात पूरी तरह ऑब्जेक्ट उन्मुख' है, आपने इसे कहां से पढ़ा? बस उत्सुक। –

+0

इसका मतलब क्या है "पूरी तरह से"? –

+0

रूबी के बारे में क्या? – ukanth

उत्तर

27

नहीं, ऐसा नहीं है। आप एक ऑब्जेक्ट का उपयोग किए बिना एक वैध, अच्छी तरह से कोडित, उत्कृष्ट स्टाइल सी ++ प्रोग्राम भी लिख सकते हैं।

सी ++ ऑब्जेक्ट उन्मुख प्रोग्रामिंग का समर्थन करता है, लेकिन ओओ भाषा के लिए आंतरिक नहीं है। वास्तव में, मुख्य कार्य किसी ऑब्जेक्ट का सदस्य नहीं है।

स्मॉलटॉक या जावा में, आप कम से कम एक वर्ग के बिना अपने जूते (या "हैलो, दुनिया") लिख नहीं सकते हैं।

(बेशक, एक, जावा एक पूरी तरह से वस्तु उन्मुख भाषा भी होने के बारे में लोगों का तर्क कर सकते हैं, क्योंकि इसके पुरातन (जैसे कि, पूर्णांक) नहीं वस्तुओं रहे हैं।)

+0

इसमें ऐसी सुविधाएं भी हैं जो इसे सामान्य प्रोग्रामिंग भाषा जैसे टेम्पलेट्स बनाती हैं। लेकिन मैंने कई स्कूल स्तरीय पाठ्य पुस्तकों को देखा है जो सी ++ को ऑब्जेक्ट ओरिएंटेड लैंग्वेज के रूप में जोड़ते हैं। समस्या तब होती है जब लेखक ऐसा करते हैं, पाठक (मुख्य रूप से छात्र) आसानी से भूल जाते हैं कि सी ++ कई प्रकार की प्रोग्रामिंग भाषाओं के लिए भी फिट बैठता है। – sjsam

1

ओओएल परिभाषित करें। यदि आप कक्षाओं आदि का उपयोग करना चाहते हैं, तो सी ++ दूसरों के बीच प्रोग्रामिंग की ओओ-स्टाइल का समर्थन करता है। ऐसा कुछ भी नहीं है जो आपको कक्षाओं का उपयोग न करने से रोकता है। जावा ओटीओएच, लेकिन वर्गों की अनुमति नहीं देता है। (हाँ, मुझे पता है कि जावा एफपी का समर्थन करता है।)

+1

"हां, मुझे पता है कि जावा एफपी का समर्थन करता है"। यह मेरे लिए नया है। क्या आपके पास जावा में एफपी का कोई उदाहरण है? –

+0

एक साधारण खोज मुझे कुछ लेख प्राप्त करती है। ऐसा एक: dirkgently

+0

डार्क। मुझे लगता है कि आप जावा का समर्थन कर सकते हैं ** प्रक्रियात्मक ** प्रोग्रामिंग? Ne? –

3

सी ++ में एक 'सी' बोली है जो एक सबसेट के रूप में है, जो कोड की पूरी प्रक्रियात्मक शैली की अनुमति देता है।

0

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

शुद्ध ऑब्जेक्ट उन्मुख भाषाओं के उदाहरण सी # और जावा हैं।

+1

उनमें से कोई भी आदिम डेटाटाइप उपयोगकर्ता परिभाषित डेटाटाइप के समान वही अर्थशास्त्र का पालन नहीं करते हैं। उन पर संचालन संदेशों को पारित करने के संदर्भ में परिभाषित नहीं किया जाता है और उन्हें व्युत्पन्न कक्षा में ओवरलोड या पुनः परिभाषित नहीं किया जा सकता है। – Omnifarious

+0

मुझे लगता है कि आपने गलत पोस्ट पर टिप्पणी की है। ;) –

+1

नहीं, ओमनी कह रही है कि न तो सी # और न ही जावा शुद्ध ओओ हैं क्योंकि उनके पास int और long जैसी चीजें हैं जो * ऑब्जेक्ट्स नहीं हैं। – paxdiablo

0

नहीं, यह पूरी तरह ऑब्जेक्ट उन्मुख भाषा नहीं है। सी ++ में विशेष रूप से आदिम डेटाटाइप में नियम होते हैं जो अक्सर डेटाटाइप से अलग होते हैं जो आदिम नहीं होते हैं। इसके अतिरिक्त उन कार्यों को बनाना संभव है जो किसी भी डेटाटाइप से जुड़े नहीं हैं। अन्य तरीकों से असंख्य हैं जिनमें सी ++ शुद्ध ऑब्जेक्ट उन्मुख भाषा नहीं है, लेकिन ये सबसे बड़े कारण हैं।

न तो जावा और न ही सी शुद्ध ऑब्जेक्ट उन्मुख भाषाएं हैं क्योंकि उनके पास आदिम डेटाटाइप हैं जो 'ऑब्जेक्ट' डेटाटाइप के समान अर्थशास्त्र का पालन नहीं करते हैं।

1

संक्षिप्त उत्तर नहीं है - सी ++ पूरी तरह से ओओ भाषा नहीं है। सी सीसेट का उपयोग करने के बिना भी आप "बिल्कुल नहीं" ओओपी लिख सकते हैं। ऐसा एक उदाहरण आपकी मुख्य विधि है - जो कि किसी भी वर्ग में निहित नहीं है।

मुख्य कारण यह है कि सी ++ सी से उत्पन्न हुआ - जब स्ट्रॉस्ट्रप ने उस भाषा को बनाया जिसकी वह सी (कक्षाओं के साथ) का एक नया संस्करण बनाने का लक्ष्य रख रही थी। असल में उन्होंने अपनी रचना को सी (सी 84) के नए स्वाद के रूप में प्रस्तुत करने की कोशिश की है।

1

बड़ा तर्क लोगों सी ++ की घोषणा के रूप में के खिलाफ है "शुद्ध" OO कि यह अभी भी कम से कम एक गैर OO बिट, main() की आवश्यकता है, और नहीं कुछ एक ऑब्जेक्ट (int, long एट अल) है।

यह संदेश-पासिंग प्रतिमान (सार्वजनिक सदस्यों) का उपयोग किए बिना हेरफेर के लिए किसी ऑब्जेक्ट की स्थिति का खुलासा करता है। यह वस्तुओं के encapsulation तोड़ता है।

जावा, दूसरी ओर, main() एक वर्ग की एक स्थिर विधि के रूप में है, इसलिए यह करीब है लेकिन इसमें अभी भी गैर-ऑब्जेक्ट चीजें हैं।

स्मॉलटॉक आमतौर पर शुद्ध के शुद्धतम के रूप में आयोजित लिंगुआ फ़्रैंका है, लेकिन मुझे टिप्पणी करने के बारे में पर्याप्त जानकारी नहीं है।

मैं, मैं जब तक मैं कोड को विकसित करने और अपने ग्राहकों को दे रहे थे :-)

+0

वास्तव में मुख्य की आवश्यकता नहीं है। यह सिर्फ एक प्रसिद्ध प्रविष्टि बिंदु है ताकि कमांड लाइन और (कुछ) जीयूआई लोड के बाद नियंत्रण पास न करें। –

+0

आपको * मुख्य * की आवश्यकता है, यह मानक द्वारा अनिवार्य है। – paxdiablo

0
निश्चित रूप से

नहीं के साथ पर मिलता है बुद्धिजीवियों के लिए तर्कों की उन तरह छोड़ जाते हैं !! यह आंतरिक डेटा प्रकारों का समर्थन करता है।

0

सी ++ कुछ भी नहीं है "कक्षाओं के साथ सी"। मैं अभी भी एक सी प्रोग्राम लिख सकता हूं और इसे .cpp फ़ाइल के रूप में सहेज सकता हूं। तो, निहितार्थ द्वारा सबूत कहता है "सी ++ पूरी तरह ऑब्जेक्ट उन्मुख भाषा नहीं है।"

संबंधित मुद्दे