In an interface-based object system capable of supporting multiple
interfaces into objects, 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 using 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.