next up previous contents
Next: Type Conformance Up: ValuesObjects, Classes and Previous: Entities

Types and Classes

  Each reference or value object has a class type which specifies its features. A class type uniquely corresponds to a class and its class specifier. Hence the terms type of a reference or value object, class and class specifier may be used interchangeably.

Each method has a signature indicating the number, kinds and types of its parameters and result, if any. The parameter kind is in, out, inout or once. In and once parameters are transmitted through call-by-value. Out parameters are local entities of the method whose values are transmitted through call-by-result when the method call returns to the caller; the corresponding argument must be a variable. Inout parameters are in parameters as well as out parameters, i.e. they are transmitted by cal-by-value-and-result. Once parameters are permitted for stream methods only. A once parameter is assigned only once when the stream object is established and is not reassigned at later stream calls. The signature of a method is called a method type. A bound method has a method type in which only the free parameters are specified.

Each stream object has a stream object type. It is derived from the (bound) stream type used to create the stream object but additionaly indicates that the stream is in progress.

The value of an object and the reference to a stream or reference object carry the same type as the object. The class (type) of a reference or value object is called a reference or value class (type) respectively.

Classes and stream types for which objects can be created are called concrete classes and types respectively. For use in the context of inheritance there exist also abstract classes (types) which do not necessarily describe all the details of the features of objects. They may be used for forming polymorphic types. Additionally there are external classes for describing the interface between SATHER-K and other parts of a software system.

External classes can neither be abstract nor value nor reference classes.

Reference classes cannot be subtypes of value classes and vice versa. The predefined class OB is a superclass of all reference and value classes, and is exceptional in this respect.

Simple value classes are either predefined, cf. 8.2.2, or user defined. A user defined simple value class is a class that inherits a simple value class. This must be its only inheritance, and the class must not define additional attributes.

A numeric type is given by a simple value class which inherits one of the predefined numeric types, cf. 8.2.2.

For external classes see 9.1.2.

Problem: The existence of value and reference types besides each other, the fact that in the one case we have to create the objects explicitly in the other case not, and the differences in interpretation of the assignment and comparison operation constitute the most annoying properties of most imperative object-oriented languages. These properties are only justifiable from the efficiency point of view. tex2html_wrap_inline1707


next up previous contents
Next: Type Conformance Up: ValuesObjects, Classes and Previous: Entities

Martin Trapp
Mon Feb 17 16:49:16 MET 1997