Today´s mainstream object orientation is not what Alan Kay, the inventor of the term, intended:
I invented the term object-oriented, and I can tell you that C++ wasn't what I had in mind.
To him, a core feature of object orientation was messaging, i.e. some form of “natural” communication:
I thought of objects being like biological cells and/or individual computers on a network, only able to communicate with messages.
Messaging was so important to him that he listed it as second in his definition of object orientation:
1. Everything is an object, 2. Objects communicate by sending and receiving messages [...]
And when asked, what´s lacking in today´s object orientation he explicitly said:
The big idea is “messaging”.
But what is messaging? How can we do it with todays mainstream OO languages?
That´s what I´ve thought about and wrote a couple of articles about in this blog. Here´s a chronological list of them for easy reference:
I think, if we really mean to do object oriented programming, we need to adopt messaging as a core feature of our code. I´d be glad if these articles help you to make the switch.