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:
- Messaging as a Programming Model – Let´s get real – With my stab at a definition of what “messaging” means.
- Flows – Visualizing the Messaging Programming Model – How to work with messaging apart from code
- Messaging for More Decoupling – Explaining my first principle of messaging, the Principle of Mutual Oblivion (PoMO)
- Nested Messaging – Flows on Different Levels of Abstraction – Explaining my second principle of messaging, the Integration Operation Segregation Principle (IOSP)
- Bus or Flow? – Messing Done One Way or the Other – Comparing different ways of doing messaging
- Focus on the Flow with Messaging – An example of applying messaging to a scenario found on the internet
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.