From: "Alex R. Mosteo" <devnull@mailinator.com>
Subject: Re: Basic Explaination of OO in Ada
Date: Tue, 19 Sep 2006 17:56:04 +0200
Date: 2006-09-19T17:56:04+02:00 [thread overview]
Message-ID: <4nai8dF97euuU1@individual.net> (raw)
In-Reply-To: 1158679879.965952.156540@m73g2000cwd.googlegroups.com
Ludovic Brenta wrote:
> Access types come in handy if you want a collection of class-wide
> objects; the collection is said to be polymorphic:
>
> with Pak;
> package Collection is
> type Ref is access Pak.T'Class; -- access-to-class-wide-objects
> type Vector is array (Positive range <>) of Ref; -- polymorphic
> vector
> procedure Traverse (V : in Vector);
> end Collection;
>
> package body Collection is
> procedure Traverse (V : in Vector) is
> begin
> for J in V'Range loop
> if V (J) /= null then
> Pak.P (V (J).all); -- dispatches on the specific type of
> the object
> end if;
> end loop;
> end Traverse;
> end Collection;
Just a note: although what Ludovic writes is right, and you can only have
vanilla arrays of definite types, you can have more sophisticated
containers (for example Ada.Containers.Indefinite_Vectors) that store
class-wide types in Ada 2005:
package Pak_Vectors is
new Ada.Containers.Indefinite_Vectors (Positive, Pak.T'Class);
In this case, however, you store copies so some overhead can occur, but in
many cases it can be more convenient than starting to play with pointers.
next prev parent reply other threads:[~2006-09-19 15:56 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-09-18 15:24 Basic Explaination of OO in Ada richard.charts
2006-09-18 16:31 ` Georg Bauhaus
2006-09-18 16:43 ` Georg Bauhaus
[not found] ` <j%zPg.13190$bM.10526@newsread4.news.pas.earthlink.net>
2006-09-18 17:13 ` Javier Miranda
2006-09-18 17:51 ` Robert A Duff
2006-09-18 18:32 ` Gautier
2006-09-18 19:55 ` richard.charts
2006-09-19 3:29 ` Lucretia
2006-09-19 8:49 ` gautier_niouzes
2006-11-20 6:13 ` adaworks
2006-11-24 14:48 ` Marco
2006-11-24 15:15 ` Javier Miranda
2006-09-18 19:37 ` Lucretia
2006-09-18 20:25 ` Jeffrey R. Carter
2006-09-19 3:32 ` Lucretia
2006-09-19 13:56 ` richard.charts
2006-09-19 14:10 ` Lucretia
2006-09-19 14:23 ` richard.charts
2006-09-19 15:45 ` Dmitry A. Kazakov
2006-09-19 15:31 ` Ludovic Brenta
2006-09-19 15:56 ` Alex R. Mosteo [this message]
2006-09-19 16:06 ` Ludovic Brenta
2006-09-19 16:14 ` Alex R. Mosteo
2006-09-20 7:16 ` Maciej Sobczak
2006-09-19 20:45 ` Jeffrey R. Carter
2006-09-19 21:15 ` Hyman Rosen
2006-09-20 7:27 ` Dmitry A. Kazakov
2006-09-19 6:00 ` Martin Krischik
2006-09-19 20:33 ` Jeffrey R. Carter
2006-09-20 6:41 ` Martin Krischik
2006-09-21 1: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