Certain individual objects in a Cúram application model appear as multiple classes in the output code. The objective of the generated class hierarchy is to ensure the following:
- The developer provides all handcrafted implementation within a single Java class.
- The public parts of the object's interface are accessible to other objects and the non-public parts of the object's interface are not accessible to other objects.
- The developer is forced to implement all of the declared interface, both public and non-public - unless the generator produces the necessary implementation.
- Objects can be subclassed and a subclass can be defined to replace its superclass transparently.
- The run time type of an object is determined by a factory, to support replacement and tracing.