TEAM-ADA Archives

Team Ada: Ada Programming Language Advocacy


Options: Use Forum View

Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Mark Lundquist <[log in to unmask]>
Reply To:
Mark Lundquist <[log in to unmask]>
Thu, 12 Nov 1998 15:15:52 -0800
text/plain (61 lines)
From:  "Robert I. Eachus" <[log in to unmask]>
Date:  Thu, 12 Nov 1998 17:46:47 -0500
Subject:  Re: No "class" construct in Ada (was Re: Ada in CFD)

> At 01:12 PM 11/12/98 -0800, Mark Lundquist wrote:
> >> Adding special notation for declaring classes in Ada would have created
> >         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >> either some unnecessary restrictions or backward compatibility problems.
> >
> >Yes -- that is the position I was taking.  My use of the phrase "special
> >class construct" is to be understood as identical with your phrase
> >"special notation for declaring classes".
>    Okay.  If you regard "a package specification containing a single tagged
> type declaration and declarations of operations on that type," as equivalent
> to a class in other languages, you could consider that as a special class
> construct.

Close -- I regard the tagged type declaration plus the primitives as the
class definition, whether or not the package contains anything else.  As
you rightly state, a package can declare more than one "class".

I have seen a style of Ada that attempts to slavishly emulate
class-oriented macrostructure.  That style does make a 1-1 association
between packages and classes, going so far as to name the package after
the class and then always naming the type itself "Object", e.g.

    -- Class Fribbitz
    package Fribbitz is

        type Object is tagged private;

        -- bah, bah, bah...
    end Fribbitz;

Some people think that's great.  I don't particularly care for it.  But
that's just my taste...

> But part of my point was that having a "special notation" would
> have eliminated the possibility of defining several classes/tagged types
> in the same package. Because of this--and the 'Class operation you can
> create classes that are closely intertwined.  (It would be nice to be able
> to easily create such mutually interdependent types in different packages,
> but that is a different discussion.) Of course, there is a rule preventing
> operations from being dispatching operation of more than one tagged type,
> but that is needed for
> other reasons.
>                                         Robert I. Eachus

Right.  As far as I can tell, we are both saying that (a) Classes are
easily implemented in Ada, even though (b) Ada doesn't have a "class"
syntax that is like C++/Java, but (c) a C++/Jave-like "class" syntax
wouldn't be such a great idea for Ada, for a number of reasons,
and moreover (d) we like it way it came out in Ada better anyway.

-- Mark