Vertical, horizontal, and behavioural extensibility of software systems
FacultiesFakultät für Informatik
LicenseStandard (Fassung vom 03.05.2003)
By distinguishing three different dimensions of extensibility - vertical (extensions of the type hierarchy), horizontal (extensions of the spectrum of operations available on types), and behavioural (extensions or even modifications of the original behaviour of operations) - it is shown that typical object-oriented programming languages support only the first dimension in a direct and modular way. On the other hand, a new and surprisingly simple concept called dynamic routines, that is introduced in this paper, simultaneously supports all three dimensions in a natural and flexible way. The concept has been implemented as precompiler-based language extensions for C++, Oberon-2, and Java.