आपका सेशन खत्म हो गया है

आपकी प्रगति और खरीदारी सुरक्षित हैं। जारी रखने के लिए दोबारा लॉगिन करें।

दोबारा लॉगिन करें
Aspirant Academy

MCQ

सी प्लस प्लस और जावा में ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग MCQ - उत्तर सहित अभ्यास प्रश्न

RAS/RPSC तैयारी के लिए सी प्लस प्लस और जावा में ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के 45 प्रश्न हल करें।

अभ्यास प्रश्न

प्र.1जावा में चेक्ड एक्सेप्शन के बारे में कौन-सा कथन सही है?

A उन्हें या तो कैच ब्लॉक में संभालना पड़ता है या थ्रोज़ क्लॉज में घोषित करना पड़ता है
B वे रनटाइमएक्सेप्शन के उपवर्ग होते हैं और कंपाइल करते समय उन्हें संभालना ज़रूरी नहीं होता
C जिस मेथड में वे उत्पन्न हों, उन्हें हमेशा उसी मेथड में पकड़ना पड़ता है
D वे केवल ऑब्जेक्ट बनाते समय ही उत्पन्न हो सकते हैं
व्याख्या

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

प्र.2C++ फाइल हैंडलिंग में, जब उसी फाइल स्ट्रीम ऑब्जेक्ट से इनपुट और आउटपुट दोनों ऑपरेशन करवाने हों, तो कौन-सी क्लास सबसे सीधे उपयुक्त है?

A ifstream
B fstream
C ofstream
D stringstream
व्याख्या

C++ की स्ट्रीम लाइब्रेरी सामान्य फाइल-स्ट्रीम भूमिकाओं को अलग करती है: इनपुट के लिए ifstream, आउटपुट के लिए ofstream और ऐसे फाइल स्ट्रीम के लिए fstream जो ओपन मोड के अनुसार इनपुट और आउटपुट दोनों संभाल सकते हैं। stringstream भी स्ट्रीम है, लेकिन वह फाइल के बजाय मेमोरी में रखे स्ट्रिंग बफर का उपयोग करती है।

प्र.3C++ में बेस क्लास का पॉइंटर डिराइव्ड क्लास के ऑब्जेक्ट की ओर इशारा कर रहा है। यदि उसी पॉइंटर से फ़ंक्शन कॉल होने पर रन टाइम पर डिराइव्ड क्लास वाला कार्यान्वयन चलना हो, तो कौन-सी घोषणा ज़रूरी है?

A बेस क्लास में अलग पैरामीटर सूची के साथ उसी फ़ंक्शन को ओवरलोड करें।
B बेस क्लास में फ़ंक्शन को वर्चुअल घोषित करें और डिराइव्ड क्लास में उसका ओवरराइड रूप दें।
C पॉइंटर को पता देने से पहले डिराइव्ड क्लास के ऑब्जेक्ट को स्टैटिक घोषित करें।
D बेस क्लास के डेटा मेंबर पब्लिक कर दें, ताकि पॉइंटर उन्हें देख सके।
व्याख्या

C++ में बेस पॉइंटर या रेफ़रेंस से मिलने वाला रन टाइम पॉलीमॉर्फिज़्म वर्चुअल फ़ंक्शन पर निर्भर करता है। जब बेस क्लास किसी मेंबर फ़ंक्शन को वर्चुअल घोषित करती है और डिराइव्ड क्लास उसी सिग्नेचर का अपना रूप देती है, तो कॉल ऑब्जेक्ट के डाइनैमिक प्रकार के अनुसार भेजी जाती है। स्टोरेज अवधि, डेटा मेंबर की पहुँच या ओवरलोड सेट बदलने से डाइनैमिक बाइंडिंग नहीं बनती।

प्र.4सी प्लस प्लस की किसी बेस क्लास में कम से कम एक प्योर वर्चुअल फ़ंक्शन है। इस घोषणा से कौन-सा निष्कर्ष निकलता है?

A यदि सभी डेटा मेंबरों के डिफ़ॉल्ट मान हों, तो बेस क्लास के ऑब्जेक्ट सामान्य रूप से बनाए जा सकते हैं।
B कंपाइलर रन टाइम पर इस क्लास को जावा इंटरफ़ेस में बदल देता है।
C क्लास ऐब्स्ट्रैक्ट हो जाती है और ठोस डिराइव्ड क्लासों को प्योर वर्चुअल फ़ंक्शन का कार्यान्वयन देना होता है।
D क्लास के सभी मेंबर फ़ंक्शन अपने-आप प्राइवेट हो जाते हैं।
व्याख्या

