मान लें कि आपके पास निम्नलिखित हैं:
+--------+ +------+
| Animal | | Food |
+-+------+ +----+-+
^ ^
| |
| |
+------+ +-------+
| Deer | | Grass |
+------+ +-------+
Deerसे विरासत में मिला है Animal, और से Grassविरासत में मिला है Food।
अब तक सब ठीक है। Animalवस्तुओं को खा सकते हैं Food।
अब इसे थोड़ा ऊपर से मिक्स करें। Lionजो एक विरासत में मिला देता है Animal।
+--------+ +------+
| Animal | | Food |
+-+-----++ +----+-+
^ ^ ^
| | |
| | |
+------+ +------+ +-------+
| Deer | | Lion | | Grass |
+------+ +------+ +-------+
अब हमारे पास एक समस्या है क्योंकि Lionदोनों खा सकते हैं Deerऔर Grass, लेकिन Deerयह नहीं Foodहै Animal।
एकाधिक वंशानुक्रम का उपयोग करने और ऑब्जेक्ट ओरिएंटेड डिज़ाइन का उपयोग करने के साथ, आप इस समस्या को कैसे हल करते हैं?
FYI करें: मैंने ASCII चित्र बनाने के लिए http://www.asciiflow.com का उपयोग किया ।
IHuntable, भेड़ और गाय IHerdable(मानव द्वारा नियंत्रणीय) हैं, और लायन केवल IAnimal को लागू करता है, जो उन इंटरफेसों में से किसी को भी प्रभावित नहीं करता है। AOE3 एक विशेष वस्तु (इसी तरह instanceof) द्वारा समर्थित इंटरफेस के सेट को क्वेरी करने का समर्थन करता है जो प्रोग्राम को अपनी क्षमताओं को क्वेरी करने की अनुमति देता है।