Qu'est-ce qu'un mélange?

Dans la programmation informatique, un mixin est une classe héritée par une autre classe mais qui n'est pas censée être instanciée. Une seule classe peut hériter de nombreux mélanges, de sorte que de nombreuses collections de fonctions peuvent être consolidées facilement. Bien que de nombreux langages de programmation courants utilisent la méthodologie de mixin, il y en a beaucoup d'autres, notamment C ++ et Java. En général, les mixins se trouvent dans les langages de script ou les langages qui ont la capacité de créer des scripts, tels que JavaScript et Perl.

Les mélanges sont uniques en ce qu'ils font partie d'une sous-classe pendant la compilation. Leurs méthodes et constantes sont incluses dans la sous-classe. Un autre trait unique des classes de mixin est que les méthodes peuvent être définies et liées aux objets lors de l'exécution. La plupart des langues utilisent une approche différente, des méthodes de liaison et de définition au moment de la compilation plutôt que d'exécution. Cette liaison d'exécution permet aux mixins d'être très flexibles.

un probl communEM dans l'héritage multiple est une ambiguïté dans l'appel de méthode, et les mixins peuvent résoudre ce problème car ils ne suivent pas précisément les mêmes règles que l'héritage multiple. Par exemple, l'héritage multiple peut créer un soi-disant «diamant de la mort», où un parent de classe A a des sous-classes B et C, et une classe D hérite des classes B et C. Le problème dans ce scénario est que les méthodes qui ont le même nom dans les classes A, B et C peuvent toutes être inhérentes à la classe D, faisant plusieurs versions de la même méthode sans distinction claire. Les mixins résolvent ce problème en gardant chaque version de la méthode distincte, plutôt que d'essayer de les écraser comme dans l'héritage multiple standard.

Les mixins ne remplacent pas les méthodes dans les classes dans lesquelles elles sont héritées. Par exemple, si une classe A a défini une méthode "MyMethod" et a hérité d'un mélange B qui a également défini la méthode "MyMethod", ces deux méthodes pourraient toujours être appelées sans ambiguïté, et l'implémentation de "MyMethod" dans la classe Aserait toujours complètement accessible. Exactement comment ces méthodes seraient appelées dépend de la langue dans laquelle le mixin est implémenté.

Certains langages de programmation qui n'utilisent pas de mixins, tels que Java, utilisent des interfaces pour les imiter. Les interfaces dans ces langues n'émulent pas la pleine fonctionnalité des mélanges, car les interfaces ne peuvent contenir que des constantes et des déclarations de méthode. Les mixins, en revanche, peuvent contenir des implémentations complètes de méthodes. Ces langues qui ne soutiennent pas les mixins ont souvent des alternatives viables qui peuvent être cajolées pour faire à peu près la même chose.

DANS D'AUTRES LANGUES