Object oriented programming allows objects to cooperate by exchanging data and messages to achieve goals. OOP uses objects that contain data and methods. Key techniques include encapsulation, inheritance, and polymorphism. Simula was the first language to include many OOP concepts like classes and objects. Smalltalk was the first language called object-oriented. Objects encapsulate data and methods to access it. Encapsulation, polymorphism, and inheritance are important OOP concepts.