Lightweight Nested Inheritance in Layer Decomposition

Tetsuo Kamina and Tetsuo Tamai


Software is often constructed as a stack of layers where a sublayer extends its superlayer. Such extension of layers requires extension of mutually recursive classes that form a layer. Furthermore, a class within a layer often inherits from another class within the same layer, and this inheritance relation is preserved in the sublayer. Supporting these features in a type-safe object-oriented languages imposes many challenges to us, and this issue has attracted many researchers. One problem of constructing a layer is that it can be a large monolithic module, thus a mechanism of decomposition of a large layer is required. We propose a programming language that supports decomposition of layers, which works even when a class within a layer inherits from another class within the same layer and thus supports extension of inheritance relations. This language is a very small extension of our previous work "lightweight dependent classes," thus this is a lightweight extension of Java. The language is formalized as a small calculus.

Full paper


Presented at FOOL'10; Sunday, 17 October 2010, Reno, Nevada, USA.