A class can contain any of the following items. Interfaces are limited to those indicated.
- Comments describe the intent of your class (or interface), and any other elements in the class.
- isA directives that specify a superclass to your class (i.e. a Supervisor could be descrbied as "isA Person") [Interfaces can have more than one]
- A singleton directive that limits the system to only one instance of this class (e.g. there may only be one Bank in a banking system)
- An immutable directive that ensures that once constructed, an instance cannot be modified (under development).
- Depend directives that describe external dependencies that might be used by your class within methods (Interfaces can contain these too).
- Attributes describing simple data that can be found in any element of the class (i.e. name, dob, amount)
- State machine definitions that describe declaratively attributes that change value in certain behaviour patterns in response to actions such as method calls.
- Inline associations that define links to instances of other classes (or to other instances of this class).
- Key directives indicating which attributes (or in future, associations) are going to be used to define when one element is equal to another.
- Class definitions nested inside this class that define subclass of this class as an alternative to using the isA clause.
- Trace directives to direct generation of traces from the code.
- Methods that provide behaviour for the class. (Interfaces can have declarations of methods only; no method bodies)