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
next prev parent 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