1. A method of establishing a relationship between objects that include one or more interface means, said method comprising the steps of: defining one or more interface means, each interface means comprising (a) one or more properties that are capable of describing the state of an object, (b) one or more method means for accessing and modifying said properties and exposing other behavior and (c) an interface identifier means for uniquely identifying each interface means so as to enable accessing of said one or more method means; establishing one or more class means, each consisting of executable code means that implements one or more of said interface means and having a unique class identifier means; instantiating at least two objects, such that (a) each object is an instance of one or more of said class means, (b) the state of each object is defined by the properties of the one or more interface means implemented by said one or more class means, and (c) each object is accessible through at least one of said one or more interface means, said at least two objects including an origin object and a destination object, wherein: said origin object includes one of said interfaces designated as an origin interface; and said destination object includes one of said interfaces designated as a destination interface; and establishing a relationship between said origin object and said destination object by defining said relationship as a pair of complementary collections, said pair of complementary collections including a first collection that is supported by said origin interface and a second collection that is supported by said destination interface, the first collection supported by the origin interface logically linking the origin interface with the destination object and the second collection supported by the destination interface logically linking the desitination interface with the origin object.