comp.lang.ada
 help / color / mirror / Atom feed
From: Preben Randhol <randhol+abuse@pvv.org>
Subject: Re: The old "Object.Method" syntax debate
Date: Wed, 21 May 2003 18:21:23 +0000 (UTC)
Date: 2003-05-21T18:21:23+00:00	[thread overview]
Message-ID: <slrnbcngsq.aap.randhol+abuse@kiuk0152.chembio.ntnu.no> (raw)
In-Reply-To: vcncuhse47e0b8@corp.supernews.com

David C. Hoos wrote:
> 
> It would not make the language ambiguous.  Since Him and Her
> are objects of different types, each type would need its own
> version of the Marry procedure, unless they were both derived
> from a common ancestor type which had a class-wide Marry
> procedure.

No I mean when you read it. Look at the example from the AI:


   Here is an example of use of the "object.operation" syntax:

   package P is
       type T is tagged ...
       -- implicit declaration of T'Class
       procedure Prim(X : in out T);
       procedure Classwide(X : in out T'Class; Y : Integer);
   end P;

   with P;
   package P2 is
       type T2 is new P.T with ...
       -- implicit declaration of T2'Class
       -- implicit declaration of Prim(X : in out T2);
       procedure Prim2(X : in out T2; B : Boolean);
       function Prim3(X : T2) return Float;
   end P2;

   with P2;
   procedure Main is
       Obj : P2.T2;
       CObj : P2.T2'Class := ...
   begin
       Obj.Prim;         -- call on inherited primitive
       Obj.Prim2(True);  -- call on primitive
       CObj.Prim;        -- dispatching call

Here I get confused, because looking at package P the procedures
available are: 

   Prim(X : in out T); and 
   Classwide(X : in out T'Class; Y : Integer); 

   There is no Prim; procedure

So the student will wonder why do I have to define :  

   procedure Prim(X : in out T);

and not only

   procedure Prim;
?

(Yes I know why, but if the point is to mimic C++ and other OOP languages
syntax this will confuse)

From the AI:

   Identifying both the package and the object is to some extent redundant,
   and makes object-oriented programming in Ada 95 wordier than necessary,
   and/or encourages heavy use of potentially confusing "use" clauses.
   Eliminating this redundancy would make object-oriented programming
   less-error prone, while also clarifying what object is the controlling
   object.

The last part : "..., while also clarifying what object is the controlling
object." I do not get.

how come I cannot do: 

   procedure Main is
      True_Or_Not : Boolean;
      Object : P2.T2;
   begin

      True_Or_Not.Prim2 (Object);

(I see that B is not defined in out, but if it were)

Besides if one can mix between using the old syntax and the
new type-dot-procedure syntax in the source, wouldn't that lead to quite
hard to read code?

IMHO this is messy, confusing and I neither see the motivation nor
need for it, but I guess I have gotten used to the Ada way :-) Perhaps
somebody else can show my why this is a Good Idea[tm]

Preben
-- 
"... in Ada, you can never have a buffer overflow error. Unless of
course you go very far out of your way to specifically program one
[...] most Ada programmers would consider going out of your way to
construct an Ada program that had a potential buffer overflow not
as a challenge, but as a kind of pornography." - Robert I. Eachus



  reply	other threads:[~2003-05-21 18:21 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-05-21 15:26 The old "Object.Method" syntax debate Marc A. Criley
2003-05-21 15:47 ` David C. Hoos
2003-05-21 16:21   ` Jacob Sparre Andersen
2003-05-21 16:34     ` Robert A Duff
2003-05-21 16:43       ` Preben Randhol
2003-05-21 17:13         ` Robert A Duff
2003-05-21 17:13         ` David C. Hoos
2003-05-21 18:21           ` Preben Randhol [this message]
2003-05-21 19:43             ` David C. Hoos
2003-05-21 20:36               ` Preben Randhol
2003-05-22  3:24                 ` David C. Hoos
2003-05-22  2:31             ` Alexander Kopilovitch
2003-05-21 18:32           ` Preben Randhol
2003-05-22  9:41       ` Xavier Nicollin
2003-05-22 14:56         ` Robert A Duff
2003-05-22 16:02           ` Xavier Nicollin
2003-05-23  2:56         ` Wesley Groleau
2003-05-21 16:50     ` David C. Hoos
2003-05-21 16:36   ` Preben Randhol
2003-05-21 16:55     ` Vinzent Hoefler
2003-05-21 18:03       ` Preben Randhol
2003-05-21 18:17         ` David C. Hoos
2003-05-21 18:22           ` Preben Randhol
2003-05-21 20:53             ` tmoran
2003-05-22  2:11               ` Preben Randhol
2003-05-22  4:04                 ` Dale Stanbrough
2003-05-22  7:34         ` Ole-Hjalmar Kristensen
2003-05-23  0:35         ` Hyman Rosen
2003-05-21 17:02   ` David C. Hoos
2003-05-21 17:55   ` Warren W. Gay VE3WWG
2003-05-21 19:54   ` Bobby D. Bryant
2003-05-21 20:37     ` Preben Randhol
2003-05-22 14:32   ` Rodrigo Garcia
2003-05-22 15:39     ` David C. Hoos
2003-05-23  7:49       ` Rodrigo Garcia
2003-05-23  8:34         ` Dmitry A. Kazakov
2003-05-23 18:35           ` Alexander Kopilovitch
2003-05-25  5:38             ` Robert I. Eachus
2003-05-25  9:13               ` Dmitry A. Kazakov
2003-05-27  9:50                 ` John McCabe
2003-05-27 16:02                   ` Warren W. Gay VE3WWG
2003-05-28  8:24                   ` Dmitry A. Kazakov
2003-05-28 12:36                     ` Lutz Donnerhacke
2003-05-28 13:14                       ` Preben Randhol
2003-05-28 15:01                         ` Lutz Donnerhacke
2003-05-29  9:17                       ` Dmitry A. Kazakov
2003-05-30 10:41                         ` Lutz Donnerhacke
2003-05-30 20:13                           ` Randy Brukardt
2003-06-02  9:11                             ` Lutz Donnerhacke
2003-05-31  9:29                           ` Dmitry A. Kazakov
2003-05-28  3:02               ` Alexander Kopilovitch
2003-05-28  8:07                 ` John McCabe
2003-05-29  0:55                   ` Alexander Kopilovitch
2003-05-22 17:03     ` Gautier Write-only
2003-05-23 14:43   ` Steve
2003-05-23 14:51     ` Preben Randhol
2003-05-23 15:21     ` John McCabe
2003-05-23 23:43     ` Robert A Duff
2003-05-25  5:42     ` Hyman Rosen
2003-05-25 14:40       ` Steve
2003-05-25 21:21         ` Gautier Write-only
2003-05-23  7:58 ` John McCabe
2003-05-23  8:39   ` Preben Randhol
2003-05-23 15:12     ` John McCabe
2003-05-23 15:18       ` Preben Randhol
2003-05-23 17:32     ` Stephen Leake
2003-05-27  9:09       ` John McCabe
2003-05-28 11:47       ` Georg Bauhaus
2003-05-28 16:14         ` Stephen Leake
2003-05-28 18:23           ` Georg Bauhaus
2003-05-23 20:45 ` steve_H
  -- strict thread matches above, loose matches on Subject: below --
2003-05-23 17:39 Lionel.DRAGHI
2003-05-23 17:59 Lionel.DRAGHI
2003-05-27  9:17 ` John McCabe
2003-06-03 17:23 Lionel.DRAGHI
2003-06-04  8:27 ` John McCabe
replies disabled

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