Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
The mathematics of inheritance systems
The mathematics of inheritance systems
Object-oriented programming with flavors
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
CommonLoops: merging Lisp and object-oriented programming
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
On some algorithms for multiple inheritance in object-oriented programming
European conference on object-oriented programming on ECOOP '87
Metaclasses are first class: The ObjVlisp Model
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
A semantics of multiple inheritance
Information and Computation - Semantics of Data Types
The programming language Oberon
Software—Practice & Experience
Name collision in multiple classification hierarchies
on ECOOP '88 (European Conference on Object-Oriented Programming)
Virtual classes: a powerful mechanism in object-oriented programming
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
Two-directional record layout for multiple inheritance
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
Common LISP: the language (2nd ed.)
Common LISP: the language (2nd ed.)
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
The point of view notion for multiple inheritance
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
Organizing programs without classes
Lisp and Symbolic Computation
Modula-3
Inheritance in object-oriented programming languages
Inheritance hierarchies in knowledge representation and programming languages
Masking and conflicts, or to inherit not to own!
Inheritance hierarchies in knowledge representation and programming languages
Inheritance hierarchies in knowledge representation and programming languages
CLOStrophobia: its etiology and treatment
ACM SIGPLAN OOPS Messenger
Eiffel: the language
Building an object-oriented database system: the story of 02
Building an object-oriented database system: the story of 02
Monotonic conflict resolution mechanisms for inheritance
OOPSLA '92 conference proceedings on Object-oriented programming systems, languages, and applications
Object-oriented programming in Oberon-2
Object-oriented programming in Oberon-2
Is multiple inheritance essential to OOP? (panel)
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
Proposal for a monotonic multiple inheritance linearization
OOPSLA '94 Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications
A behavioral notion of subtyping
ACM Transactions on Programming Languages and Systems (TOPLAS)
Programming in Ada95
Object-oriented programming in the BETA programming language
Object-oriented programming in the BETA programming language
A monotonic superclass linearization for Dylan
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Using role components in implement collaboration-based designs
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
The Dylan reference manual: the definitive guide to the new object-oriented dynamic language
The Dylan reference manual: the definitive guide to the new object-oriented dynamic language
ACM Computing Surveys (CSUR)
Object-oriented programming: a unified foundation
Object-oriented programming: a unified foundation
Java language reference
Design of the programming language FORSYTHE
ALGOL-like Languages, Volume 1
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
Pizza into Java: translating theory into practice
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An Aristotelian understanding of object-oriented programming
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
On the syllogistic structure of object-oriented programming
ICSE '01 Proceedings of the 23rd International Conference on Software Engineering
ACM Transactions on Software Engineering and Methodology (TOSEM)
The C++ Programming Language
The Art of the Metaobject Protocol
The Art of the Metaobject Protocol
Incremental algorithms for dispatching in dynamically typed languages
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A Statically Safe Alternative to Virtual Types
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
ECOOP '99 Proceedings of the 13th European Conference on Object-Oriented Programming
Propagating Class and Method Combination
ECOOP '99 Proceedings of the 13th European Conference on Object-Oriented Programming
Unifying Genericity - Combining the Benefits of Virtual Types and Parameterized Classes
ECOOP '99 Proceedings of the 13th European Conference on Object-Oriented Programming
"Real World" as an Argument for Covariant Specialization in Programming and Modeling
OOIS '02 Proceedings of the Workshops on Advances in Object-Oriented Information Systems
Safe dynamic multiple inheritance
Nordic Journal of Computing
The description logic handbook: theory, implementation, and applications
The description logic handbook: theory, implementation, and applications
Automated Delegation is a Viable Alternative to Multiple Inheritance in Class Based Languages
Automated Delegation is a Viable Alternative to Multiple Inheritance in Class Based Languages
Contributing to Eclipse: Principles, Patterns, and Plugins
Contributing to Eclipse: Principles, Patterns, and Plugins
Super and inner: together at last!
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
ACM SIGPLAN Notices
Simula Begin
Traits: A mechanism for fine-grained reuse
ACM Transactions on Programming Languages and Systems (TOPLAS)
MultiJava: Design rationale, compiler implementation, and applications
ACM Transactions on Programming Languages and Systems (TOPLAS)
J&: nested intersection for scalable software composition
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Perfect hashing as an almost perfect subtype test
ACM Transactions on Programming Languages and Systems (TOPLAS)
The ruby programming language
Programming in Scala: A Comprehensive Step-by-step Guide
Programming in Scala: A Comprehensive Step-by-step Guide
CZ: multiple inheritance without diamonds
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Empirical assessment of object-oriented implementations with multiple inheritance and static typing
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Implementing statically typed object-oriented programming languages
ACM Computing Surveys (CSUR)
The Python Language Reference Manual
The Python Language Reference Manual
Implementing statically typed object-oriented programming languages
ACM Computing Surveys (CSUR)
Hi-index | 0.00 |
Inheritance provides object-oriented programming with much of its great reusability power. When inheritance is single, its specifications are simple and everybody roughly agrees on them. In contrast, multiple inheritance yields ambiguities that have prompted long-standing debates, and no two languages agree on its specifications. In this paper, we present a semantics of multiple inheritance based on metamodeling. 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. However, semantic conflicts require a programmer's decision, and the programming language must help the programmer to some extent. This paper surveys the approach based on 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 between 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 compared with the metamodel results. Throughout the paper, difficulties encountered under the open-world assumption are stressed.