The idea of object oriented programming was new when it first came out in Smalltalk in 1972. However, any literate philosopher, would have immediately recognized it as Plato’s Forms.
Briefly, Plato believed fundamentally what we know around us truly are only the ideal forms of an object, and that real world things are actually an implementation detail on those forms. In fact, this idea is pretty powerful and allows one to reason about circles and perfect geometric objects without ever encountering such things.
Object oriented programming, says that we can model these real world interactions by exposing methods that this form would have. The implementation details are left to the developer. Which is very powerful, because on large project other developers can reason about the objects they interact with, without always reasoning about the underlying implementation.
Sometimes though the world disappoints. And those perfect circles do not end up having exactly a 2*Pi*R circumference. And that list which should have had O(1) time for poping the top, ended up being O(n). The nice thing is that developers can fix that bug and make it conform to make a more perfect object.