Describe the concept of object-oriented programming (OOP) and its key principles.
OOP is a programming paradigm centered around objects, which encapsulate data and behavior. The key principles include encapsulation (binding data and methods into a single unit), inheritance (creating new classes based on existing ones), and polymorphism (allowing objects to take multiple forms through overloading and overriding).