The class concept is heavily overworked. Classes are used for: inheritance, encapsulation, typing, classification and state sharing. In current OO languages and systems, these different features interact in a non-orthogonal way resulting in a too complex system. We claim that these features can and must be untangled, envisaging a double objective. The first aim of our research is education oriented: to give a more comprehensible view on OO programming. For this purpose we built the compact programming language LENS as the orthogonal combination of three fundamental OO aspects: late binding (by means of message passing), pure (i.e. mixin-based) inheritance and object-based encapsulation. Secondly, we try to engender OO software engineering. As such we obtained two tangible results: one on the field of multiple inheritance, the other in the area of object creation in frameworks (see our papers below).
Multiple inheritance is less expressive than it appears, essentially in its lack to put constraints on multiple inheritance from different classes. For example we should be able to prevent a class to inherit from the classes Male and Female simultaneously. To this extent, (Hamer, 92) includes classifiers in the class hierarchy. We are thinking about a similar static classification mechanism especially destined for mixins, preserving its characteristic of parametrical super binding.
In dynamically typed OO languages with static inheritance, runtime method
lookup can be avoided at an acceptable memory cost (Driesen&Holzle, 95). We are investigating if the just mentioned
static classification can be used to provide LENS with static method lookup
without exuberant loss of memory.
The main artifacts of the LENS project are:
Buiding frameworks through specialisable nested objects
by Marc Van Limberghen. (see papers)
The following persons were involved in the LENS project: