It appears to me that you're on a good right-track, superdoc.
I find that the “object” concept has three major advantages ... all of which are compelling in the right situations.
- Encapsulation:
The data and the code are together in just one place.
When you've got “a reference,” you've got a reference to the code and to the correctly-associated data. Multiple instances of the same object can be relied-upon to refer to the same code but distinct data. Very nice...
- Inheritance:
Sometimes the easiest way to describe something is to say that “this is exactly like that ... except ...”
In those cases, it's extremely useful to be able to write code that only deals with the “except...”
- “Why Do I (Have To...) Care?”
Usually, you just want “a Thing” to “work.” You not want to know how and why that “Thing” actually works ... for the same reason that you don't want to have to know why your car works. You just want to be able to say, “here, Fido! Fetch!” ... without concerning yourself with the low-level details of metabolizing dog-food.