प्योर वर्चुअल फ़ंक्शन सी प्लस प्लस क्लास में किसी ऐब्स्ट्रैक्ट ऑपरेशन को दर्शाता है। ऐसी क्लास का ऑब्जेक्ट सीधे नहीं बनाया जा सकता। किसी डिराइव्ड क्लास का ऑब्जेक्ट बनाने के लिए उसे विरासत में मिले सभी प्योर वर्चुअल फ़ंक्शन का कार्यान्वयन देना होता है। सी प्लस प्लस में एक्सेस के नियम बदले बिना या जावा इंटरफ़ेस का उपयोग किए बिना इंटरफ़ेस जैसा व्यवहार दर्शाने का यह एक प्रमुख तरीका है।

प्र.5C++ की Account क्लास में balance नाम का प्राइवेट डेटा मेंबर है। क्लास के बाहर से balance में नियंत्रित बदलाव की अनुमति देने का सबसे उचित ऑब्जेक्ट-ओरिएंटेड तरीका कौन-सा है?

A balance को पब्लिक कर दें ताकि हर फ़ंक्शन सीधे उसे मान दे सके।
B balance को केवल कंस्ट्रक्टर के भीतर लोकल वेरिएबल में रखें।
C balance को प्राइवेट रखें और ऐसे पब्लिक मेंबर फ़ंक्शन दें जो जाँच करके उसे बदलें।
D balance को ग्लोबल घोषित कर दें और सभी Account ऑब्जेक्ट उसे साझा करें।
व्याख्या

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

आपने 45 में से 5 नमूना प्रश्न देख लिए हैं

सी प्लस प्लस और जावा में ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग पर अनलिमिटेड अभ्यास RAS टेस्ट सीरीज़ + प्रैक्टिस पैक या गेट पास में मिलता है।

और प्रश्न

6C++ में बहुरूपी डिलीशन के लिए बनाए गए आधार वर्ग में सामान्यतः वर्चुअल डेस्ट्रक्टर होना क्यों ज़रूरी माना जाता है?

Aयह सभी व्युत्पन्न वर्गों को निजी इनहेरिटेंस इस्तेमाल करने के लिए बाध्य करता है।
Bयह सुनिश्चित करता है कि आधार-वर्ग पॉइंटर से व्युत्पन्न ऑब्जेक्ट हटाने पर सही डेस्ट्रक्टर-श्रृंखला चले।
Cयह व्युत्पन्न वर्ग के ऑब्जेक्ट बनने से रोकता है।
Dयह वर्ग के हर सदस्य फ़ंक्शन को स्टैटिक बना देता है।

7Java Swing के किसी बटन पर क्लिक होते ही कोड चलना चाहिए। सामान्य इवेंट-हैंडलिंग मॉडल के अनुसार सबसे सही तरीका कौन-सा है?

Aबटन की घोषणा के आसपास IOException पकड़ें, क्योंकि हर क्लिक फ़ाइल त्रुटि के रूप में आता है।
Bmain मेथड को ओवरराइड करें ताकि वह हर बटन इवेंट अपने-आप प्राप्त कर ले।
Cअनंत लूप में बटन को लगातार जाँचते रहें और देखें कि उसका लेबल बदला है या नहीं।
Dबटन के साथ एक ActionListener रजिस्टर करें और प्रतिक्रिया वाला कोड actionPerformed में रखें।

8जावा में क्लास की विरासत और इंटरफ़ेस के कार्यान्वयन के बीच अंतर को कौन-सा कथन सही ढंग से बताता है?

Aएक क्लास सीधे कई क्लासों से विरासत ले सकती है, लेकिन केवल एक इंटरफ़ेस लागू कर सकती है
Bइंटरफ़ेस में केवल कंस्ट्रक्टर हो सकते हैं और उनमें मेथड घोषित नहीं किए जा सकते
Cएक क्लास सीधे केवल एक सुपरक्लास से विरासत ले सकती है और कई इंटरफ़ेस लागू कर सकती है
Dकोई सबक्लास अपने सुपरक्लास के किसी भी सुलभ सदस्य को विरासत में नहीं ले सकती

9C++ में बेस-क्लास पॉइंटर से कॉल करने पर रन टाइम पर डिराइव्ड-क्लास वाला इम्प्लीमेंटेशन चलने के लिए कौन-सी शर्त ज़रूरी है?

Aबेस-क्लास फंक्शन स्टैटिक घोषित हो
Bऑब्जेक्ट केवल स्टैक पर आवंटित हो
Cबेस-क्लास का मेंबर फंक्शन वर्चुअल घोषित हो और डिराइव्ड क्लास में उसे ओवरराइड किया गया हो
Dडिराइव्ड-क्लास के मेंबर फंक्शन का नाम बेस-क्लास फंक्शन से अलग हो

