Meta-modeling Semantics of Multiple Inheritance

Abstract : Inheritance affords to object-oriented programming its great powers of reusability. When inheritance is \emph{single}, its specifications are simple and everybody roughly agree with them. On the contrary, \emph{multiple inheritance} yields ambiguities that have provoked long-lasting debates and there are no two languages which agree on its specifications. In this paper, we present a semantics of multiple inheritance based on meta-modeling. A metamodel is proposed, which distinguishes the `identity' of properties from their `values' or `implementations'. It yields a clear separation between syntactic and semantic conflicts. The former can be solved in any language at the expense of a common syntactic construct, namely full name qualification. On the contrary, semantic conflicts require a programmer's decision and the programming language must provide some help to the programmer. The paper surveys the approach based on \emph{linearizations}, which has been studied in-depth, and proposes some extensions. As it turns out that only static typing takes full advantage of the metamodel, the interaction of multiple inheritance and static typing is also considered, especially in the context of virtual types. The solutions proposed by the various languages with multiple inheritance are confronted with the metamodel and implementation issues are finally examined. All the paper long, the difficulties entailed under the \emph{open world assumption} are stressed.
Type de document :
Article dans une revue
Science of Computer Programming, Elsevier, 2011, 76 (7), pp.555-586. 〈http://www.lirmm.fr/~ducour/Publis/RD-JP-SCP08.pdf〉
Liste complète des métadonnées

https://hal-lirmm.ccsd.cnrs.fr/lirmm-00300428
Contributeur : Roland Ducournau <>
Soumis le : vendredi 18 juillet 2008 - 12:00:29
Dernière modification le : jeudi 24 mai 2018 - 15:59:22

Identifiants

  • HAL Id : lirmm-00300428, version 1

Collections

Citation

Roland Ducournau, Jean Privat. Meta-modeling Semantics of Multiple Inheritance. Science of Computer Programming, Elsevier, 2011, 76 (7), pp.555-586. 〈http://www.lirmm.fr/~ducour/Publis/RD-JP-SCP08.pdf〉. 〈lirmm-00300428〉

Partager

Métriques

Consultations de la notice

126