Wolfgang De Meuter
Last revision: August 7th, 1996

Encapsulated Inheritance On Objects


One of the major differences between class-based inheritance and object-based inheritance is the ability for object-based inheritance to extend objects dynamically. But this is quite problematic as dynamic object extension mechanisms aren't very well encapsulated. The general idea is that any client of the object can always make a dummy extension in order to patch up some additional methods that give him more acces to the implementation details.

We investigated this problem carefully in >A Mariage of Class- And Object-Based Inheritance Without Unwanted Children. We were not the first to recognise this as the same problem was adressed in a small paragraph in [Dony et. al. 92].

In order to overcome these problems, a dynamic extension mechanism based on mixin-methods was designed and shown to be encapsulated.

Currently, we are trying to formally unify this mechanism with extension from the outside. One way to solve the problem was integrated in the implementation of Agora96. It uses the reflective techniques of Agora.