This document introduces object-oriented programming (OOP). It discusses the key concepts of OOP including classes, objects, abstraction, encapsulation, inheritance and polymorphism. Classes act as blueprints that define the attributes and behaviors of objects. OOP allows modeling real-world problems through objects that interact by sending and receiving messages. Inheritance enables code reuse by deriving new classes from existing classes. The document also notes some advantages and disadvantages of the OOP paradigm.