In an interface-based binary object system capable of supporting multiple
interfaces into objects created by class templates, a relationship is
defined as a pair of complementary collections on two separate interfaces,
each interface found on separate objects. A link between objects is formed
when an interface of one object lists an object supporting the related
interface included in the object and vice versa. The collections may be of
objects supporting the related interfaces or may be of specific
relationship objects leading to objects supporting the related interfaces.
The collections are potentially multi-valued entities that enable
relationships to be established between objects according to one-to-one,
many-to-one, and many-to-many architectures. By implementing a specific
relationship object, behavior may be imparted to the relationship itself
thereby providing more robust system behavior. Objects thus linked can be
easily traversed so that convenient navigation models can be implemented
allowing clients quick access to desired objects by navigating through
relationships between objects.