Supponiamo di avere il seguente:
+--------+ +------+
| Animal | | Food |
+-+------+ +----+-+
^ ^
| |
| |
+------+ +-------+
| Deer | | Grass |
+------+ +-------+
Deer
eredita da Animal
e Grass
eredita da Food
.
Fin qui tutto bene. Animal
oggetti possono mangiare Food
oggetti.
Ora lasciamolo mescolare un po '. Aggiungiamo un Lion
che eredita da Animal
.
+--------+ +------+
| Animal | | Food |
+-+-----++ +----+-+
^ ^ ^
| | |
| | |
+------+ +------+ +-------+
| Deer | | Lion | | Grass |
+------+ +------+ +-------+
Ora abbiamo un problema perché Lion
può mangiare sia Deer
che Grass
, ma Deer
non è Food
è Animal
.
Senza usare l'ereditarietà multipla e usando la progettazione orientata agli oggetti, come risolvi questo problema?
FYI: ho usato il link per creare i diagrammi ASCII.