Object-oriented programming (OOP) is a paradigm that splits programs into objects that contain both data and functions. Classes define the attributes and behaviors of objects. Objects are instances of classes that encapsulate their state and behavior. Key concepts of OOP include inheritance, abstraction, polymorphism, and encapsulation.