Object-oriented programming as it emerged in Simula 67 allows software structure to be based on real-world structures, and gives programmers a powerful way to simplify the design and construction of complex programs.
Another trick in software is to avoid rewriting the software by using a piece that's already been written, so called component approach which the latest term for this in the most advanced form is what's called Object Oriented Programming.
Certainly not every good program is object-oriented, and not every object-oriented program is good.
I made up the term "object-oriented," and I can tell you I did not have C++ in mind.
Object-oriented programming is an exceptionally bad idea which could only have originated in California.
No one believed me when I said it was possible to put fabric in resin.
The only way to write complex software that won't fall on its face is to hold its global complexity down - to build it out of simple pieces connected by well-defined interfaces, so that most problems are local and you can have some hope of fixing or optimizing a part without breaking the whole
Nevertheless, I consider OOP as an aspect of programming in the large; that is, as an aspect that logically follows programming in the small and requires sound knowledge of procedural programming.
Defining OO as based on the use of class hierarchies and virtual functions is also practical in that it provides some guidance as to where OO is likely to be successful.
Object-oriented design is the roman numerals of computing.
Extensive traveling induces a feeling of encapsulation, and travel, so broadening at first, contracts the mind.