
Shervin Z. answered 03/21/19
Full Stack Developer by Day Tutor and programming mentor by night
There is a thorough and and complete answer in the following link for the second answer:
https://cs.stackexchange.com/questions/18963/is-there-a-theory-abstraction-behind-oop
and three papers and documents the author links to the answer.
In summary, OOP emerged from the concepts mainly in set theory as well as object model design. The latter introduced the concept of inheritance within the building blocks of a system which took place by instance types and became first fundamental block for OOP. Later abstraction, Encapsulation and Polymorphism ideas completed the above concept and hence OOP was born and its ideas were used widely in Software Engineering world.