Skip to main content
Jump to: navigation, search

OTJ Primer

Revision as of 08:12, 8 July 2010 by (Talk | contribs) (New page: The programming language OT/J introduces two '''new kinds of classes''' * Image:Team_obj.gif '''Teams''' * Image:Role_obj.png '''Roles''' However, it is much more interest...)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

The programming language OT/J introduces two new kinds of classes

  • Team obj.gif Teams
  • Role obj.png Roles

However, it is much more interesting to look at what happens between these things.
Here, OT/J introduces the following major relations:

Role Playing


Role classes/objects are playedBy base classes/objects. The communication between the two part objects is defined using

  • callout method bindings for forwarding role-to-base
  • callin method bindings for intercepting method calls base-to-role

Details on Role Playing ...

Role Containment


Role classes/objects are contained in a team instance.

  • Roles preferably communicate with other roles.
  • Roles can be confined to their enclosing team to protect them against external access
  • Data-flows between a team an its outside applies translation polymorphism to translate between roles and bases:
    • sending a role object to the outside applies lowering (role-to-base translation)
    • sending a base object into a team applies lifting (base-to-role translation)
  • Team activation controls the enablement of callin bindings

Details on Role Containment ...

Team Inheritances


  • A team class can be sub-classed including all its contained roles (similar to Java classes with inner classes)
  • A sub-team can override any of its inherited roles (different from Java inner classes).
  • An overriding role implicitly inherits from its overridden version.

Details on Team Inheritances ...

Back to the top