choose-news(a)iam.unibe.ch is a *moderated* mailing list for announcing
non-commercial events related to Object Technology in Switzerland.
Please send announcements to be posted to: choose-news(a)iam.unibe.ch
To unsubscribe, please send the message "unsubscribe choose-news" to:
To learn more about SI and CHOOSE, see: http://www.iam.unibe.ch/CHOOSE/
Das Informatikkolloquium im Sommersemester 2003
- eine Veranstaltung des IAM mit Unterstützung der Hasler Stiftung
Einladung zum nächsten Vortrag:
Dienstag, 17. Juni 2003, 17.30 Uhr in der Uni Engehalde,
Engehaldenstrasse 8, 3012 Bern Hörsaal 001 (1.UG)
Dr. Noury Bouraqadi
Computer Science Lab, Ecole des Mines of Douai (France)
Metaclass Composition in MetaclassTalk
Reflection is the ability of a system to reason and to act upon
itself. A programming language is said to be reflective if it allows
developers to alter its own semantics and the set of its own
constructs. For this purpose, constructs of a reflective language and
its evaluation mechanisms are ``reified''. That is, they are made
explicit to allow developers handle them. In the context of object
oriented languages, reification leads to representing such entities as
full fledged objects available at run-time. For example, reification
of methods and classes make them available as objects to developers.
So, methods and classes can be handled (e.g. receive messages)
likewise plain objects.
Since every object is instance of some class, reified classes are
instances of other classes named ``metaclasses''. Metaclasses are
useful to define new class properties and hence make new kinds of
classes. An example of a class property is having a sole instance.
This property corresponds to the Singleton design pattern. Another
example of class property is multiple inheritance. In a language which
provides single inheritance, metaclasses can be used to build classes
with multiple superclasses. Metaclasses allows defining a variety of
class properties. And, of course, a single class can have different
properties (e.g. singleton + multiple inheritance). Therefore, we need
to somehow compose metaclasses defining these properties.
In this talk, we focus on mixin-based inheritance and how it applies
for metaclass composition. Mixin-based inheritance was introduced by
Bracha and Cook as an alternative to both single and multiple
inheritance. Contrary to single inheritance, mixin-based inheritance
allows making some classes (named mixins) participate to different
inheritance hierarchies. And contrary to multiple-inheritance,
mixin-based inheritance avoids undesirable behavior resulting from
Experiments related to our work on mixins were done using a reflective
extension of Smalltalk named MetaclassTalk
). Besides allowing developers
change program evaluation, MetaclassTalk also supports metaclass
programming. We show how we implemented mixin-based inheritance using
MetaclassTalk metaclasses, and how we took benefit from MetaclassTalk
reflectivity to compose metaclasses using mixins.