Object-oriented programming uses objects to represent real-world entities. An object has state, which describes its characteristics, and behaviors, which are its capabilities. A class defines a blueprint for objects and multiple objects can be created from the same class. Objects encapsulate both data and functions that operate on that data.