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, and they can receive and respond to messages to perform tasks and interact with other objects.