2010-07-13 14 views
5

MasterExam से:जावा IS-एक रिश्ता परीक्षा प्रश्न भ्रम

कौन सा कथन सत्य हैं? (लागू होने वाले सभी चुनें)

A। है-एक रिश्ता हमेशा विरासत
B पर भरोसा करते हैं। एक रिश्ता हमेशा इंस्टेंस चर
C पर भरोसा करता है। एक रिश्ते हमेशा कम से कम दो वर्ग प्रकार
D पर आवश्यक है। एक रिश्ता हमेशा पर बहुलक
E पर भरोसा करता है। है-एक रिश्ता हमेशा कसकर युग्मित

सही उत्तर: ए, सी, डी

मैं कैसे ए, सी या डी के किसी भी सही हैं नहीं दिख रहा।

एक वस्तु वस्तु IS-A वस्तु। एक स्ट्रिंग ऑब्जेक्ट आईएस-ए स्ट्रिंग है। इनमें से प्रत्येक कथन में केवल एक वर्ग का प्रकार है और कोई विरासत या बहुरूपता लागू नहीं होती है।

क्या मेरा तर्क गलत है या क्या गलत हैं?

+1

क्या संदर्भ में यह प्रतीत होता है कक्षाओं के बीच संबंध निर्दिष्ट करता है? –

+0

जो मैंने दर्ज किया है वह पूरा प्रश्न है, समाप्त करना शुरू करें। – CodeClimber

+0

@ck - उस उपयोगी योगदान के लिए धन्यवाद – CodeClimber

उत्तर

1

आपका तर्क थोड़ा दूर है, क्योंकि यह संबंध वस्तुओं के लिए कक्षा पर लागू होता है।

एक स्ट्रिंग आईएस-ए ऑब्जेक्ट StringObject से विरासत में है। इसी प्रकार एक FileOutputStream IS-एक OutputStream IS-एक Object

आईएस-ए वर्गों और वस्तुओं के बीच कक्षाओं के बीच संबंध है।

+0

क्या आप विस्तारित कर सकते हैं? मुझे कक्षाओं और वस्तुओं के बीच भेद की प्रासंगिकता दिखाई नहीं दे रही है। एक फ़ाइलऑटपुटस्ट्रीम आईएस-ए आउटपुटस्ट्रीम आईएस-ए ऑब्जेक्ट - विरासत। इसके अलावा एक फ़ाइलऑटपुटस्ट्रीम आईएस-ए फ़ाइलऑटपुटस्ट्रीम - कोई विरासत नहीं है। उत्तर एक राज्य: "एक रिश्ता हमेशा विरासत पर भरोसा करता है"। – CodeClimber

+1

@dairemac: उदाहरण के लिए एक ईआर आरेख में इकाइयों के बीच एक 'आईएस-ए' रिश्ते का मॉडल किया गया है - उन संबंधों * हमेशा * विरासत में जाने पर विरासत बन जाते हैं। यूएमएल। आप उस ग्राफ में मंडलियों को आकर्षित नहीं करते हैं और सब कुछ अपने सबक्लास घोषित करते हैं। लिस्कोव के प्रतिस्थापन सिद्धांत के संबंध में यह प्रोग्रामिंग के दौरान इस तरह से इलाज करने के लिए समझ में आता है लेकिन कोई कक्षा स्वयं से विरासत में नहीं आती है। इसलिए »फू आईएस-ए फू« पूरी तरह से बकवास है। इसके अलावा, कक्षाओं और वस्तुओं के बीच भेद को आपके ओओपी कक्षाओं की शुरुआत में बहुत स्पष्ट किया जाना चाहिए था। – Joey

+0

