Object-oriented programming organizes software around data objects rather than functions. The key concepts are encapsulation, inheritance, and polymorphism. Encapsulation treats an object's data and methods as a single unit, inheritance creates class hierarchies where subclasses inherit attributes and behaviors from parent classes, and polymorphism allows the same method to work differently for different classes. The main building blocks are classes, which act as templates for objects, and methods, which define objects' behaviors.