This document provides an overview of object-oriented programming (OOP) concepts. It defines OOP as an approach for building software systems using classes, objects, and inheritance. Key concepts discussed include: classes define properties and behaviors of objects; objects communicate through message passing; inheritance allows classes to extend and specialize other classes; abstraction manages complexity through relevant interfaces; and polymorphism allows classes to take multiple forms. The benefits of interfaces and polymorphism for code reuse and managing different related types are also highlighted.