प्रतिक्रिया जोहान्स के लिए धन्यवाद। आप आईएस-ए को विरासत के साथ समेकित कर रहे हैं जहां मैं आईएस-ए को समानता के साथ समझाऊंगा जो कि उदाहरण के उदाहरण का उपयोग करके सच हो। शायद आप ठीक कह रहे हैं। मैं निश्चित रूप से कक्षाओं और वस्तुओं के बीच भेद के बारे में अच्छी तरह से अवगत हूं - मैं केवल इस प्रश्न के भेद की प्रासंगिकता से पूछताछ कर रहा था। – CodeClimber

4

"संबंध" दो वर्गों के बीच एक रिश्ता को दर्शाता है। एक है-एक रिश्ते रिश्ते का एक प्रकार है (है-एक के रूप में उदाहरण के लिए करने का विरोध किया है, जो रचना का उपयोग करता है) वंशानुक्रम का उपयोग करता है है। उदाहरण के लिए, एक स्ट्रिंग एक वस्तु है। एक वर्ग से ही विरासत में नहीं कर सकते हैं, जो एक पक्ष नोट के रूप में सी का तात्पर्य, एक वर्ग के साथ ही संरचना (है-एक) हो सकता था। जैसे एक व्यक्ति के पास एक मातृ क्षेत्र के रूप में एक और व्यक्ति हो सकता है।

किसी भी समय आपके पास विरासत है, उपclass का एक उदाहरण सुपरक्लास के उदाहरण के रूप में उपयोग किया जा सकता है। वह बहुरूपता है, जिसका अर्थ है कि डी भी सही है।

+0

शायद आप सही हैं, यहां महत्वपूर्ण शब्द "रिश्ते" है जो दो अलग-अलग वर्गों का सुझाव देता है। मैं अभी भी 100% आश्वस्त नहीं हूं लेकिन मैं इसे स्वीकार किए गए उत्तर के रूप में चिह्नित करने जा रहा हूं। हम इसलिए कह रहे हैं: एक कुत्ता आईएस-ए डॉग - सच है। एक कुत्ता आईएस-ए एनिमल - सच है। एक कुत्ते के पास कुत्ते के साथ एक आईएस-ए संबंध है - झूठी। एक कुत्ते के पास पशु - सत्य के साथ एक आईएस-ए संबंध है। एक तरफ के रूप में, मेरी टिप्पणियां मेरे द्वारा दर्ज किए गए लाइन-ब्रेक के बिना दिखाई दे रही हैं, वह क्यों है? – CodeClimber

+0

@dairemac - टिप्पणी लाइन-ब्रेक से संबंधित, यह है कि यह कैसे है ... – cjk

+0

जैसा कि नीचे बताया गया है - मैं आईएस-ए की अपनी समझ बदल रहा हूं। पहले मैं "exampleof" कीवर्ड i.e. के साथ एक आईएस-ए रिश्ते को बराबर करता था अगर (कुत्ते का डी उदाहरण) तो डी एस क्लास टाइप आईएस-ए डॉग। अब मैं कह रहा हूं कि यह जरूरी नहीं है। अब मैं आईएस-ए को विरासत के साथ समझाऊंगा। पहले मैंने कहा होगा कि "कुत्ता आईएस-ए डॉग" सच था लेकिन अब से मैं कहूंगा कि यह झूठा है। पूरी प्रतिक्रिया के लिए धन्यवाद। – CodeClimber

1

आप इसे थोड़ा अलग देखने की जरूरत:

  • एक बिल्ली है-एक पशु
  • एक कार है-एक इंजन
  • एक स्ट्रिंग है-एक वस्तु
  • एक स्ट्रिंग है - चार सरणी

इसे इस तरह से देखने का प्रयास करें, अब यह स्पष्ट हो जाना चाहिए।

+0

ईमानदार होने के लिए आश्वस्त नहीं है। 1. एक बिल्ली एक पशु है। 2. एक बिल्ली एक बिल्ली है। विकल्प ए राज्य "एक रिश्ता है हमेशा विरासत पर भरोसा करते हैं"। विरासत 1 में लागू होती है लेकिन 2 में नहीं। – CodeClimber

+0

