Merits of OO Methodology
Object-oriented design involves identification and implementation of different classes of objects and their behavior in a real world problem. The objects in a software system closely correspond and relate to the objects in the real world in a one-to-one manner. Thus, it is easier to design and implement a system consisting of objects.

Merits:
Since the objects are autonomous entities and share their responsibilities only by executing methods relevant to the received messages, each object lends itself to greater modularity. Flexibility is also gained by being able to change or replace modules without disturbing other parts of the code. Moreover, the independence of each object eases development and maintenance of the program. The following are some of the merits of Object Oriented methodology:
- Information hiding and data abstraction increase reliability and help decouple the procedural and representational specification from its implementation.
- Dynamic binding increases flexibility by permitting the addition of new classes of objects without having to modify the existing code.
- Inheritance coupled with dynamic binding enhances the reusability of code, thus increasing the productivity of a programmer.
- Many OO languages provide a standard class library that can be extended (extend ability) by the users, thus saving a lot of coding and debugging effort.
- The advantages of object orientation also includes: shorter development time, high degree of code sharing and malleability (can be molded to any shape).
Demerits:
The runtime cost of dynamic binding mechanism is the major disadvantage of object-oriented languages. The following were the demerits of adopting object-orientation in software development in the early days of computing (some remain forever):
- Compile time and Run time overhead
- Re-orientation of software developer to object-orientated thinking
- Requires the master over the following areas:
- Software Engineering
- Programming Methodologies
- Benefits only in long run while managing large software projects, at least moderately large ones.