1. Object oriented programming (OOP) is a programming paradigm that models concepts as "objects" that contain data and functionality.
2. A class defines the format for objects, including attributes like properties and behaviors like methods. Creating an object from a class is like a real-world object.
3. OOP concepts like encapsulation, inheritance, and polymorphism address limitations of procedural programming by combining related data and functions into classes and objects. Encapsulation wraps data and functions together, hiding implementation details.