So objects are in one sense just the next logical step from modules and ADT's. Like modules they provide a mechanism for encapsulation, for hiding implementation details from other parts of an application. Like the ADT they provide instantiation, the ability to create new instances, as a key feature. But they also bring something new that was not found in these earlier abstractions. A key new feature is message passing, which is a dynamic (that is, run-time) way of binding procedure names to behavior. Another key new concept is the idea of a class, an organizational principle that permits sharing and reuse. These two new features get combined in the idea of polymorphism, which is a new form of software reuse that is formed on top of classes and dynamic binding.
So objects are both an old and, at the same time, a revolutionary new idea.