Object-oriented programming is a logical approach to software engineering that models real-world objects. It allows objects to interact by sending messages. Each object has an identity, state defined by member variables, and behavior defined by methods. The paradigm was developed in the 1960s and resulted in Simula and Smalltalk in the 1970s. Object-oriented programming focuses on data rather than code and uses objects containing both state and behavior as the unit of abstraction.