COM objects expose their functionality through an interface mechanism. A COM object's interface provides a pointer, or memory location, to functions that clients call to access the functionality provided by the COM object. This interaction between a user of an object's services (the client) and the implementor of that object and its services (the server) is known as a contract . The services are known as methods or member functions.
The contract between software components defines:
The contract is not intended to define:
An interface is not an object, nor is it an object class (a definition of an object). Interfaces are abstract classes that you should design so that they can be reused in a variety of contexts. For example, a simple interface for generically reading and writing streams of data can be reused by many different types of objects and clients.