comp.lang.ada
 help / color / mirror / Atom feed
From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: Ada202X: Easy to use "UML private"-like components
Date: Fri, 21 Jun 2013 14:36:40 -0400
Date: 2013-06-21T14:36:40-04:00	[thread overview]
Message-ID: <wccwqpnux8n.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: 69246de0-4b33-4d47-b5be-a45e8c911fb0@googlegroups.com

Martin <martin@thedowies.com> writes:

> Secondly, I have to explain that using Ada "private" gives you "UML protected":

Not exactly.  Ada "private" means clients can't see it, but child
packages (which should be thought of as part of the same abstraction)
can.

It's a completely different visibility model than UML.  I don't see any
reason to be embarrassed about that.

> Option 2:
>    type T is tagged record
>       null;
>    private
>       F : Float;
>    end record;
>
>
> I prefer Option 2.
>
> Thoughts?

I don't think making Ada more like UML is a worthwhile goal.  If it
were, I'd prefer your option 1.  But I don't see the point:  In Ada,
packages are about visibility.  That's different from languages that
conflate the concept of "module" and "type" (which has both advantages
and disadvantages).  Overall, I prefer the Ada way.

If you want derived types to see their parent types components, you put
the derived types in a child package; if you don't, then you don't.
Attempts to mimic UML in Ada lead to a mess, as you've shown.

I share your disdain for what you called "opaque" types -- it forces you
into heap management, which leads to extra trouble.  But I object to
calling them "opaque" types.  Ada folks usually call them "stt access
types" and "stt incomplete types", or "Taft amendment types", because
they were invented by Tucker Taft and added to Ada 83 at the last minute
when nobody realized all the headaches they cause for compiler writers.
The term "opaque type" comes from Modula-2, IIRC, and is more like
an Ada private type, with some annoying restrictions added.

- Bob

  parent reply	other threads:[~2013-06-21 18:36 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-21  8:43 Ada202X: Easy to use "UML private"-like components Martin
2013-06-21  9:23 ` Dmitry A. Kazakov
2013-06-21  9:33   ` Martin
2013-06-21 10:14     ` G.B.
2013-06-21 11:19       ` Martin
2013-06-21 14:51     ` Dmitry A. Kazakov
2013-06-22 11:16       ` Martin
2013-06-22 12:10         ` Dmitry A. Kazakov
2013-06-21 18:36 ` Robert A Duff [this message]
2013-06-22 16:41   ` Niklas Holsti
2013-06-22 19:05     ` Dennis Lee Bieber
2013-06-22 22:57       ` Niklas Holsti
2013-06-23  3:26         ` Dennis Lee Bieber
2013-06-23  7:32           ` Niklas Holsti
2013-06-23 13:12             ` Robert A Duff
2013-06-23 14:06               ` Dmitry A. Kazakov
2013-06-23 15:15                 ` Robert A Duff
2013-06-23 18:52                   ` Dmitry A. Kazakov
2013-06-23 23:38                     ` Robert A Duff
2013-06-24  7:16                       ` Dmitry A. Kazakov
2013-06-24 20:11                         ` Randy Brukardt
2013-06-25  7:21                           ` Dmitry A. Kazakov
2013-06-25 19:06                             ` Randy Brukardt
2013-06-24 20:07                 ` Randy Brukardt
2013-06-23 14:40               ` Shark8
2013-06-23 15:28                 ` Robert A Duff
2013-06-23 18:14                   ` Bill Findlay
2013-06-23 23:43                     ` Robert A Duff
2013-06-23 23:48                       ` Bill Findlay
2013-06-24 20:16                   ` Randy Brukardt
2013-06-24 20:05               ` Randy Brukardt
2013-06-25  1:09                 ` Robert A Duff
2013-06-25 19:37                   ` Randy Brukardt
2013-06-23 12:28         ` Robert A Duff
2013-06-24 20:20           ` Randy Brukardt
2013-06-24 21:40             ` Niklas Holsti
2013-06-25  0:43               ` Robert A Duff
2013-06-25 19:23                 ` Randy Brukardt
2013-06-25 19:19               ` Randy Brukardt
2013-07-09 11:24   ` Martin
2013-07-09 14:39     ` Simon Wright
2013-07-10  7:03       ` Martin
2013-07-09 21:43     ` Robert A Duff
2013-07-10  6:34       ` Martin
2013-07-10  8:24         ` Dmitry A. Kazakov
2013-07-10 13:06           ` Martin
2013-07-10 16:12     ` Simon Wright
2013-07-10 18:22       ` Martin
2013-07-10 19:41         ` Simon Wright
2013-07-11 18:28           ` Martin
2013-07-11 19:37             ` Simon Wright
2013-07-11 20:43               ` Martin
2013-07-12  6:57                 ` Simon Wright
2013-07-12  8:05                   ` Martin
replies disabled

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