This document introduces object-oriented programming (OOP) by explaining the differences between structured and OOP, defining key OOP terminology like objects, classes, methods, and attributes. It describes the four main design principles of OOP - encapsulation, abstraction, polymorphism, and inheritance. Encapsulation hides implementation details and abstraction focuses on important facts. Polymorphism allows the same word to have different meanings. Inheritance allows classes to inherit attributes and methods from superclasses to subclasses. Popular OOP languages include Java, C++, and Smalltalk.