• Code reusability New objects can be derived from old objects, allowing for improvement and refinement of the code at each stage and also preserving parts of the code for other programs. This is used to develop many class libraries using class codes that have already been written, for example, Microsoft Foundation Classes (MFC).
Code Modularity Everything in OOP is an object; these objects can be interchanged or removed to meet the users' needs .
• Easier maintenance Inheritance usually reduces maintenance because of the 'domino effect it has on derived classes when a change is made in a base class.
• Design stability Once a stable base class has been developed, the new classes that are derived may have fewer less errors and bugs.
• Improved communication between developers and users Objects can be broken down into real life entities, hence it is easier it communicate ideas.
• Seamless transition from design to implementation This is mainly because communications are improved.
Drawbacks of OOP
• Execution overhead Once a derived class is initiated all the data and functions from the base classes are carried along with it. Some of these, or even most of it, may not be used. Derived classes can be very complex because of inheritance and polymorphism.
• Abstraction may lead to performance degradation.
Challenges of OOP
• High learning curve OOP is different from traditional programming. We must develop strong base classes and understand the functionality of class libraries before we can take advantages from it.
• Difficulty in establishing base classes A good foundation must be created before you derive other classes. Base classes have to be generic enough to meet the needs of your application and any future upgrades to that application.