[comp.object] What is this?

d87-mra@dront.nada.kth.se (Magnus Ramstr|m) (08/17/90)

I have often seen references to the terms slot-based objects and prototype
objects, but never a definition. I would be most grateful if someone could
explain these terms to me via e-mail.


d87-mra@nada.kth.se (Magnus Ramstr|m). Student @ Dep. of Computer Science.

gordon@mead.UUCP (Gordon Edwards) (08/18/90)

In article <1990Aug17.064856.26549@kth.se>, d87-mra@dront.nada.kth.se
(Magnus Ramstr|m) writes:
|> I have often seen references to the terms slot-based objects and prototype
|> objects, but never a definition. I would be most grateful if someone could
|> explain these terms to me via e-mail.
|> 

The Common Lisp Object System (CLOS) uses the term "slot" to refer to the 
variables that represent a class.  Smalltalk uses "instance variable" and 
C++ uses "member object" to describe the same thing.

As for protoype objects, this could mean object-oriented prototyping, or
it might be similar to a package specification in Ada or function prototypes
in ANSI C.  ??????

--
Gordon Edwards                                    Mead Data Central, Dayton OH

vu0310@bingvaxu.cc.binghamton.edu (R. Kym Horsell) (08/18/90)

In article <1171@meaddata.mead.UUCP> mead!gordon@uccba.uc.edu writes:
>
>In article <1990Aug17.064856.26549@kth.se>, d87-mra@dront.nada.kth.se
>(Magnus Ramstr|m) writes:
>|> I have often seen references to the terms slot-based objects and prototype
>|> objects, but never a definition. I would be most grateful if someone could
\\\\\\
>As for protoype objects, this could mean object-oriented prototyping, or
>it might be similar to a package specification in Ada or function prototypes
>in ANSI C.  ??????

I think the distinction made in the original ref was to the
difference between class-based heirarchies and delegation/prototype
systems.

In a class-based system an instance of an object refers to its
class (and that class to its superclass) for its methods.
A class is understood to stand for the `general case' of objects
within the set of objects that it represents.

In a delegation/prototype system a prototype is understood to
be a typical object of the set it represents. Instead of refering
to a class object each object in a prototype system refers to
parent objects which may or may not contain attributes and
methods shared by `sister' objects.

-Kym Horsell

lgm@cbnewsc.att.com (lawrence.g.mayka) (08/19/90)

In article <1171@meaddata.mead.UUCP> mead!gordon@uccba.uc.edu writes:
>In article <1990Aug17.064856.26549@kth.se>, d87-mra@dront.nada.kth.se
>(Magnus Ramstr|m) writes:
>|> I have often seen references to the terms slot-based objects and prototype
>|> objects, but never a definition. I would be most grateful if someone could
>|> explain these terms to me via e-mail.
>|> 
>
>The Common Lisp Object System (CLOS) uses the term "slot" to refer to the 
>variables that represent a class.  Smalltalk uses "instance variable" and 
>C++ uses "member object" to describe the same thing.

Some people employ the term "slot-based" to call special attention to
the fact that CLOS (like Flavors, its predecessor) permits one:

(1) To define and redefine (modify) a class's methods incrementally,
without textual modification or recompilation of the class definition.
The latter can therefore consist of as little as a list of
superclasses and a list of additional slots.

(2) To redefine (modify) a class definition in any way without textual
modification or recompilation of its methods.  Hence, one can add or
remove superclasses and slots just as easily as methods. 

Needless to say, Common Lisp programmers prize this flexibility;
others often scorn it.


	Lawrence G. Mayka
	AT&T Bell Laboratories
	lgm@iexist.att.com

Standard disclaimer.

johnson@m.cs.uiuc.edu (08/21/90)

Lawrence Mayka wrote:
>Some people employ the term "slot-based" to call special attention to
>the fact that CLOS (like Flavors, its predecessor) permits one:

>(1) To define and redefine (modify) a class's methods incrementally,
...
>(2) To redefine (modify) a class definition in any way without textual
>modification or recompilation of its methods.  Hence, one can add or
>remove superclasses and slots just as easily as methods. 

Smalltalk-80 also lets you do this.

C++ also lets you do this.  You just have to type "make" afterwards.  :-)

I agree with Lawrence; incremental program development is very nice.

Ralph Johnson - University of Illinois at Urbana-Champaign