D.2.8 Describe the disadvantages of OOP
simplicity: software objects model real world objects, so the complexity is reduced and the program structure is very clear;
modularity: each object forms a separate entity whose internal workings are decoupled from other parts of the system;
modifiability: it is easy to make minor changes in the data representation or the procedures in an OO program. Changes inside a class do not affect any other part of a program, since the only public interface that the external world has to a class is through the use of methods;
extensibility: adding new features or responding to changing operating environments can be solved by introducing a few new objects and modifying some existing ones;
maintainability: objects can be maintained separately, making locating and fixing problems easier;
re-usability: objects can be reused in different programs.
data-hiding: Base class can decide to keep some data private so that it cannot be altered by the derived class.
Steep learning curve: The thought process involved in object-oriented programming may not be natural for some people, and it can take time to get used to it. It is complex to create programs based on interaction of objects. Some of the key programming techniques, such as inheritance and polymorphism, can be challenging to comprehend initially.
Larger program size: Object-oriented programs typically involve more lines of code than procedural programs, which translates into more space occupied by the programs.
Slower programs: Object-oriented programs are typically slower than procedure based programs, as they typically require more instructions to be executed.
Not suitable for all types of problems: There are problems that lend themselves well to functional-programming style, logic-programming style, or procedure-based programming style, and applying