How do you define "object-oriented"?

Jecel Assumpcao Jr jecel at merlintec.com
Fri Apr 26 18:58:10 UTC 2002


On Friday 26 April 2002 20:33, Dan Rozenfarb wrote:
> > 	A language is object-oriented if it supports
> > 		1.  Encapsulation
> > 		2.  Inheritance
> > 		3.  Polymorphism
>
> Self hasn't Inheritance, at least Class Inheritance
> (the one implied in this Wegner's definition), but
> delegation.  And I consider it VERY object oriented.

Wegner put (at least in his original Byte article) languages without 
classes in a separate "object based" category. But my opinion is the 
same as yours. In addition, I don't see any practical difference 
between "inheritance" and "delegation" even though I have read many 
papers about the subject.

Smalltalk-72 and -74 didn't have inheritance, and neither did Kevo. I 
don't know about Simula 67.

But I prefer not to fight for any particular meaning of "OO" (having 
learned my lesson in the "hacker" wars). Whatever Alan Kay meant with 
this term, people extended it to include Simula 67 (since he admitted 
having been inspired by it) and C++ is very much in the spirit of that 
old language. And if that is OO, then how could I argue that Java or 
Python aren't?

> In my opinion, Object-orientation is: Objects
> communicating through message passing.

That sounds good.


> [No compile-TIME, No edit-TIME, No NON-OBJECTs, No classes]
> With this definition, Smalltalk is not *pure* OO.

Because of the classes? See "Smalltalk with Examplars" or CoDA for 
Smalltalks with classless objects.

Wilf R. LaLonde, Dave A. Thomas, John R. Pugh: 
"An Exemplar Based Smalltalk". In [OOPSLA 86], pp. 322-330.

http://web.yl.is.s.u-tokyo.ac.jp/members/jeff/research/coda.html

-- Jecel



More information about the Squeak-dev mailing list