comp.lang.ada
 help / color / mirror / Atom feed
From: spencer@ERA.COM (Spencer Allain)
Subject: Re: Real OO (was Choice of OO primitives in Ada95)
Date: 1996/02/22
Date: 1996-02-22T00:00:00+00:00	[thread overview]
Message-ID: <SPENCER.96Feb22135122@zorgon.ERA.COM> (raw)
In-Reply-To: 199602221711.SAA18350@email.enst.fr

In article <199602221711.SAA18350@email.enst.fr> Jean-Pierre Rosen <rosen@EMAIL.ENST.FR> writes:

   >In order to acheive those goals optimally, an OO language should offer:
   >
   >1) encapsulated abstractions (classes)
   OK, but of course you mean that there must be a clear separation, at
   language level, between specification and implementation

<snip>

   >Taking each in turn (and not attempting to justify them),
   >
   >1) Best provided by pure OO (eg. Eiffel, Smalltalk) followed by hybrid OO
   >   language with proper classes (extendable types mapped onto modules)
   >   eg. (C++, myriad others) followed by hybrid OO with non-encapsulated classes
   >   (eg. Ada, CLOS?).
   Of course, I do not agree. For example, the presence of ONCE functions in
   Eiffel is a kludge to overcome the absence of package initialization that is
   nicely provided by Ada. And as for separating specs and implementations, Ada
   is the only language that does it nicely, without giving up safety.


Uhhh... since when has "encapsulated abstractions" been defined as limited 
to classes?  "Classes" are a way to encapsulate all the operations that are
associated with an object type.  "Interfaces" (where classes are really a
more restricted form of these) encapsulate all the operations that are
associated with the types visible to that specification -- there isn't
the single type restriction.

I also obviously do not agree with the explanation for (1), but I also
have to disagree with the statement that Ada is the only language that
separates specifications from their implementations, in a nice and
safe manner.  Modula-3 has a similar interface/implementation
separation, which is just as nice and equally as safe.  (It actually
resolves other safety issues not related to pure OO programming, but
that isn't what is being discussed here)

I think Ada has a powerful encapsulation system, but it is not the
only language with one.

-Spencer

----------------------------------------------------------------------
Spencer Allain                    E-mail:  spencer@era.com
Engineering Research Associates   Phone :  (703) 734-8800 x1414
1595 Spring Hill Road             Fax   :  (703) 827-9411
Vienna, VA  22182-2235

Ask me why _NOT_ to buy anything from Royal Prestige, a Hycite Co.
----------------------------------------------------------------------
<A HREF=http://www.research.digital.com/SRC/modula-3/html/home.html>
             Modula-3 Home Page DEC SRC</A>
<A HREF=http://www.vlsi.polymtl.ca/m3/>Modula-3 FAQ, etc. </A>
----------------------------------------------------------------------




  parent reply	other threads:[~1996-02-22  0:00 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1996-02-22  0:00 Real OO (was Choice of OO primitives in Ada95) Jean-Pierre Rosen
1996-02-22  0:00 ` Valery Croizier
1996-02-24  0:00   ` Robert A Duff
1996-02-22  0:00 ` Matt Kennel
1996-02-23  0:00   ` Robert A Duff
1996-02-22  0:00 ` Spencer Allain [this message]
1996-02-23  0:00 ` Jon S Anthony
     [not found] <Do7unJ.1sq@world.std.com>
1996-03-15  0:00 ` Don Harrison
     [not found] <Do7uyC.4K2@world.std.com>
1996-03-15  0:00 ` Don Harrison
  -- strict thread matches above, loose matches on Subject: below --
1996-02-20  0:00 Choice of OO primitives in Ada95 Jon S Anthony
1996-02-22  0:00 ` Real OO (was Choice of OO primitives in Ada95) Don Harrison
1996-02-22  0:00   ` Jon S Anthony
1996-02-22  0:00   ` Robert Dewar
1996-02-23  0:00     ` Gene Ouye
1996-02-26  0:00       ` James O'Connor
1996-02-26  0:00         ` Gene Ouye
1996-02-24  0:00   ` Robert A Duff
1996-02-26  0:00     ` Matthew B. Kennel
1996-02-26  0:00     ` Don Harrison
1996-02-24  0:00   ` Valery Croizier
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox