Simplified modern definition of OOP
Tuesday, July 17, 2012 9:34:07 PM
An object is a first-class module that is invoked polymorphically. A module is a collection of named operations that can be invoked by clients, and which may include additional hidden details. Polymorphic invocation means that different objects can implement the same operation name(s) in different ways, so the specific operation to be invoked must come from the object identified in the client's request. First-class means that the object can be used in any context where a value is expected, including being passed to operations or returned as the result of an operation.
A language or system is object oriented if it supports the dynamic creation and use of objects. Support means that objects are easy to define and use. It is possible to encode objects in C or Haskell, but an encoding is not support.
Very elegant definition, imho.