comp.lang.ada
 help / color / mirror / Atom feed
From: george.priv@gmail.com
Subject: Re: How to return an empty aggregate
Date: Sun, 6 Apr 2008 00:00:18 -0700 (PDT)
Date: 2008-04-06T00:00:18-07:00	[thread overview]
Message-ID: <922ed137-6353-4b11-b7cd-03987ef6896b@e39g2000hsf.googlegroups.com> (raw)
In-Reply-To: fb3487f9-7141-44c0-9020-b235ccc418a1@j1g2000prb.googlegroups.com

On Apr 5, 5:14 pm, Maciej Sobczak <see.my.homep...@gmail.com> wrote:
> On 5 Kwi, 18:04, george.p...@gmail.com wrote:
>
> > Can you provide non-academic example?

I don't really mean to be rude by throwing short answers but was on
the road whole week while conversation is very interesting. So if
provoke some of that apologize. By non-academic I mean you just rip it
from the project you did and past (just snippets) and explain what is
application.  My original remark was due to a fact that I started
looking at all the objects I had written so far and, although use
Factories, Adapters and Relays never found anything that is empty.  I
won't deny there are some out there and that what I would like to see,
given the condition above, otherwise this thread will be endless.

Just scrolling through my code found this little example

   --
   -- Generic Agent Interface
   type Agent_I is limited interface and Disposable_I;
   type Agent_Any is access all Agent_I'Class;

   -- Receive the new data item and determine the state
   procedure Receive (Me : in out Agent_I; Item : Entity_T) is
abstract;
   -- Signal the alarm conditions
   function Alarm (Me : Agent_I) return Alarm_T is abstract;

The agent monitors oncoming entities for conditions that call for
alarm.  System has list of Agents that can be added/removed on the
fly.  Alarms by each agent can be OR'ed or AND'ed to generate the
state of the system. Theoretically one can do Null_Agent_Type that
will do nothing but there is no point in that since empty agent list
will give the same effect.  Any agent implementation has some context
associated, since Entities may get flaky and provoke unnecessary knee
jerk reaction.  Now one can make that into a strategy solution you
mentioned by splitting the Entity stream context into separate item.
Then Agent becomes pure logic machine and that will be "proper" OO
way, but seems impractical for my case though. The reason for that is
that Agent and the way data is conditioned is very inter-related and
generalize that will cause a lot of unnecessary LOCs and spread of
code that should better be kept localized.

More fundamental question is there any payback in separating strategy
and history (context). Which will be then History and Logic I guess?




>
> For the empty record?
> I thought I did already. :-)
> This might be a challenge, because we have no judge that can say
> whether something is academic or not.
>
> Consider a logging system that is designed with OO in mind. There is a
> base interface with some operation(s) for logging and a bunch of
> concrete implementations for various log destinations - one for disk
> file, one for network output, one for database persistency, etc. The
> part of the program that does something useful takes Log'Class and
> feeds its log entries via given Log'Class parameter to whatever
> happens to be a concrete Log implementation - a classic strategy
> pattern.
>
> What would you do to... switch the logging off?

There is some sort of logging (usually more then one) involved in
every project I do, thus there is always a switch and (sometimes) this
switch is flipped at run-time. Sometimes there is also a
Null_Destination.

But developing this logging theme let's consider a real (my) life
example.  You receive the events for logging but you don't want
5,000,000 records of the same to go in when some device malfunctions.
You rather want first 10, and something stating that this is serious
condition, etc. Is there a way to use stateless adapter or you have to
have a context?

George

>
> I would create the derived (concrete) log that is *empty* and does
> nothing and pass it as Log'Class to wherever it is expected.
> It cannot be simpler than that.
>
> Is it academic? I would do it at the nearest opportunity.
>
> --
> Maciej Sobczak *www.msobczak.com*www.inspirel.com




  parent reply	other threads:[~2008-04-06  7:00 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-01 11:58 How to return an empty aggregate Maciej Sobczak
2008-04-01 12:54 ` Anh Vo
2008-04-01 17:18   ` Adam Beneschan
2008-04-02  7:16     ` Maciej Sobczak
2008-04-01 13:34 ` Dmitry A. Kazakov
2008-04-01 15:00 ` Robert A Duff
2008-04-02  7:19   ` Maciej Sobczak
2008-04-03  5:02     ` george.priv
2008-04-03  9:09       ` Maciej Sobczak
2008-04-04 15:38         ` george.priv
2008-04-04 20:35           ` Maciej Sobczak
2008-04-04 23:58             ` george.priv
2008-04-05 13:48               ` Maciej Sobczak
2008-04-05 16:04                 ` george.priv
2008-04-05 21:14                   ` Maciej Sobczak
2008-04-05 22:36                     ` george.priv
2008-04-06 19:53                       ` Maciej Sobczak
2008-04-06  7:00                     ` george.priv [this message]
2008-04-06 20:04                       ` Maciej Sobczak
2008-04-07 20:23                         ` george.priv
replies disabled

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