Object Oriented Programming (OOP)

It's all nice and dandy that I've heard this term before and can even sorta figure out what it means, but what does it really mean?

The top results in Google for OOP comes from TechTarget.com. It reads:

Object-oriented programming (OOP) is a programming language model organized around objects rather than "actions" and data rather than logic. Historically, a program has been viewed as a logical procedure that takes input data, processes it, and produces output data.

The rest of the article is fairly interesting and a quick read, but I'll summarize my understanding here.

When we first started out with computers we wanted to be able to feed something in, have the computer do something with it (compute) and spit something out. Calculators for instance. These days our computing is primarily data driven. We're working with large pieces of data for example profiles for people (Facebook), search results, geographical data etc. Each of these can be written like an object with multiple fields. The majority will share similarities. Take a person for example Name, Age, Gender, Social Security #, Passport #, Credit Card #, Relatives, Hobbies etc. So we create an object that encompasses that information (data) and make it available to our functions. Now we can create thousands of objects and manipulate or work with them.

Something like that. Like a bunch of clowns tossing bowling pins back and forth. Except the bowling pins are Matryoshka dolls. And the clowns are us, but we knew that.