Object-oriented programming (OOP) is a paradigm centered around objects, which bundle data and methods. Key principles include encapsulation (hiding internal states), inheritance (reusing and extending classes), polymorphism (same interface for different types), and abstraction (simplifying complex systems). Classes define blueprints for objects, which are instances containing attributes (data) and methods (functions).