Oberon-2(ID:1647/obe003)


A redesign of Object Oberon.

Type-bound procedures (equivalent to methods), read-only export of variables and record fields, open array variables, and a 'with' statement with variants. The 'for' statement is reintroduced.



Structures:
Related languages
Oberon => Oberon-2   Evolution of
Object Oberon => Oberon-2   Evolution of
Oberon-2 => COMPONENT PASCAL   Evolution of

References:
  • Moessenboeck, H. "A superset of Oberon-1 to include object-orientation" Second Intl Modula-2 Conf, Sept 1991. view details Abstract: A redesign of Object Oberon. Type-bound procedures (equivalent to methods), read-only export of variables and record fields, open array variables, and a 'with' statement with variants. The 'for' statement is reintroduced.
  • Moessenboeck, H. "Differences between Oberon and Oberon-2 The Programming Language Oberon-2" TR 160 ETH Zurich May 1991 view details
  • Moessenboeck, H. and Wirth, N. The Programming Language Oberon-2 TR Uni Linz CS-SSW-P91-12 view details Abstract: Oberon-2 is a general-purpose programming language in the tradition of Pascal and Modula-2. Itsmost important features are block structure, modularity, separate compilation, static typing withstrong type checking (also across module boundaries), and type extension with type-boundprocedures. Type extension makes Oberon-2 an object-oriented language. An object is a variable ofan abstract data type consisting of private data (its state) and procedures that operate on this data. Abstract data types are declared as extensible records. Oberon-2 covers most terms ofobject-oriented languages by the established vocabulary of imperative languages in order tominimize the number of notions for similar concepts. This report is not intended as a programmer''stutorial. It is intentionally kept concise. Its function is to serve as a reference for programmers,implementors, and manual writers. What remains unsaid is mostly left so intentionally, eitherbecause it can be derived from stated rules of the language, or because it would require to committhe definition when a general commitment appears as unwise. Appendix A defines some terms thatare used to express the type checking rules of Oberon-2. Where they appear in the text, they are written in italics to indicate their special meaning (e.g. the same type). ps
  • Nigro, Libero "On the type extensions of Oberon-2" pp41-44 view details Abstract: Oberon-2, the latest Prof. N. Wirth language design, supports object-oriented (OO) programming through an original record type extension mechanism. The language is expected to gain a growing acceptance both in the academic and industrial worlds. This short note aims to make a critical evaluation of Oberon-200 facilities by showing how the current language definition can be too restrictive in the building of usual type hierarchies like those allowed, for instance, by C++. A minor extension is suggested which improves the effectiveness of Oberon-2.
    DOI Extract: Introduction
    Introduction
    Oberon is the name both of an innovative Operating System and of the language which was used, to a large extent, in the development of the system and which allows programmers to further extend the system in a highly integrated and uniform way. The lucidity and minimality of the Oberon design are impressive and are an authoritative clear indication of how complex software systems can be built without having just to add layers to layers of software - the bad common trend in the software area today with the inescapable consequence of creating duplication of functions or, worse, of hiding fundamental lower functions. This situation in turn leads to big software packages whose hardware requirements can even exceed the capabilities of modern powerful personal workstations. The Oberon system, instead, rests upon a few basic principles among which object-orientation through the concepts of record type extensions.
    During the implementation of the Operating System, the Oberon language was tuned to better serve to its end goal and Oberon-2 reflects the latest language redefinition. It isn't the purpose of this short note to provide a tutorial of Oberon-2. The interested reader is referred to the relevant bibliography IWir88a, Wir88b, Rei921. The objective of this note is to point out the way Oberon-2 supports the building of type hierarchies, which, being based on strong information hiding, can be too restrictive in the practical construction of inheritance based type hierarchies. A minor extension is suggested which improves the effectiveness of the language. In the following, the Oberon system is assumed to be available on one of the possible platforms which include Sun, PC, Macintosh and so forth.
    Extract: Modules and abstract data types
    Modules and abstract data types
    Programming in Oberon-2 relies upon the fundamental issues of introducing, using and extending abstract data types (adt). An adt normally takes the shape of a record type defined in a module - the basic language construct which can be compiled as a unit. A module introduces a global scope which affects the visibility of the entities the module specifies and which can be selectively exported.
    Extract: Conclusions
    Conclusions
    This short note examines the mechanims of Oberon-2 which enables the construction of type hierarchies via type extensions. It is shown that such mechanims can be too restrictive in the actual building of type hierarchies. A minor extension is suggested which introduces a protection export a la C++. The proposed extension looks very similar to C++ selective export, which permits to distinguish among features which are publicly exported from features not exported (hidden or private) and features protected exported to derived classes only. However, the Oberon-2 extension is even more flexible since the export can be specified as read-only or read-write. The proposal should be easly incorporated into the current compiler implementation.
          in [ACM SIGPLAN] SIGPLAN Notices 28(02) February 1993 view details
  • Moessenboeck, H. "Extensibility in the Oberon System" Uni of Linz TR CS-SSW-P94-01 1994 view details Abstract: We show how an object-oriented system-and in particular the Oberon System-can be used to write software that is extensible by end users even while the software is running. Extensibility instead of completeness may be a way out of the unpleasant situation in software industry where applications still
    ps
          in [ACM SIGPLAN] SIGPLAN Notices 28(02) February 1993 view details
  • Moessenboeck, H and Wirth, N. "Component Pascal Language Report" 10. Sept. 97 (Preliminary) view details Extract: Introduction
    Component Pascal is Oberon microsystems' refinement of the Oberon-2 language. Oberon microsystems thanks H. Mössenböck and N. Wirth for the friendly permission to use their Oberon-2 report as basis for this document.

    Component Pascal is a general-purpose language in the tradition of Pascal, Modula-2 and Oberon. Its most important features are block structure, modularity, separate compilation, static typing with strong type checking (also across module boundaries), type extension with methods, dynamic loading of modules, and garbage collection.

    Type extension makes Component Pascal an object-oriented language. An object is a variable of an abstract data type consisting of private data (its state) and procedures that operate on this data. Abstract data types are declared as extensible records. Component Pascal covers most terms of object-oriented languages by the established vocabulary of imperative languages in order to minimize the number of notions for similar concepts.

    Complete type safety and the requirement of a dynamic object model make Component Pascal a component-oriented language.

    This report is not intended as a programmer's tutorial. It is intentionally kept concise. Its function is to serve as a reference for programmers. What remains unsaid is mostly left so intentionally, either because it can be derived from stated rules of the language, or because it would require to commit the definition when a general commitment appears as unwise.

    Appendix A defines some terms that are used to express the type checking rules of Component Pascal. Where they appear in the text, they are written in italics to indicate their special meaning (e.g. the same type).

    It is recommended to minimize the use of procedure types and super calls, since they are considered obsolete. They are retained for the time being, in order to simplify the use of existing Oberon-2 code. Support for these features may be reduced in later product releases. In the following text, red stretches denote these obsolete features.



    External link: Online copy
          in [ACM SIGPLAN] SIGPLAN Notices 28(02) February 1993 view details
    Resources
    • Oberon report
      doc
    • Version 4

      "