Reusability carries the greatest potential for improving system development. It is difficult to combine actions if the data structures they access are not taken into account. To combine entire data structures increases system compatibility. Abstraction Abstraction is the selective examination of certain aspects of a problem. It isolates those aspects that are important for some purpose and suppress those aspects that are unimportant.
All abstractions are incomplete and inaccurate.
Therefore we can apply them in many cases. By using Encapsulation or information hiding, Object-Oriented design obtains lower coupling and higher cohesion than the functional approach. Lower coupling means that modules in a system should have little dependence on other modules in the system. Cohesion or biding describes the strength of relation within a module. Inheritance Inheritance is abstraction for sharing similarities among data structures while preserving their differences.