Mixin-based inheritance

The diverse inheritance mechanisms provided by Smalltalk, Beta, and CLOS are interpreted as different uses of a single underlying construct. Smalltalk and Beta differ primarily in the direction of class hierarchy growth. These inheritance mechanisms are subsumed in a new inheritance model based on composition of mixins, or abstract subclasses. This form of inheritance can also encode a CLOS multiple-inheritance hierarchy, although changes to the encoded hierarchy that would violate encapsulation are difficult. Practical application of mixin-based inheritance is illustrated in a sketch of an extension to Modula-3.

[1]  S. E. Keene,et al.  A programmer's guide to object-oriented programming in Common LISP , 1988 .

[2]  Mike P. Papazoglou,et al.  An Outline of the Programming Language Simula , 1984, Comput. Lang..

[3]  Alan Snyder,et al.  Inheritance and the Development of Encapsulated Software Systems , 1987, Research Directions in Object-Oriented Programming.

[4]  Stanley B. Zdonik,et al.  Inheritance as an Incremental Modification Mechanism or What Like Is and Isn't Like , 1988, ECOOP.

[5]  Jens Palsberg,et al.  A Denotational Semantics af Inheritance and its Correctness , 1989 .

[6]  Gordon Plotkin,et al.  Semantics of Data Types , 1984, Lecture Notes in Computer Science.

[7]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[8]  Luca Cardelli,et al.  Modula-3 Report (revised) , 1992 .

[9]  Linda G. DeMichiel,et al.  The Common Lisp Object System: An Overview , 1987, ECOOP.

[10]  Mitchell Wand,et al.  Type inference for record concatenation and multiple inheritance , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

[11]  William R. Cook,et al.  A denotational semantics of inheritance , 1989 .

[12]  Uday S. Reddy,et al.  Objects as closures: abstract semantics of object-oriented languages , 1988, LISP and Functional Programming.

[13]  Bent Bruun Kristensen,et al.  Abstraction mechanisms in the BETA programming language , 1983, POPL '83.

[14]  Alan Snyder Encapsulation and inheritance in object-oriented programming languages , 1986, OOPSLA 1986.

[15]  David A. Moon,et al.  Object-oriented programming with flavors , 1986, OOPLSA '86.

[16]  Jens Palsberg,et al.  A Denotational Semantics of Inheritance and its Correctness , 1989, OOPSLA.

[17]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Inf. Comput..

[18]  Bent Bruun Kristensen,et al.  The BETA Programming Language , 1987, Research Directions in Object-Oriented Programming.

[19]  Roland Ducournau,et al.  On Some Algorithms for Multiple Inheritance in Object-Oriented Programming , 1987, ECOOP.