I would say COM is a very specialised form of OOP.

The underlying objects or processes are not accessible to the caller.

The caller may request an interface to an object, identified by GUIDs.

GUIDs are 16 bytes long, and that is sufficient to uniquely identify every piece of software ever written on this planet.

If the Object GUID and the interface GUID are recognised and if the request is valid, then the COM system will return a pointer to the specified interface.

The interface itself contains a set of method calls and nothing else that the caller is allowed to touch.

(COM interfaces may only inherit methods from one other COM interface.)

This is intentionally restrictive, so that the chances of disrupting major components in a large system is minimised.

Charles