The title of the article rendered professional use of the PLO.
I understand that the question relates to software systems developed by qualified programmers and implementing fairly complex functionality in order for the use of OOP to be justified.
If so, then you can try to answer the questions.
Why, when they make a method, does it get a lot of investments?
Because in any large, well-designed OOP system there are classes with several levels of inheritance. And, therefore, each next descendant can call the methods of its ancestor. Therefore, for example, with three levels of inheritance, by definition, there can already be at least two levels of nesting of calls to the same method. Apart from calls to interface methods of other classes, which can also be considered as nested functionality for a specific function.
These nesting (a lot of small methods) are created, in order to use, for other methods, so as not to duplicate the code?
In a well-designed OOP system, each method must fulfill only its purpose. Consequently, the presence of monster functions that are universal and perform a bunch of different actions for their intended purpose, is extremely contraindicated in the professional system. Since the systems are quite complex (see my introductory condition), there are many functions performed. Consequently, there must be many small methods, each of which does what is needed. And already where and how to call these methods, the programmer decides depending on the task. It can be a call of one method of another (or its) class in one method of the class being implemented. Or maybe a few ... Duplicate or not duplicate code depends on the system design. Sometimes it is BETTER to duplicate the code than to make an extra connectedness of the elements. For example, if there are two parallel classes that solve approximately one problem, but slightly differently. Two approaches are to make one common method in the base class (elimination of duplication) or to make two methods in each of these parallel classes (code duplication). The first approach should be chosen if the executable part of the code is completely identical and most likely will not change in the future. The second approach should be chosen in case the duplicated part of the code is likely to be changed or supplemented. Since in the first approach, if you suddenly need to make changes to the code common to both classes, but necessary only for one of the classes, you will have to complicate the code already implemented GENERAL for the two classes. That will adversely affect the stability of the system as a whole.
Is this the proper use of the oop?
The criteria for the correctness of writing code for each programmer is different.
Moreover, even on each project they are different.
I'm not talking about the community of programmers in general.
Therefore, the OOP in each specific case can be “correctly” or “incorrectly” defined only by the totality of certain requirements that are imposed on the system.
For example, if reliability is considered the most important requirement for a system, then the correct use of OOP will consist of competently partitioning the entities and the functions performed by these entities. These functions are usually many. Consequently, the nesting will be quite large compared with the implementation of the same system, for example, in the structural programming paradigm.