This document provides an introduction to object-oriented programming (OOP) concepts. It defines key OOP terms like class, object, instance, abstraction, encapsulation, inheritance, polymorphism, interface, abstract, type hinting and namespaces. It explains the differences between OOP and procedural or functional programming approaches. It also provides examples to illustrate classes, objects, inheritance, interfaces, abstract classes, type casting and hinting, and namespaces. The document concludes by suggesting further resources for strengthening OOP skills.