Objects have strongly typed interfaces specified in an interface definition language. It supports multiple interface inheritance, which is used to structure the system abstractions and provides the basis of extending and evolving them. Interfaces are used to define boundaries of software components which can be mapped to different address space and machine boundaries. The model provides parameter passing modes that are especially useful for distributed computing but which can be optimized for the local case. This allows one to construct microkernels with the option of configuring components in the same address space for improved performance.
Objects are instances of interfaces, on which clients can perform operations.
A client of an object is generally unaware of the location of the object's implementation, and can perform operations on the object and pass the object around freely.