By now we understand that an object is an entity that can be experienced or used only through its interfaces, and those interfaces are nothing more than semantically related groups of functions. Each interface uniquely identifies an object's support for a particular feature across time and space by virtue of its IID. Although an object has its own class identity, it is really its interfaces that make that object useful. We reviewed the binary structure in Chapter 1; this is repeated in Figure 2-1 on the following page to refresh our memories. It is through this structure that a client calls interface members to access the object.
We are now ready to explore additional topics about these interfaces: identity, definition (including calling conventions and standard error types), and, most important, attributes and properties of interfaces. These define the rules of implementation that external clients will expect an object to follow.
Figure 2-1.
The binary interface structure.