Revised definitions of object and object-oriented

I revised my proposed definition of object based on feedback, to be more general. Please put comments on the original post. I'm very interested in getting more feedback on the definition.

3 comments:

Anonymous said...

The definition should mention self reference, so that method A of an object can refer to its own method or attribute B, with either an implicit or explicit "this".
You could argue that any "collection" worth its salt can refer to itself
and get away with it, but an explicit mention sounds better. How about
the following, changes italicized:

An object is a first-class, dynamically dispatched behavior. A behavior is a collection of named operations that can be invoked by clients where the operations may share references to data or operations local to that collection, possibly hidden from clients. Dynamic dispatch 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 objects have the same capabilities as other kinds of values, including being passed to operations or returned as the result of an operation.

- a5s4

Anonymous said...

How about the following (changes italicized) so that self reference is
explicit:

An object is a first-class, dynamically dispatched behavior. A behavior is a collection of named operations that can be invoked by clients where the operations may share data or operations local to that collection, possibly hidden from clients . Dynamic dispatch 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 objects have the same capabilities as other kinds of values, including being passed to operations or returned as the result of an operation.

Will Cook said...

I think that self-reference is important, but that it is an *internal* consideration of an object. Self-reference is not visible from the outside. SInce my goal is to give a definition based on observable properties rather than internal construction, I have omitted the requirement for self reference from the definition.