OOP Concepts – Why is There No Consistent Definition of Essential OOP Concepts?

object-oriented

I am very new to programming and a bit confused from reading\hearing different conventions from different sources:

Does Object-oriented programming have 4 or 5 concepts?

As a newcomer, I understand these are the 5 concepts:

  • Abstraction
  • Inheritance
  • Encapsulation
  • Polymorphism
  • Modularity

So how come I don't find a more "strict" definition and there seem to be several arrangements of these concepts out there?

Best Answer

The reason you find different explanations of what object-oriented programming means is because there is no single person or organization with the authority to formulate a strict universally-applicable definition.

Object-oriented programming is not an ISO standard or a scientific law. It is a philosophy. And as with all philosophies, there are all kinds of different interpretations and no interpretation is universally applicable. When you read a text which tells you what concepts you should follow when designing a software architecture, you should see this as a guideline based on the opinions the author formed during their professional experience, and not as an universal truth.