Object-oriented programming has its roots in the 1960s, but it wasn’t until the
mid 1980s that it became the main programming paradigm used in the creation
of new software. It was developed as a way to handle the rapidly increasing
size and complexity of software systems and to make it easier to modify these
large and complex systems over time.

Up to now, some of the programs we have been writing use a procedural programming paradigm. In
procedural programming the focus is on writing functions or procedures which
operate on data. In object-oriented programming the focus is on the creation of
objects which contain both data and functionality together.
Usually, each object definition corresponds to some object or concept in the real
world and the functions that operate on that object correspond to the ways
real-world objects interact.