Object-Oriented Programming – Key Concepts

object-oriented

Specifically, programming without inheritance is distinctly not
object-oriented; we call it programming with abstract data types.

I found this great line from Grady Booch's "Object-Oriented Analysis and Design With Applications" book. So in order for a program to be an OO one, are inheritance, abstraction, encapsulation, and polymorphism(?) must-to-be things?

Could anybody please explain me?

Best Answer

Abstraction and Encapsulation are really the only things required for something to be object- oriented.

Inheritance and polymorphism are strategies to take advantage of NOT "reinventing the wheel" which is a benefit to using OO designs.

The base idea behind OO design is to get a large amount of programmers to work together on project X without incurring massive communication overhead, and breaking a project down into objects with defined communication between them is an elegant solution.