> Since a standard definition doesn’t exist, for the purpose of our discussion we will provide one.
Who said a standard definition doesn't exist? From Alan Kay, who 'invented' object-orientation and coined the term:
> OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things. It can be done in Smalltalk and in LISP. There are possibly other systems in which this is possible, but I’m not aware of them[0].
Yes, you can make the argument that the term has evolved in common parlance beyond what Kay originally conceived of, but it's silly to propose a "modern" definition of object-orientation and not at least mention the original definition.
Kay's definition is by no means "standard". "Standard" usage of the term started deviating from Kay's definition almost as soon as it was conceived. By time the term was widespread, it already meant something different to what he envisioned.
It may be "silly" not to mention the original, but in this context the original a distraction: the original definition would exclude pretty much every language we today tend to consider object-oriented.
The blog post gives us, "To me this feels very much like an object. I am able to create a structured data type and then define methods that interact with that specific data." Defining OOP as functions that consume structured data fails to exclude a lot of languages we don't consider object-oriented.
Who said a standard definition doesn't exist? From Alan Kay, who 'invented' object-orientation and coined the term:
> OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things. It can be done in Smalltalk and in LISP. There are possibly other systems in which this is possible, but I’m not aware of them[0].
Yes, you can make the argument that the term has evolved in common parlance beyond what Kay originally conceived of, but it's silly to propose a "modern" definition of object-orientation and not at least mention the original definition.
[0] From a 2003 email: http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay...
[1] Note that he does not mention Java, even though he write this during the height of Java's popularity: http://www.tiobe.com/index.php/paperinfo/tpci/Java.html