संरचना के लिए, यह सकारात्मक है: एक पिता ** के पास ** पिता है। लेकिन विरासत के लिए (ए-ए), हम केवल विभिन्न प्रकारों पर विचार करते हैं। ** is-a ** एक ही प्रकार के साथ हमेशा सत्य है और शायद, सिद्धांत में, हर प्रकार स्वयं विरासत में आता है। –

+0

"थियोरी में, हर प्रकार खुद को विरासत में मिला" - मेरी राय में गलत। "एक ही प्रकार के साथ हमेशा सत्य है" - यही वही है जो मैं कह रहा हूं! – CodeClimber

0

क्षमा करें, आपका तर्कसंगत गलत है। वे दो अलग-अलग वर्गों के बारे में बात कर रहे हैं। उदाहरण के लिए एक स्ट्रिंग एक वस्तु है।

3

कि एक स्ट्रिंग एक स्ट्रिंग है ... एक ट्यूटोलॉजी, जिसे स्पष्ट माना जाता है। लेकिन एपीआई दस्तावेज को देखते हुए, आप पाते हैं कि java.lang.String भी java.lang.Object है। वास्तव में, सभी जावा वर्ग java.lang.Object से प्राप्त होते हैं। वे ऑब्जेक्ट के मूल गुणों का उत्तराधिकारी होते हैं और कुछ अन्य स्वयं को जोड़ते हैं। यही एक रिश्ता है।

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

डी मुझे यहां इतना यकीन नहीं है। अगर मुझसे पूछा गया, तो मैं कहूंगा कि बहुरूपता "एक-एक" रिश्ते पर निर्भर करती है, न कि दूसरी तरफ।

+0

जेन बौद्ध किसी ऑब्जेक्ट में अधिक दिलचस्पी रखते हैं _not_ स्वयं होने :-) –

+0

मुझे शब्दकोश में "tautology" देखना था! एक परिभाषा "एक बयान है जो हमेशा सत्य है"। परीक्षा प्रश्न पूछता है कि कौन से उत्तर सत्य हैं और आपूर्ति किए गए उत्तरों में सभी शब्द हमेशा शामिल हैं। एक कंप्यूटर वैज्ञानिक के रूप में, मैं तर्क और तर्क का उपयोग करता हूं कि अगर कुछ स्पष्ट रूप से सच है तो यह अभी भी सच है! जैसा कि यहां एक अलग उत्तर में बताया गया है, शायद यहां कुंजी शब्द "रिश्ते" है जो दो अलग-अलग वर्गों का अर्थ है लेकिन यह 100% स्पष्ट नहीं है। प्रतिक्रिया के लिए धन्यवाद। – CodeClimber

+0

फिर भी, कंप्यूटर विज्ञान दर्शन नहीं है। वह बिल्ली एक बिल्ली है जो सॉफ्टवेयर के दृष्टिकोण से प्रासंगिक/रोचक/महत्वपूर्ण नहीं है। या अलग-अलग कहा गया है: यदि आपका प्रोफेसर आपके उत्तर को स्वीकार न करने का फैसला करता है तो सही होने से आपकी मदद नहीं होगी। –

1

मुझे लगता है कि अंक ए & सी अब तक स्पष्ट हैं ... डी। हालांकि, यह किसी भी प्रकार के व्यवहार या संपत्ति के साथ कक्षा का विस्तार करना संभवतः संभव हो सकता है .. (रिक्त या शायद स्थिर तत्वों के साथ)। .. लेकिन सिद्धांत रूप में "विस्तार" वर्गों के उद्देश्य को हरा देता है क्योंकि आप कक्षाओं से व्यवहार/कार्यक्षमता उत्तराधिकारी वृक्ष को ऊपर उठाना चाहते हैं। तो, मैं कहूंगा कि विकल्प डी सही है (लगभग) :) (यदि हम बहुत तकनीकी नहीं जा रहे हैं) .btw यह एक दिलचस्प चर्चा हो सकती है।

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