Object oriented programming provides a way to create modular programs using objects. An object contains both data and functions that operate on that data. Classes are used to create objects, with classes binding data and functions together. Classes allow data to be hidden from external access via encapsulation. Objects of a class can inherit properties from other classes through inheritance. Polymorphism allows objects to take on multiple forms.