This document provides an introduction to object-oriented programming concepts using Java. It begins by demonstrating how object-oriented thinking is natural through everyday examples of objects like cars and cats. It then defines key object-oriented programming terminology like class, object, attributes, and methods. The document walks through creating a sample Cube class to demonstrate these concepts in code. It shows how to define the class, instantiate objects, access attributes and call methods. The document also covers other OOP concepts like constructors, the toString() method, passing objects by reference, and the null value. Finally, it provides examples of real-world classes like String, LocalDate, Random and how to work with static variables and methods.