"Object," along with "system," is one of the most heinously overloaded terms in computer programming.
In the most general case an object is a unit; a distinct entity. However, within various areas, instances of the general term "object" acquire particular significance. This is especially problematic when the various disciplines of programming overlap, as they are wont to do.
For example, objects in Microsoft's COM API are represented by (but not encapsulated as) C++ objects. It's important to remember that the C++ object is just an interface to the underlying COM object. Some COM objects represent namespace objects, Windows GUI terminology referring to things representable under the hierarchy rooted by the Windows desktop. Other namespace objects include filesystem objects, meaning files and directories, and symbolic links under appropriate operating systems. And files themselves can store serialized objects, which are represented as memory objects. Each of these uses of "object" has a particular, exact meaning that is distinct from the others. One frequently has to clarify which meaning of "object" one intends.
Even within the discipline of object-oriented programming, the meaning of "object" differs. For example, what Object Pascal calls an object is what a C++ programmer would call a class. What a C++ programmer would call an object is an instance to an Object Pascal programmer.