Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/18/84; site harvard.ARPA Path: utzoo!watmath!clyde!burl!ulysses!allegra!mit-eddie!godot!harvard!macrakis From: macrakis@harvard.ARPA (Stavros Macrakis) Newsgroups: net.lang,net.lang.st80 Subject: Re: Definition of Buzzwords: "Object-Oriented" Message-ID: <321@harvard.ARPA> Date: Tue, 22-Jan-85 17:27:55 EST Article-I.D.: harvard.321 Posted: Tue Jan 22 17:27:55 1985 Date-Received: Thu, 24-Jan-85 19:16:16 EST References: <4288@ucbvax.ARPA> Distribution: net Organization: Aiken Comp. Lab., Harvard Lines: 50 Xref: watmath net.lang:1289 net.lang.st80:157 > Is there a definition of the term "object-oriented" which is both descriptive > of all current uses of that term and accepted by all who currently use it? > Bill Laubenheimer ucbvax!wildbill `Accepted by all who currently use it' is harder than `descriptive'.... Let me propose: An object-oriented language/system considers its behavior to be defined in terms of the behavior of smaller units (called `objects') each of which has a repertoire of operations applicable to it. The object operations are the only operations which normally have access to the underlying implementation of the object. Almost all object-oriented systems organize objects into classes of different individual objects which share the same repertoire of operations, and these classes can normally have subclasses which inherit the operations of the classes and add more classes. Almost all object-oriented systems allow (and encourage) objects to have internal state which changes with time. This definition emphasizes the differences with other language qualities, such as `algorithmic' (Algol, Fortran, Pascal, C, Snobol, APL), `functional' (Lisp, FP, APL), `backtracking' (Snobol, Planner, Prolog), or `string-oriented' (Snobol, Trac, Teco); but note that the qualities are not exclusive. Too often, spurious questions on the order of `is it algorithmic or is it object-oriented' cloud the question. A serious question, however, is whether changing state is important to object orientation. Perhaps this is the difference between data abstraction and object orientation? Or is object orientation just the fashionable name for data abstraction? A more historically-oriented definition might be: Object-oriented languages/systems are inspired by Simula 67. Note that it is not important to these definitions whether the language is part of an interpretive system (like Smalltalk), nor is the inheritance mechanism central (of course you can argue that a GOOD object-oriented system has a certain kind of inheritance mechanism). By these definitions, Simula 67, CLU, Smalltalk, Objective C, Ada, and ZetaLisp are all object oriented. They do differ. Some enforce the access restrictions of the class, others don't; some have sophisticated (or just plain complicated) inheritance mechanisms, others don't. But I think it would be unfair to frame a definition which excluded any of these languages. -s