1. Object oriented programming is a programming model organized around objects rather than actions and data rather than logic. The basic concepts are objects, classes, encapsulation, abstraction, data hiding, polymorphism, and inheritance.
2. An object has an identity, properties, and behavior. A class is a blueprint that defines common attributes and behaviors of objects. Classes allow for data and functions to be bundled together.
3. The key features of OOP are encapsulation, which combines data and functions into a class; abstraction, which hides complex details and shows only essential information; inheritance, which forms new classes from existing classes; and polymorphism, which allows the same operation to be performed in different ways.