Object oriented programming (OOP) offers a clearer, more reliable, and more easily maintained way to program by organizing code around objects. OOP uses key concepts like encapsulation, inheritance, and polymorphism. Encapsulation combines data and functions into objects, inheritance allows classes to inherit properties from parent classes, and polymorphism allows the same message to be processed in different forms. While OOP has advantages like code reusability and easier maintenance, it also has disadvantages like overly generalized classes and requiring more planning and design.