Object-oriented programming organizes a program around objects and well-defined interfaces. A class is a template that defines common properties and methods for objects. Constructors initialize objects when they are created. Objects are instances of classes that combine data and operations. Memory is allocated to objects when they are created using the new operator.