मुझे लगता है कि यह अच्छा होगा कि ट्रोल और वेयरवोल्फ दोनों ने दुश्मन से अपनी विशेषताओं को विरासत में लिया और उनमें से कुछ को उखाड़ फेंका।
दुर्भाग्य से 90 के दशक में लोकप्रिय बहुरूपता के प्रति इस दृष्टिकोण ने खुद को व्यवहार में एक बुरा विचार दिखाया है। कल्पना कीजिए कि आप दुश्मन सूची में 'भेड़िया' जोड़ते हैं - ठीक है, यह वेयरवोल्फ के साथ कुछ विशेषताओं को साझा करता है, इसलिए आप उन लोगों को एक साझा आधार वर्ग, जैसे में समेकित करना चाहते हैं। 'WolfLike'। अब आप दुश्मन सूची में 'मानव' जोड़ते हैं, लेकिन कभी-कभी वेयरवोल्स भी इंसान होते हैं, इसलिए वे भी विशेषताओं को साझा करते हैं, जैसे कि 2 पैरों पर चलना, बात करने में सक्षम होना आदि। क्या आप मनुष्यों और वेयरवोम्स के लिए एक 'ह्यूमनॉइड' आधार बनाते हैं। , और क्या आपको फिर वुल्फलाइक से प्राप्त वेयरवोल्फ को रोकना होगा? या क्या आप दोनों से गुणा करते हैं - किस स्थिति में, कौन सी विशेषता पूर्ववर्तीता लेती है जब वुल्फाइड में कुछ के साथ ह्यूमनॉइड में कुछ टकराव होता है?
समस्या यह है कि कक्षाओं की एक पेड़ के रूप में वास्तविक दुनिया की कोशिश करना और मॉडल अप्रभावी है। कोई भी 3 चीजें लें और आप उनके व्यवहार को साझा और गैर-साझा करने के लिए संभवतः 4 अलग-अलग तरीके ढूंढ सकते हैं। यही कारण है कि कई ने इसके बजाय एक मॉड्यूलर या घटक-आधारित मॉडल की ओर रुख किया है, जहां एक ऑब्जेक्ट कई छोटी वस्तुओं से बना होता है जो पूरे बनाते हैं, और छोटी वस्तुओं को स्वैप किया जा सकता है या आपके द्वारा वांछित व्यवहार को बदलने के लिए बदल सकता है। यहां आपके पास सिर्फ 1 शत्रु वर्ग हो सकता है, और इसमें उप-ऑब्जेक्ट्स या घटक शामिल हैं कि यह कैसे चलता है (जैसे। बिपेडल बनाम क्वाड्रुपेडल), इसके हमले के तरीके (जैसे। काटने, पंजा, हथियार, मुट्ठी), इसकी त्वचा (हरा) ट्रॉल्स के लिए, वेयरवोल्स और भेड़ियों के लिए फरारी), आदि।
यह अभी भी पूरी तरह से ऑब्जेक्ट-ओरिएंटेड है, लेकिन जो उपयोगी वस्तु है, उसकी धारणा टेक्स्ट बुक्स में आमतौर पर सिखाई जाने वाली चीजों से अलग है। विभिन्न अमूर्त वर्गों और पेड़ की युक्तियों पर कई ठोस वर्गों का एक बड़ा वंशानुक्रम वृक्ष होने के बजाय, आपके पास आम तौर पर एक अमूर्त अवधारणा (जैसे 'शत्रु') का प्रतिनिधित्व करने वाला सिर्फ 1 ठोस वर्ग होता है, लेकिन जिसमें अधिक अमूर्त अवधारणाओं का प्रतिनिधित्व करने वाले अधिक ठोस वर्ग होते हैं। (जैसे। हमले, त्वचा का प्रकार)। कभी-कभी इन दूसरी कक्षाओं को वंशानुक्रम के 1 स्तर (उदाहरण के लिए, बेस अटैक क्लास और विशिष्ट हमलों के लिए कई व्युत्पन्न वर्ग) के माध्यम से सर्वोत्तम रूप से लागू किया जा सकता है, लेकिन गहन वंशानुक्रम वृक्ष चला जाता है।
लेकिन शायद कक्षाएं व्यावहारिक होने के लिए बहुत भारी हैं, मुझे नहीं पता ...
अधिकांश आधुनिक भाषाओं में, कक्षाएं 'भारी' नहीं होती हैं। वे कोड लिखने का सिर्फ एक और तरीका हैं, और वे आमतौर पर प्रक्रियात्मक दृष्टिकोण को लपेटते हैं जो आपने आसान सिंटैक्स को छोड़कर, वैसे भी लिखा होगा। लेकिन हर तरह से, एक वर्ग जहां एक समारोह करेंगे लिखो मत। कक्षाएं आंतरिक रूप से बेहतर नहीं होती हैं, केवल जहां वे कोड को प्रबंधित करने या समझने में आसान बनाते हैं।