Skip to main content

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 langues 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ème courant dans un héritage multiple est l'ambiguïté dans l'appel de méthode, et les mélanges 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 mort, où un parent classe A a des sous-classes B et C, et une classe D hérite des classes B et C. Le problème de ce scénario est que les méthodes qui ont la même choseLe nom dans les classes A, B et C peut tous être hérités dans la classe D, ce qui réalise plusieurs versions de la même méthode sans distinctions claires.Les mélanges 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 mélanges ne remplacent pas les méthodes dans les classes dans lesquelles ils sont hérités.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 A serait toujours complètement accessible.Exactement comment ces méthodes seraient appelées dépend du langage dans lequel 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.Les 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.