Object-oriented programming is a programming paradigm that extends the imperative programming approach by organizing code in a way that collects logic and data together into units called objects. Objects contain data in the form of fields called attributes and procedures called methods.
Classes or prototypes are like a blueprints for an object. It contains no data but rather defines what attributes and methods an instance of the class may contain. An instance inherits the structure provided by the class or prototype.
The four basic concepts of object oriented programming are inheritance, abstraction, polymorphism, and encapsulation.