Jürg Gutknecht
Appendix H credit: Jürg Gutknecht, ETH Zürich.
Active Oberon is a substantial evolution of the programming language Oberon. It distinguishes itself by a novel object model and by its integration into the .NET language interoperability framework.
The three concepts characterizing Active Oberon are: (1) active object types, (2) a single and unifying notion of abstraction called definition, and (3) a static module construct. These concepts are, in fact, powerful combinations of concepts: Active objects integrate active behavior with reactive message handling; definitions unify the units of usage, implementation, and inheritance; and modules represent both package and static object. The rigid concept of class hierarchy has been sacrificed in Active Oberon in favor of a more flexible concept of aggregation that is based on a generalized IMPLEMENTS relation. The relations IMPORTS and REFINES are used to specify static module dependencies and to derive new definitions from existing ones, respectively.
Active Oberon also features a block statement that is used to group sets of statements sharing certain processing attributes—in particular, the handling of exceptions. Finally, a USES clause allows the use of namespaces within a module without qualification.
This appendix is a report on a work in progress. We divide our presentation into three parts: (1) a short recall of the history of programming languages developed at the ETH, (2) a conceptual overview of Active Oberon's object model called the Active Object System (AOS), and (3) a discussion of the mapping of the AOS into the Common Type System (CTS) exposed by .NET.