For what reason is so much consideration today centered around object-oriented programming as a rule and C++ specifically?
Answers
Answer:
The advantage is that the things that belong together are put together in code. C already allows to collect variables into structs. So, this is not always just restricted to object oriented languages. However, OO languages is not just combining variables into classes, but also all functions that are used to manipulate the class. These are the advantages of almost all implementations of object orientation.
Unfortunately, Wikipedia does not seem to distinguish between the concept of object orientation and its implementation. Their description is mostly based on implementation details. Nevertheless, it is also the way most people talk about OO because they are thinking in the concepts of their OO languages. The OO concept itself is quite simple:
There are objects.
You can send messages to objects (usually implemented as methods).
Objects belong to the same class if the behavior to all messages is the same (based on some internal state).
You can have specialization (usually implemented through inheritance), i.e. an object belongs to a subclass if it shows at least the same behavior as objects of the superclass.
Probably, there are more things to OO that I have forgotten to list. But, these are some of the more important rules. I'd like to comment on a few points.
Early implementations of object oriented languages took point 2. quite seriously. Sending a message to an object was literally sending a string which in most cases corresponded to a method name. This is still the case in some modern languages like Objective-C, for example. Here, objects can have a function to catch any message that cannot be forwarded to a method. This allows for some interesting responses instead of plain failure.
Not all OO languages make classes that obvious. There are languages which are prototype-base, like JavaScript, or where 'classes' is truly an abstract concept. I think the language is called BETA where you get new objects by cloning others. Directly after cloning they show the same behavior and are thus of the same class. After adding a method to only one of the objects they are not of the same class anymore (though we have subclassing now).
I think that point 4. is very crucial to the understanding of OO. Not every OO language uses inheritance for specialization (as if just showed with BETA above). You should learn to separate OO concepts from their implementation in OO languages. BTW, in popular OO languages it is possible to go against this OO concepts of specialization. If class A inherits from class B and you overwrite a method of class B in A, you can certainly change the behavior entirely. So, inheritance is not a bullet-proof way to guarantee specialization (see Liskov substitution principle).
There is one thing you should remember: Even though OO is helpful to solve many problems, it is not always the best way to solve a problem.