Hey

,
Tu as trois solutions qui s'offrent à toi.
La première est que C hérite de D. Comme ça, D fait partie de la famille de classe, et tu peux y accéder depuis A ou B.
La seconde est que C, A ou B contiennent D. C'est à dire que les objets contiennent une instance de D.
Enfin, la dernière solution (et de loin la plus mauvaise) est de recopier ta méthode partout où tu en as besoin, mais on perd tout l'intérêt de l'objet …
La première solution met en avant la notion de famille, de groupe ou de catégorie. Si D propose des fonctionnalités qui vont dans le même sens que C, A ou B, alors il peut faire partie de cette famille.
La seconde solution met en avant la notion d'association (et
a fortiori d'agrégation et composition). C'est peut-être un peu compliqué de l'expliquer simplement, en quelques lignes, mais qu'on me pardonne, je m'y essaye. En gros, une association symbolise un lien entre deux classes. Si D propose des fonctionnalités qui sont différentes de ce que C, A ou B proposent, D ne fait pas partie de la famille. En revanche, C, A ou B ont besoin de D pour leur bon fonctionnement, il y a un donc un lien entre tout ce petit monde. Maintenant, si on parle d'agrégation, c'est une notion plus forte que l'association. Elle va dans le même sens, mais est plus forte. D est juste une classe dans laquelle on a délégué du travail annexe, qui ne faisait pas vraiment partie de C, A ou B. C'est comme une sorte d'annexe évolué, que tout le monde peut utilisé. En effet, D fait beaucoup de travail et on l'a suffisamment rendu générique pour être bénéfique dans d'autres contextes, dans d'autres utilisations. Et enfin, la composition est une notion plus forte que l'agrégation. C'est toujours un lien entre deux classes, mais c'est un lien qui n'est pas partagé. Si D compose C, alors D n'appartient qu'à C, et à elle seule. Seule C peut accéder à D, c'est la grande notion de la composition. On peut aussi parler de durée de vie, mais c'est une notion peut parlante pour une première rencontre avec la composition

.
Je n'ai pas formalisé les définitions volontairement. Mais ce que tu dois essayer de comprendre, c'est que ton problème n'a pas une unique solution. La solution dépend de la nature des classes, de leur travail etc.