Meta-modeling Semantics of Multiple Inheritance - LIRMM - Laboratoire d’Informatique, de Robotique et de Microélectronique de Montpellier Access content directly
Journal Articles Science of Computer Programming Year : 2011

Meta-modeling Semantics of Multiple Inheritance


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.

Dates and versions

lirmm-00300428 , version 1 (18-07-2008)



Roland Ducournau, Jean Privat. Meta-modeling Semantics of Multiple Inheritance. Science of Computer Programming, 2011, 76 (7), pp.555-586. ⟨10.1016/j.scico.2010.10.006⟩. ⟨lirmm-00300428⟩
103 View
0 Download



Gmail Facebook X LinkedIn More