Object-oriented programming (OOP) is a programming paradigm based on the concept of objects fundamental to many programming languages, including Java and C++. OOP can be devided in two sub types: class-based (or "classical") and prototype-based OOP (found in JavaScript, for example).
Object-oriented programming has several advantages over procedural programming:
- OOP provides a clear structure for the programs
- OOP helps to keep the code DRY "Don't Repeat Yourself", and makes the code easier to maintain, modify and debug
- Logic can be abstracted, encapsulated, composed, inherited and decoupled