Back to the common sense, I looked up the common sense meaning of some important words in the freedictionary. My aim is to encourage us to concentrate on the meanings of these words as the community generally agreed upon using them.
object:
something perceptible by one or more of the senses, especially by
vision or touch; a material thing; a focus of attention, feeling,
thought, or action; the purpose, aim, or goal of a specific action or
effort; a discrete item that can be selected and maneuvered, such as
an onscreen graphic;
I guess, the word "object" has the wildest range of meaning. That's why we have so many different approaches which are under the umbrella of being object oriented. That's why I have respelled the OMG (Object Management Group) as Oh My God :) But, in general, I can conclude that our community uses the word "object" to bring the idea of touch and focus, and even objective! However, I am not a native English speaker. I am trying to be loyal to what the dictionary says :)
The freedictionary interestingly adds that, in object-oriented programming, objects include data and the procedures necessary to operate on that data. I think, the current form of object orientation (RestrictedOO) should conform to that definition, because it should only include procedures which are only necessary to operate on its data alone to enrich the meaning of its bare properties by observing the system from the inside of an object, but not more :) This is parallel to what Trygve&James wrote in the FullOO Summit:
"In Restricted OO, a programmer cannot compress the understanding of anything: everything is an abstraction, except the current method. There is a large lack of contextualization. In Full OO, RoleMethods are compressions. In DCI terms: Data classes are coded with Restricted OO. Interactions are coded with Full OO."
The meanings of other important words are as follows:
class: a collection or division of people or things sharing a common characteristic, attribute, quality, or property
classification: systematic placement in categories
integration: the act of combining or adding parts to make a unified whole
type: a number of people or things having in common traits or characteristics that distinguish them as a group or class; the general character or structure held in common by a number of people or things considered as a group or class
role: a character or part played by a performer, the characteristic and expected social behavior of an individual, a function or position
function: the action for which a person or thing is particularly fitted or employed
Generally speaking, i.e. based on the common sense which is generated by the community in centuries, I can say that:
The words class(ification) and types are more related with entities and structures whereas the words object, role and function are more related with purposeful behaviours. However, that does not mean that neither of these words are forbidden to use in the other way around. But, that kind of usage are less likely and less fruitful.
I want to conclude by asking the same question as Richard Öberg asked in his brilliant article: "What is an object anyway?" http://www.qi4j.org/351.html
The main flaw of OOP, which COP (Composite Oriented Programming) addresses, is the answer to the fundamental question "What methods should an object have?". In traditional OOP, which really should be called "class oriented programming", the classes tend to have a rather narcissistic point of view. Classes are allowed to dictate what methods are in there - regardless of the algorithms which they are part of - and algorithms then need to be aware of these classes when object instances collaborate in an algorithm. Why?
Best regards,
Cevat Balek