This document provides an overview of object-oriented programming (OOP) concepts. It defines OOP as a programming technique that uses objects and classes. Key concepts discussed include classes and objects, inheritance, data abstraction, encapsulation, and polymorphism. Benefits of OOP include reusability, extensibility, understandability and security. Inheritance allows reuse of existing classes, and can be single, multiple, public, protected or private. Data abstraction hides background details and provides essential information. Encapsulation binds data and functions that manipulate the data. Polymorphism enables different object types to respond to the same function name.