comp.lang.ada
 help / color / mirror / Atom feed
From: Georg Bauhaus <bauhaus.rm.tsoh@maps.futureapps.de>
Subject: Re: Self pointer in limited record
Date: Wed, 05 Sep 2007 23:38:34 +0200
Date: 2007-09-05T23:33:31+02:00	[thread overview]
Message-ID: <46df20aa$0$30370$9b4e6d93@newsspool4.arcor-online.net> (raw)
In-Reply-To: <z9bv2evgi034$.c5w7oonnbudf$.dlg@40tude.net>

Dmitry A. Kazakov wrote:

[snip all kinds of buzz words :-]

>>> The point was "to have one instance" and "to be a FSM" are unrelated.
>> There is a point of view from which the concept "to have one instance"
>> and "to be a FSM" are unrelated. When writing an Ada program, you may
>> have a point of view from which the concept "to have one instance" and
>> "to be a FSM" coincide on a suitable conceptual level. It is the level
>> on which an abstract state machine package is explained.
> 
> Can I take a protected object or a task to implement either?

You can take a package and implement either.


> (I have no respect to singletons. They might have some sacral meaning for
> some OO proponents, but that was always beyond my understanding.)

They can avoid surprises and nasty issues because they enforce body
visibility of data objects. Example:

<start of declarative part>

        package S is
                type T is limited private;
                procedure op(x: in out T);
        private
                type T is limited record
                        null;
                end record;
        end S;

        package body S is separate;

        -- ... a different programmer has a clever idea
	-- ... and adds another ad hoc procedure for
	-- ... debugging porposes

        procedure bar(x: S.T) is
        begin
                raise Program_Error;
        end bar;

        use S;

        item: T;
begin
        bar(item);
end;

This is of course an artificial example. However, it serves to
demonstrate a few effects. Once the object type T is visible
outside the package (being declared in the public part of S), objects
can be declared outside of S. Adding a subprogram like Bar will in a
sense break grouping (where to look for bar which takes a T).
If the author of S had intended an upper bound on instances of T,
say one instance, then enforcing this limit will require more work.
These issues go away with a simple abstract state machine style package.




  reply	other threads:[~2007-09-05 21:38 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-04 19:31 Self pointer in limited record Maciej Sobczak
2007-07-05  8:22 ` Dmitry A. Kazakov
2007-07-05 10:35   ` Maciej Sobczak
2007-07-05 11:01     ` Pascal Obry
2007-07-05 11:14     ` Georg Bauhaus
2007-07-05 12:36     ` Dmitry A. Kazakov
2007-08-31 16:47 ` amado.alves
2007-08-31 17:09   ` Pascal Obry
2007-08-31 17:37   ` Adam Beneschan
2007-08-31 18:26   ` Jeffrey R. Carter
2007-08-31 19:33   ` Dmitry A. Kazakov
2007-09-01 13:33     ` Georg Bauhaus
2007-09-01 13:46       ` Dmitry A. Kazakov
2007-09-01 14:15         ` Georg Bauhaus
2007-09-01 16:03           ` Dmitry A. Kazakov
2007-09-01 19:49             ` Georg Bauhaus
2007-09-01 20:09               ` Dmitry A. Kazakov
2007-09-02 21:37                 ` Georg Bauhaus
     [not found]                   ` <re7ei5lc7dzf$.11qtcnh35jmzg$.dlg@40tude.net>
2007-09-03 10:51                     ` Georg Bauhaus
2007-09-03 14:17                       ` Dmitry A. Kazakov
2007-09-03 15:55                         ` Jean-Pierre Rosen
2007-09-03 19:17                           ` Dmitry A. Kazakov
2007-09-03 19:32                             ` Markus E L
2007-09-03 20:14                             ` Georg Bauhaus
2007-09-04  8:24                               ` Dmitry A. Kazakov
2007-09-04  9:36                                 ` Jean-Pierre Rosen
2007-09-04 10:14                                   ` Dmitry A. Kazakov
2007-09-05 10:49                                 ` Georg Bauhaus
2007-09-05 12:04                                   ` Dmitry A. Kazakov
2007-09-05 13:12                                     ` Jean-Pierre Rosen
2007-09-05 15:10                                       ` Dmitry A. Kazakov
2007-09-05 16:25                                         ` Jean-Pierre Rosen
2007-09-05 19:52                                           ` Dmitry A. Kazakov
2007-09-06  7:19                                             ` Jean-Pierre Rosen
2007-09-06  9:28                                               ` Dmitry A. Kazakov
2007-09-06 11:53                                                 ` Jean-Pierre Rosen
2007-09-06 15:35                                                   ` Dmitry A. Kazakov
2007-09-05 18:31                                     ` Georg Bauhaus
2007-09-05 19:52                                       ` Dmitry A. Kazakov
2007-09-05 21:38                                         ` Georg Bauhaus [this message]
2007-09-06  7:37                                           ` Dmitry A. Kazakov
2007-09-06 10:26                                             ` Georg Bauhaus
2007-09-06 12:25                                               ` Dmitry A. Kazakov
2007-09-08  1:27                                               ` Randy Brukardt
2007-09-06  9:14                                         ` Markus E L
2007-09-06  9:48                                           ` Dmitry A. Kazakov
2007-09-04  8:23                             ` Jean-Pierre Rosen
2007-10-31 23:59                           ` adaworks
2007-09-03 20:38                         ` Georg Bauhaus
2007-09-04  8:24                           ` Dmitry A. Kazakov
2007-09-03  7:54             ` Jean-Pierre Rosen
2007-09-01 15:33         ` Markus E L
2007-09-04 14:55           ` Adam Beneschan
2007-09-04 15:09             ` Jean-Pierre Rosen
2007-09-08  1:36               ` Randy Brukardt
2007-09-04 17:31             ` Georg Bauhaus
2007-09-08  1:16     ` Randy Brukardt
2007-09-10 16:27       ` amado.alves
2007-09-10 17:13         ` Adam Beneschan
2007-09-10 19:00         ` Dmitry A. Kazakov
2007-09-11  3:12           ` Randy Brukardt
2007-09-11  9:38             ` Dmitry A. Kazakov
2007-09-12 21:57               ` Randy Brukardt
2007-09-13  8:03                 ` Dmitry A. Kazakov
2007-09-13 21:37                   ` 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