Object oriented programming is a form of programming initially described by Alan Kay and used in his programming language Smalltalk. It describes programming language semantics where objects and messages between objects are the basis for computation.
From this basis, other important concepts emerge including encapsulation, inheritance and polymorphism.