![]()
In our view the most important task for the EUROPA architecture group is to define standard types of behaviour of objects. In this context we use the term `behaviour' rather than the more formal term `semantics' as the descriptions might be fairly non-formal and might include aspects that are not strictly semantic.
Some examples of particular object types might be:
The suggestion is that a small set of well defined object behaviours are identified. These are then given standard names, and their behaviour is very specifically defined. These standard object types can then be used portably by programmers, who know the behaviour will be the same on different languages adhering to the EUROPA standard. The actual implementation of the objects might be very different in different languages.
An example of such a standard object behaviour is that of a simple active object, as currently implemented in UC++. In Appendix A we set out a partial specification of the behaviour of these types of objects as they might be defined by EUROPA. A standard name such as EuropaSimpleActiveObject would be defined for such a type. This class would be available to the programmer who could derive classes from it that have this specified behaviour.
Particular specialization of these simple types might also then be defined by EUROPA, such as types with flow control, multi-threaded types etc. Languages would not be required to specify all these types, but if these type names are used they would be required to have this behaviour. An alternative way to deal with these more specialized cases might be to define the meanings of a set of standard object attributes, as discussed in the following section.
![]()