OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
Programming with explicit metaclasses in Smalltalk-80
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
Reflections on metaclass programming in SOM
OOPSLA '94 Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications
Single versus multiple inheritance in object oriented programming
ACM SIGPLAN OOPS Messenger
Release-to-release binary compatibility in SOM
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
Back to the future: the story of Squeak, a practical Smalltalk written in itself
Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Squeak: Open Personal Computing and Multimedia
Squeak: Open Personal Computing and Multimedia
Explicit Metaclasses as a Tool for Improving the Design of Class Libraries
ISOTAS '96 Proceedings of the Second JSSST International Symposium on Object Technologies for Advanced Software
Traits: A mechanism for fine-grained reuse
ACM Transactions on Programming Languages and Systems (TOPLAS)
Unanticipated partial behavioral reflection: Adapting applications at runtime
Computer Languages, Systems and Structures
Language support for adaptive object-models using metaclasses
Computer Languages, Systems and Structures
Uniform and safe metaclass composition
Computer Languages, Systems and Structures
Unanticipated partial behavioral reflection
ISC'06 Proceedings of the 14th international conference on Advances in smalltalk
The ink language meta-metamodel for adaptive object-model frameworks: [extended abstract]
Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion
Hi-index | 0.00 |
In the context of meta-programming and reflective languages, classes are treated as full-fledged objects which are instances of other classes named metaclasses. Metaclasses have proved to be useful for defining new class properties. Examples of such properties are lazy memory allocation, multiple inheritance, having a single instance. A class with some property is obtained by instantiating a metaclass which implements the desired property. However, instantiation allows assigning to a class only properties defined by a single metaclass. A composition mechanism is needed to reuse properties defined by different metaclasses and assign them to a given class. This composition should be performed without breaking class-metaclass compatibility. The compatibility issue arises when a class is coupled to its metaclass. So, when composing metaclasses, we need to take care of such coupling to avoid run-time exceptions. In this paper, we explore the use of mixin-based inheritance to perform metaclass composition. Mixin-based inheritance is an interesting alternative to both single and multiple inheritance. As opposite to single inheritance, it allows reusing code among different class hierarchies. Contrary to multiple inheritance, it allows developers to explicitly specify the desired behavior through explicit linearizations. Our proposal is to define and compose reusable class properties by introducing mixins at the metaclass level. We demonstrate that this introduction can be done efficiently without altering compatibility.