computer science algorithm for resolving the order of method resolution in multiple inheritance conditions
La linéarisation de la superclasse C3 est un algorithme utilisé principalement pour obtenir l'ordre dans lequel les méthodes doivent être héritées en présence d'un héritage multiple. En d'autres termes, la sortie de la linéarisation de la superclasse C3 est un ordre de résolution de méthode (MRO) déterministe. « Dans les systèmes orientés objet avec héritage multiple, un mécanisme doit être utilisé pour résoudre les conflits lors de l'héritage de différentes définitions de la même propriété à partir de plusieurs superclasses. » La linéarisation de la superclasse C3 est appelée C3 car elle « est cohérente avec trois propriétés » : * un precedence graph étendue cohérent, * la préservation de l'ordre de préséance local, et * appliquant un critère de monotonie. Il a été publié pour la première fois lors de la conférence OOPSLA de 1996, dans un article intitulé A Monotonic Superclass Linearization for Dylan. Il a été adapté à l'implémentation d'Open Dylan en janvier 2012 à la suite d'une proposition d'amélioration. Il a été choisi comme algorithme par défaut pour la résolution de méthode dans Python 2.3 (et versions ultérieures), Raku, Parrot, Solidity et le module de programmation orientée objet de PGF/TikZ . Il est également disponible en tant que MRO alternatif, non par défaut, dans le cœur de Perl 5 à partir de la version 5.10.0. Une implémentation d'extension pour les versions antérieures de Perl 5 nommée Class::C3 existe sur CPAN . Guido van Rossum de Python résume ainsi la linéarisation de la superclasse C3 : « Fondamentalement, l'idée derrière C3 est que si vous écrivez toutes les règles d'ordonnancement imposées par les relations d'héritage dans une hiérarchie de classes complexe, l'algorithme déterminera un ordonnancement monotone des classes qui les satisfait toutes. Si un tel ordre ne peut être déterminé, l'algorithme échouera. »
Abstract from DBpedia / Wikipedia · CC BY-SA
Discovered by embedding cosine similarity (sentence-transformers MiniLM, 384-dim).