comp.lang.ada
 help / color / mirror / Atom feed
From: Michael Erdmann <Michael.Erdmann@snafu.de>
Subject: Re: Usage of Interfaces with Ada 95
Date: Sun, 28 Sep 2003 10:28:52 +0200
Date: 2003-09-28T10:28:52+02:00	[thread overview]
Message-ID: <4nii41-067.ln1@boavista.snafu.de> (raw)
In-Reply-To: u65jdiro7.fsf@earthlink.net

Matthew Heaney wrote:

> Hyman Rosen <hyrosen@mail.com> writes:
> 
>> Using inheritance for iterators is silly and wrong, since the base
>> iterator class can't express anything about what it iterates over, or
>> what type it returns.
>> 
>> Go see the Charles library for how to do it right.
> 
> Amen to that.  He needs a generic algorithm, but just doesn't know how
> to express it in Ada.  Use the Source, Luke!
> 
> <http://home.earthlink.net/~matthewjheaney/charles/>
This is not the point! The point is, that i like to setup a 
repository of concepts, which is specialized when it is used.
For example, the iterator (or enumerator) is a very general
concept which requieres basicaly the following methods

    First          - Return the first element
    Next           - Fetch the next element
    HasMoreElement - Check if there is more


By introducing a set of concepts i like to standarize the 
conding. For example the arugment between two developers already
start with naming of the method HasMoreElements. In order to avoid 
such discussions i like to introduce interface class as for example 
in java. 
The nice thing about java interfaces is that all classes
are derived from the Object class. This is not the case in Ada,
there i dont have such a thing as the Object class. And it seems
that i need use generics making the handling a little bit 
complicated because:

   1. Define a generic package with your abstract interface
      which has a type as argument.
   2. Specialize the interface for the requiered type,
      which is still abstract.
   3. Implement classes around the specialzed types.

I am looking for a way of avoiding step 1.



 



  reply	other threads:[~2003-09-28  8:28 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-09-26 16:36 Usage of Interfaces with Ada 95 Michael Erdmann
2003-09-26 16:50 ` chris
2003-09-26 16:55 ` Hyman Rosen
2003-09-26 19:10   ` Michael Erdmann
2003-09-26 20:37     ` Hyman Rosen
2003-09-27 15:05       ` Michael Erdmann
2003-09-28  2:11         ` Matthew Heaney
2003-09-29  2:25         ` George Shapovalov
2003-09-28  2:14   ` Matthew Heaney
2003-09-28  8:28     ` Michael Erdmann [this message]
2003-09-28 14:33       ` Matthew Heaney
2003-09-28 15:09         ` Michael Erdmann
2003-09-28 21:50           ` Matthew Heaney
2003-09-30  4:57             ` Michael Erdmann
2003-09-30 10:02               ` Mário Amado Alves
2003-09-30 12:31               ` Matthew Heaney
2003-09-30 19:58                 ` Michael Erdmann
2003-09-28 17:10         ` Simon Wright
2003-09-28 21:52           ` Matthew Heaney
2003-09-28 21:58           ` Matthew Heaney
2003-09-29 19:37             ` Georg Bauhaus
2003-09-29 19:45               ` Georg Bauhaus
2003-09-30  7:10               ` Preben Randhol
2003-09-29 20:11             ` Simon Wright
2003-09-29 22:56               ` Matthew Heaney
2003-09-30 14:53                 ` Matthew Heaney
2003-09-30 16:13                   ` Preben Randhol
2003-09-29 13:49           ` Matthew Heaney
2003-09-28 18:22       ` Robert I. Eachus
2003-09-29  3:02         ` Hyman Rosen
2003-09-30  3:11           ` Robert I. Eachus
2003-09-30 13:38             ` Hyman Rosen
2003-09-30 21:46               ` Robert I. Eachus
2003-09-30 22:10                 ` Hyman Rosen
2003-10-01  2:30                   ` Robert I. Eachus
2003-10-01  2:41                   ` Robert I. Eachus
2003-10-01 13:21                     ` Hyman Rosen
2003-10-01 17:01                       ` Robert I. Eachus
2003-10-01 18:46                       ` Matthew Heaney
2003-09-29 14:52       ` Stephen Leake
2003-09-29 23:00         ` Matthew Heaney
2003-09-30 12:49           ` Marin David Condic
2003-09-30 23:48             ` Matthew Heaney
replies disabled

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