The theory aside, which really spurred the adoption of OOPS, was the emergence of Windows-based graphical interfaces.
If you are just programming a DOS or Mainframe terminal application, you really do not need OOP, of course, this can be useful, but there is no good reason to accept it. However, as soon as you start coding any wimp-based GUI, then its effective management without OOP is very difficult, especially when you go beyond a simple system.
I cut my teeth, coding the Mac back when Pascal was the default language, you had to handle your own main event loop, and such things go through the rectangles to redraw the window when it was in the background, covered by the windows in front of it. Therefore, a huge amount of even the simplest program concerned the basic infrastructure, and it was not a trivial task to keep one interface clean so that the code did not fall into tangled spaghetti. The same can be said of Windows (read the books of the early Charles Petzold programming books) and other graphical interfaces at the time.
The adoption of OOP has greatly simplified this, since OOP is a natural approach for graphical interfaces. At present, we consider this obvious and natural, but this was not always the case, and, of course, the adoption of OOP at that time was considered to be something of a big challenge for programmers. However, the result was that all new programmers have grown from OOP since the late 90s, because it is really necessary for processing graphical interfaces, as a result of which it is for the most part a standard way of coding, and therefore its use has been widely spread for interface limits.
Cruachan
source share