comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Constructing an object
Date: Fri, 30 Sep 2005 21:28:34 +0200
Date: 2005-09-30T21:28:22+02:00	[thread overview]
Message-ID: <kcdzljje648l.1r78p6alotq62$.dlg@40tude.net> (raw)
In-Reply-To: k5sihd.ei2.ln@hunter.axlog.fr

On Fri, 30 Sep 2005 10:14:47 +0200, Jean-Pierre Rosen wrote:

> Randy Brukardt a �crit :
>> "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message
>>>They aren't extensible in the sense that you can only override or inherit.
>>>It is too dangerous for constructors and assignments. BTW, Ada does not to
>>>completely override them anyway. For example the parts responsible for
>>>initialization of the components cannot be overridden. One cannot have a
>>>task component which will not start because Initialize does not call the
>>>parent's one! (:-))
>> 
>> Ah, I see. Certainly you are right here. I see that a lot in Finalize
>> routines; it is real easy to forget to call the Finalize for the parent
>> type. There ought to be a better way of extending rather than replacing
>> routines; that's especially true since requires an explicit type conversion
>> to the parent to make that call, and it is easy to get wrong (and go
>> infinitely recursive).
>> 
> I think CLOS has such a feature, but it raises an issue:
> sometimes you want to call the parent Finalize *before* your own 
> Finalize, sometimes *after*. If it is automatic, you must force one of 
> them, which makes problems if you want the other one.

Yes, but I almost sure that this one is rooted in an incompleteness of the
construction model. If we consider T and T'Class as different types, then
we should consistently conclude that they might have constructors of their
own. (Of course T'Class destructor includes one of T.) I wonder if all
cases when one needs to call parent's Finalize out of order, are actually
ones which should be handled by the Finalize of T'Class. Now because
class-wide objects should be finalized before all specific ones, Finalize
of T'Class would be called before Finalize of any S derived from T. One
could even safely dispatch from it!

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de



  reply	other threads:[~2005-09-30 19:28 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-09-21  8:46 Constructing an object Maciej Sobczak
2005-09-21 10:16 ` Georg Bauhaus
2005-09-22  7:21   ` Maciej Sobczak
2005-09-21 11:55 ` Dmitry A. Kazakov
2005-09-22  7:28   ` Maciej Sobczak
2005-09-22  7:45     ` Maciej Sobczak
2005-09-22 13:33       ` Dmitry A. Kazakov
2005-09-24  5:23         ` Randy Brukardt
2005-09-24  9:47           ` Dmitry A. Kazakov
2005-09-29  0:12             ` Randy Brukardt
2005-09-29  8:17               ` Dmitry A. Kazakov
2005-09-29 22:21                 ` Randy Brukardt
2005-09-30  8:14                   ` Jean-Pierre Rosen
2005-09-30 19:28                     ` Dmitry A. Kazakov [this message]
2005-09-30 17:49                   ` Robert A Duff
2005-10-01  0:44                     ` Randy Brukardt
2005-10-01 10:49                       ` Dmitry A. Kazakov
2005-10-01 11:06                       ` Tapio Kelloniemi
2005-10-01 14:13                         ` Robert A Duff
2005-10-02 11:52                           ` Tapio Kelloniemi
2005-10-01 15:19                       ` Georg Bauhaus
2005-09-23  5:40 ` Matthew Heaney
2005-09-23  7:18   ` tmoran
2005-09-23  8:23   ` Maciej Sobczak
2005-09-23 12:04     ` Dmitry A. Kazakov
2005-09-23 12:36       ` Matthew Heaney
2005-09-23 13:03         ` Hyman Rosen
2005-09-23 13:41           ` Maciej Sobczak
2005-09-23 14:23           ` Matthew Heaney
2006-01-17  6:28             ` [Offtopic] " James Dennett
2005-09-23 13:42         ` Dmitry A. Kazakov
2005-09-23 14:27           ` Matthew Heaney
2005-09-23 12:24     ` Matthew Heaney
2005-09-24  5:34       ` Randy Brukardt
replies disabled

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