Object-orientation is more than 30 years old, and at first glance
there seems to be a consensus upon what it is about.
This may however —so shall I argue— be deceptive, as different
people may have radically different opinions, excluding each other, and
barring any hope of convergence by largely ignoring each other, or
being unwilling to discuss, pretending the debate has already taken
place (see Bourdieu).
There is still room for an attempt to structure this chaos. Let's try to take into account former such attempts, distinguishing the diachronic from the synchronic ones (Saussure's dichotomy).
Among the diachronic attempts, let's mention Meyer's and
Stroustrup's. Both accept Simula (Nyygård and Dahl) as the primary
source of inspiration (with secondary sources e.g. in Algol and CLU).
A separate tradition is claimed by Ivaar Jacobson.
Yet another refers to David Parnas, and software engineering
concerns.
Distinct also is the relational database tradition, with data
orientation and a certain degree of encapsulation.
Next is a logic programming tradition, with mentions of Dana Scott
(for example).
Finally (?), an artificial intelligence tradition, claiming
the motherhood of semantic IS_A relationships.
Peter Wegner is well-known for his attempt to offer a synchronic classification of Object-orientation. Yet, this attempt belongs already to the past, and one must admit it has not been predictive (e.g. where he spoke of "interesting" trends).
In my opinion, a synchronic classification of OO today should account for UML (the "unanimous" camp), Smalltalk (the "pure" camp), Self and Cecil (the "prototype" camp), C++ and Eiffel (the "static typing" camp... or how many camps are there here? Do Java, Beta, Ada 95 fit within?). Where do the various OO databases fit? And the Lisp derivates (CLOS, are there still any others)? How to account for generic programming (Alexander Stepanov and his STL...)?