2012-06-15 22 views
5

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

मेरा सवाल यह है कि यह गहराई का विरासत है कि यह गहराई है (छवि अभी तक फिसल गई नहीं है, अंत में 5 या 6 गहरी हो सकती है)। यह कुछ बच्चों के वर्गों के उत्तराधिकारी के बजाय, अपने मूल वर्ग के लिए निर्देशित सहयोग होने का विरोध है।

मैंने पढ़ा है कि एक गहरी विरासत पदानुक्रम एक अच्छा विचार नहीं है, और यदि कोई बच्चा वर्ग केवल माता-पिता के डेटा के लिए विरासत में है, तो आपको केवल बच्चे को डेटा में डेटा के रूप में शामिल करना चाहिए, लेकिन मैं ' मैं अपने सिर को लपेटने में कठोर समय क्यों लगा रहा हूं। अगर मैंने विरासत पदानुक्रम 7-गहराई या ऐसा कुछ करने का फैसला किया है तो हमारे साथ क्या बुरी बात हो रही है? स्पष्ट रूप से एक छोटा प्रदर्शन हिट है, और पदानुक्रम के शीर्ष पर चीजों को बदलना ऐप में भारी लहरें होने जा रहा है, लेकिन इसके अलावा मुझे कोई समस्या नहीं दिख रही है। इसके अलावा, मुझे प्रदर्शन में मामूली मतभेदों के बारे में बहुत कम ख्याल है।

Class Hierarchy

(बोनस सवाल: वहाँ एक ऑफ-द-शेल्फ पैकेज है कि सामान के इस प्रकार संभालती है हम निम्न स्तर शारीरिक संभाला सिमुलेशन के सबसे है, लेकिन अनुक्रमण कार्यक्रम हम करने जा रहे हैं लिखने के लिए। मुझे बस यह संदेह है कि मैंने जो कुछ भी किया है, वह मेरे सामने 10,000 सिमुलेशन डेवलपर्स के समान ही है।)

(बोनस प्रश्न # 2: सिमुलेशन सिस्टम और ओओपी प्रोग्रामिंग दोनों के किसी भी स्वामी, लॉस एंजिल्स में रहने से नफरत नहीं होगी? हम भर्ती कर रहे हैं।)

+0

मुझे विवरण समझ में नहीं आ रहा है, लेकिन लेआउट मेरे लिए बहुत गन्दा दिखता है। क्यू के लिए के रूप में। 2, भी बल्लेबाजी तुमने मुझसे 7 साल पहले नहीं पूछा था। –

उत्तर

9

कि यदि कोई बच्चा वर्ग केवल माता-पिता के डेटा के लिए विरासत में है

यह एक बुरा विचार है। इस समझ में यह है कि आप बेस क्लास को अनुबंधों के सबसे सामान्य के रूप में परिभाषित करते हैं कि (कंक्रीट) वर्गों का एक सेट सम्मान करने जा रहा है। इसका आमतौर पर मतलब है कि आपका अनुबंध लगभग व्यवहार है और कार्यान्वयन नहीं है।

अगर मैं विरासत पदानुक्रम 7-गहराई या ऐसा कुछ करने का फैसला करता हूं तो हमारे साथ क्या बुरी बात होने वाली है?

प्रमुख मुद्दों यहाँ सांसारिक हैं:

  • कमजोर आधार वर्ग
  • वृद्धि युग्मन (आधार करने के लिए परिवर्तन व्युत्पन्न लिए एक बुरा सपना कर रहे हैं) (बहुत आधार वर्ग के साथ आता है तंग युग्मन)
  • Encapsulation
  • परीक्षण समस्याएं (पत्ती के स्तर पर ओवरराइड विधियों का परीक्षण केवल अंतिम उपयोगकर्ता व्यवहार को पुन: पेश करने के लिए नहीं किया जा सकता है, क्योंकि यहां कई शृंखला कॉल के कारण हमेशा सही होता है)
  • रखरखाव (मजबूत युग्मन से आता है)

(आप कई Why Ada isn't popular पर इस पत्र का अवलोकन करना चाहते हैं, विशेष रूप से, आइटम 6, पैरा 6।)

क्या कोई ऑफ-द-शेल्फ पैकेज है जो इस तरह की चीजें संभालता है?

मुझे यकीन नहीं है कि आप क्या खोज रहे हैं, लेकिन यदि आप एक स्वचालित पदानुक्रम सरलीकृत की तलाश में हैं तो मुझे किसी के बारे में पता नहीं है। अगर ऐसा पैकेज मौजूद है तो यह आपकी पसंद की भाषा पर अत्यधिक निर्भर होगा और आपने इसका उल्लेख नहीं किया है।

ध्यान दें कि अधिकतर समय इस तरह के मुद्दों को समेकन या गुण या निर्भरता इंजेक्शन या जो भी हो, विकल्पों को देखकर हल किया जा सकता है। ये डिजाइन समय के मुद्दे हैं और आमतौर पर एक कंपाइलर और लाखों एलओसी की तुलना में एक व्हाइटबोर्ड पर सबसे अच्छा लोहे से बाहर (आईएमओ) होते हैं।

1

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

मैंने इस here के बारे में ब्लॉग किया।

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