This document provides an introduction to object-oriented programming concepts. It discusses procedural programming versus object-oriented programming, with OOP breaking tasks into real-world objects that contain both data and logic. The 6 key concepts of OOP are then defined: objects, which encapsulate state and behavior; classes, which provide blueprints for creating objects; data encapsulation, which hides implementation details; public interfaces, which allow interaction; inheritance, which allows acquiring of properties from other classes; and polymorphism, which uses the same methods across multiple classes. The learning objective is to understand these OOP concepts and have an overview of using them in the Java programming language.