Supposons que vous ayez les éléments suivants:
+--------+ +------+
| Animal | | Food |
+-+------+ +----+-+
^ ^
| |
| |
+------+ +-------+
| Deer | | Grass |
+------+ +-------+
Deerhérite Animalet Grasshérite de Food.
Jusqu'ici tout va bien. Animalles objets peuvent manger des Foodobjets.
Permet maintenant de mélanger un peu. Ajoutons un Lionqui hérite de Animal.
+--------+ +------+
| Animal | | Food |
+-+-----++ +----+-+
^ ^ ^
| | |
| | |
+------+ +------+ +-------+
| Deer | | Lion | | Grass |
+------+ +------+ +-------+
Maintenant, nous avons un problème parce que Lionpeut manger à la fois Deeret Grass, mais ce Deern'est pas Foodle cas Animal.
Sans utiliser l'héritage multiple et la conception orientée objet, comment résoudre ce problème?
Pour info: j'ai utilisé http://www.asciiflow.com pour créer les diagrammes ASCII.
IHuntable, Sheep et Cow sont IHerdable(contrôlables par l'homme), et Lion implémente uniquement IAnimal, ce qui n'implique aucune de ces interfaces. AOE3 prend en charge l'interrogation de l'ensemble des interfaces prises en charge par un objet particulier (similaire à instanceof) qui permet à un programme d'interroger ses capacités.