10जावा में क्लासों के बीच इनहेरिटेंस को सही ढंग से कौन-सा कथन बताता है?

Aएक क्लास सीधे एक से अधिक ठोस क्लासों को एक्सटेंड कर सकती है।
Bसुपरक्लास के प्राइवेट फ़ील्ड हर सबक्लास में नाम से सीधे उपलब्ध हो जाते हैं।
Cकंस्ट्रक्टर बिल्कुल सामान्य इंस्टेंस मेथड की तरह विरासत में मिलते हैं।
Dसबक्लास अपनी सुपरक्लास के पहुँच-योग्य मेंबर विरासत में ले सकती है और विरासत में मिले इंस्टेंस मेथड का अपना रूप दे सकती है।

11class Printer : public Device { ... }; घोषणा में C++ की कौन-सी इनहेरिटेंस दिखाई गई है?

Aपब्लिक इनहेरिटेंस, जिसमें आधार के सार्वजनिक सदस्य व्युत्पन्न वर्ग के इंटरफेस में सार्वजनिक ही रहते हैं।
Bकंपोजिशन, क्योंकि प्रिंटर में डिवाइस डेटा सदस्य के रूप में है।
Cफ्रेंड इनहेरिटेंस, जिसमें प्रिंटर हर डिवाइस ऑब्जेक्ट का फ्रेंड बन जाता है।
Dमल्टिपल इनहेरिटेंस, क्योंकि हर व्युत्पन्न वर्ग के एक से अधिक आधार वर्ग होते हैं।

12जावा फ़ाइल हैंडलिंग में FileInputStream या BufferedReader जैसे ऑब्जेक्ट के लिए try-with-resources को क्यों प्राथमिकता दी जाती है?

Aयह पढ़ने के बाद फ़ाइल की सामग्री को इम्यूटेबल बना देता है
Bब्लॉक खत्म होने पर यह घोषित संसाधनों को अपने-आप बंद कर देता है
Cयह बाइनरी स्ट्रीम को अपने-आप कैरेक्टर स्ट्रीम में बदल देता है
Dयह गारंटी देता है कि हर IOException चुपचाप नज़रअंदाज़ हो जाएगा

13जावा इवेंट हैंडलिंग में लिस्नर ऑब्जेक्ट की मुख्य भूमिका क्या होती है?

Aवह ऐसी कॉलबैक मेथड्स लागू करती है जिन्हें रजिस्टर्ड इवेंट होने पर कॉल किया जाता है
Bवह इवेंट सोर्स को बदल देती है ताकि कोई कंपोनेंट इवेंट बना ही न सके
Cवह सभी रन-टाइम एक्सेप्शन को चेक्ड एक्सेप्शन में बदल देती है
Dवह प्रोग्राम से बनी हर इवेंट को स्थायी रूप से जमा करती है

14C++ प्रोग्राम में क्लास Shape का मेंबर फ़ंक्शन draw() वर्चुअल है। क्लास Circle, Shape से सार्वजनिक रूप से व्युत्पन्न है और draw() को ओवरराइड करती है। यदि Shape* p किसी Circle ऑब्जेक्ट की ओर संकेत करता है और p->draw() चलाया जाता है, तो इस कॉल का सबसे सही वर्णन कौन-सा है?

AShape::draw() और Circle::draw() दोनों बेस-से-डिराइव्ड क्रम में अपने-आप कॉल होते हैं।
Bdraw() को कॉल करने से पहले p को स्पष्ट रूप से Circle* में टाइप-कास्ट करना ज़रूरी है; इसके बिना यह कॉल अमान्य है।
CCircle::draw() कॉल होगा, क्योंकि बेस पॉइंटर से की गई वर्चुअल कॉल में ऑब्जेक्ट के वास्तविक प्रकार के आधार पर फ़ंक्शन चुना जाता है।
DShape::draw() हमेशा कॉल होगा, क्योंकि p का घोषित प्रकार Shape* है।

15जावा में try-catch से जुड़े finally ब्लॉक का मुख्य उपयोग क्या है?

Aयह अपवाद पदानुक्रम में नया उपवर्ग घोषित करता है।
Bयह try-catch प्रोसेसिंग के बाद चलने वाला कोड देता है, सामान्यतः संसाधन बंद करने जैसी सफाई के लिए।
Cयह हर चेक्ड अपवाद को अनचेक्ड अपवाद में बदल देता है।
Dइसमें वही एकमात्र कथन होना चाहिए जो अपवाद फेंक सकता है।

प्रोग्रामिंग एवं डेटा संरचना में और विषय

अन्य विषय देखें