comp.lang.ada
 help / color / mirror / Atom feed
From: "Robert I. Eachus" <rieachus@attbi.com>
Subject: Re: Ada 200X
Date: Mon, 02 Jun 2003 14:23:22 GMT
Date: 2003-06-02T14:23:22+00:00	[thread overview]
Message-ID: <3EDB5DBE.4070807@attbi.com> (raw)
In-Reply-To: CWf6f1lA7+Qo@eisner.encompasserve.org

Larry Kilgallen wrote:

> I am not the original poster, but the case where I find this troublesome
> is trying to replace a method for a parent type with enhanced code to:
> 
>         1. Do something special
> 
>         2. Do whatever the method for the parent type would do
> 
>         3. Do something else special
> 
> The lack of a construct to specify "corresponding method of ancestor"
> seems to me to be what breaks information hiding.

Oh, that is so easy that I never thought of people having problems with 
it.  I'll give an example:

type Foo is tagged...

procedure Bar(F: in out Foo);
...

type New_Foo is new Foo with...

procedure Bar(F: in out New_Foo);
...

procedure Bar(F: in out New_Foo) is
begin
    Do(Something_Special);
    Bar(Foo(F)); -- view conversion
    Do(Something_Else_Special);
end Bar;

The view conversion passes the Foo part of a New_Foo object to the 
parent Bar by reference.  So the parent operation only sees the parts of 
the New_Foo object that it knows about.  When writing Initialize, 
Adjust, and Finalize operations for controlled types, this idiom is 
pretty standard.

In my experience I have never needed access discriminants, but some 
smart people say they are needed for compatibility with other OO languages.








  parent reply	other threads:[~2003-06-02 14:23 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-06-01 21:36 Ada 200X And838N
2003-06-02  2:22 ` Bobby D. Bryant
2003-06-02  4:20 ` Robert I. Eachus
2003-06-02 11:22   ` Larry Kilgallen
2003-06-02 14:09     ` Hyman Rosen
2003-06-02 14:23       ` Vinzent Hoefler
2003-06-02 14:59         ` Hyman Rosen
2003-06-02 15:04           ` Vinzent Hoefler
2003-06-02 15:18             ` Bill Findlay
2003-06-02 15:32               ` Larry Kilgallen
2003-06-02 15:41               ` Vinzent Hoefler
2003-06-02 15:07           ` Larry Kilgallen
2003-06-02 15:04         ` Larry Kilgallen
2003-06-02 14:23     ` Robert I. Eachus [this message]
2003-06-02 14:31       ` Vinzent Hoefler
2003-06-02 15:05         ` Larry Kilgallen
2003-06-02 15:06         ` Hyman Rosen
2003-06-02 21:05         ` Robert I. Eachus
2003-06-02 22:59           ` Larry Kilgallen
2003-06-03  4:07             ` Robert I. Eachus
2003-06-03  7:52           ` Jean-Pierre Rosen
2003-06-03  9:09           ` Vinzent Hoefler
2003-06-03 14:54             ` Robert I. Eachus
2003-06-04  7:38               ` Vinzent Hoefler
2003-06-05  7:20                 ` Robert I. Eachus
2003-06-02  5:36 ` Wesley Groleau
2003-06-02  8:02 ` Preben Randhol
2003-06-02 10:50 ` Georg Bauhaus
2003-06-03  2:29 ` Steve
2003-06-03  2:45 ` Gautier Write-only
2003-06-03  8:38   ` Vinzent Hoefler
2003-06-03 11:48   ` Preben Randhol
2003-06-03 12:14     ` Lutz Donnerhacke
2003-06-03 12:35       ` Preben Randhol
2003-06-07 21:16       ` Craig Carey
2003-06-08 11:14         ` Martin Dowie
2003-06-09 14:07           ` Craig Carey
2003-06-13 14:20             ` Matthew Heaney
2003-06-13 14:00         ` Matthew Heaney
2003-06-03 17:24     ` Robert A Duff
2003-06-03 17:45       ` Preben Randhol
2003-06-03 17:48         ` Preben Randhol
2003-06-03 18:05           ` Vinzent Hoefler
2003-06-04 10:36             ` Preben Randhol
  -- strict thread matches above, loose matches on Subject: below --
2004-10-31  1:51 David Botton
2004-10-31  7:33 ` Martin Dowie
2004-10-31 18:59   ` Jeffrey Carter
2002-12-26 16:17 Ada 200x Adrian Hoe
2002-12-27 19:32 ` Randy Brukardt
2002-12-27 20:55   ` Robert A Duff
replies disabled

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