Object oriented programming is a programming paradigm that uses objects and their interactions to design applications and computer programs. Key concepts of OOP include encapsulation, inheritance, polymorphism, and abstraction. Objects contain data in fields and code in methods that operate on their data which allows objects to receive and respond to messages to perform actions.