Une comparaison de langages objet relative au traitement de la redéfinition de méthode et à la liaison dynamique
Maintenant que les techniques de programmation objet sont largement disséminées
dans la communauté scientifique informatique, il est intéressant de faire une pause et d’observer
les langages de programmation communément utilisés. Si les mécanismes comme l’encapsulation
et l’héritage sont bien connus et compris, leur conséquence opérationnelle – la liaison
dynamique – a encore beaucoup d’interprétations, faisant des langages objet une solution toujours
immature, ou, du moins, une juxtaposition de nombreuses théories. Puisque nous pensons
que la notion d’objet a un sens, et apporte une réelle amélioration par rapport aux langages
classiques – sans liaison dynamique –, nous avons comparé sept langages objet et étudié leurs
différences vis-à-vis de la liaison dynamique. Nous proposons une sémantique "raisonnable"
à la liaison dynamique qui autorise tout à la fois des redéfinitions de méthodes covariantes,
contravariantes et invariantes pour ce qui est considéré,même par des experts, comme un problème
délicat.
Now that object-oriented programming is widely spread in the computer science
community, it is interesting to make a pause in order to observe the programming languages
that are commonly used. If mechanisms such as encapsulation and inheritance are usually well
known and understood, the operational consequence of them has still many interpretations,
making OO languages still an immature solution. . . or, at least, not a single community, but a
juxtaposition of many theories. Since we do believe OO has a sense, and brings a true improvement
in comparaison with "early binding" languages, we have compared some popular OO
languages and analyzed their differences. Finally we propose a unified "reasonable" semantic
of late binding that accepts covariant, contravariant and invariant redefinition of methods for
what is considered, even by experts, as a tricky problem.
A.BEUGNARD
Covariance, contravariance, liaison dynamique, redéfinition de méthode, comparaison languages objet, sémantique objet.
Covariance, contravariance, late binding, method redefinition, OO language comparison, OO semantics.
Français
|