comp.lang.ada
 help / color / mirror / Atom feed
From: Simon Wright <simon@pushface.org>
Subject: Re: List container strawman 1.1
Date: 11 Nov 2001 21:09:04 +0000
Date: 2001-11-11T21:09:04+00:00	[thread overview]
Message-ID: <x7v3d3lrp5b.fsf@smaug.pushface.org> (raw)
In-Reply-To: 3BECA6F9.B317CB11@acm.org

Jeffrey Carter <jrcarter@acm.org> writes:

> Ted Dennison wrote:
> > 
> > Generally, I'd agree with you. However, at least one person did use the
> > word "unaceptable" when I described the multi-level instantiation
> > process a Booch user has to go through.
> 
> I think I used "unacceptable" to refer to the several hours of study
> you said was necessary to learn to instantiate a simple data
> structure.  Multiple instantiations are undesirable, but multiple
> instantiations that take hours to learn to use unacceptable.

I think it only takes hours the first time (and without any help).


From the documentation:

In the example, a Car has three attributes, the Plate (the Index Mark;
my first car's was 8493KC), the Model name (it was a Vauxhall Cresta)
and the date it was Registered (some time in the mists of antiquity).

   with Ada.Calendar;
   with Ada.Strings.Bounded;
   package Cars is

      package Plate_Strings
      is new Ada.Strings.Bounded.Generic_Bounded_Length (10);
      subtype Plate_String
      is Plate_Strings.Bounded_String;

      package Model_Strings
      is new Ada.Strings.Bounded.Generic_Bounded_Length (32);
      subtype Model_String
      is Model_Strings.Bounded_String;

      type Car is record
         Plate : Plate_String;
         Model : Model_String;
         Registered : Ada.Calendar.Time;
      end record;

   end Cars;

A company's Fleet holds a number of Cars. 

The first thing to do is to instantiate the top-level abstract
Containers for Car. Note, we have to supply an equality operator ("=")
for Car; we could also just use Cars.

   with BC.Containers;
   with Cars;
   package Abstract_Car_Containers
   is new BC.Containers (Cars.Car, "=" => Cars."=");

Next, using the new Abstract_Car_Containers, instantiate the abstract
Collections:

   with Abstract_Car_Containers;
   with BC.Containers.Collections;
   package Abstract_Car_Collections
   is new Abstract_Car_Containers.Collections;

You now have to choose the representation to be used for the concrete
Collection. To start with, assume that you'll never have more than 30
Cars to deal with. This means that you can use the Bounded form.

   with Abstract_Car_Collections;
   with BC.Containers.Collections.Bounded;
   package Fleets
   is new Abstract_Car_Collections.Bounded (Maximum_Size => 30);

You now need to create your Fleet: 

   with Fleets;
   package My_Fleet is

      The_Fleet : Fleets.Collection;

   end My_Fleet;




There, not so bad eh :-)



  reply	other threads:[~2001-11-11 21:09 UTC|newest]

Thread overview: 90+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-11-02 20:29 List container strawman 1.1 Ted Dennison
2001-11-02 21:00 ` Larry Kilgallen
2001-11-02 21:08   ` Ted Dennison
2001-11-02 21:43     ` Larry Kilgallen
2001-11-02 21:20 ` Darren New
2001-11-02 23:33   ` Jeffrey Carter
2001-11-03  0:19     ` Darren New
2001-11-03  7:03   ` Ted Dennison
2001-11-02 21:45 ` Eric Merritt
2001-11-02 22:52   ` Larry Kilgallen
2001-11-03  7:09   ` Ted Dennison
2001-11-04  0:30   ` Nick Roberts
2001-11-05 12:40     ` Eric Merritt
2001-11-05 22:26       ` Nick Roberts
2001-11-05 23:28         ` Eric Merritt
2001-11-06 16:42           ` Nick Roberts
2001-11-06 17:24             ` Stephen Leake
2001-11-06 18:28               ` Eric Merritt
2001-11-06 22:17               ` Nick Roberts
2001-11-07 19:31                 ` Stephen Leake
2001-11-07 22:55                   ` Nick Roberts
2001-11-10  3:17                   ` Ted Dennison
2001-11-10  3:31                     ` Darren New
2001-11-13 16:47                       ` Stephen Leake
2001-11-13 17:21                         ` Darren New
2001-11-13 20:36                           ` Ted Dennison
2001-11-13 23:48                             ` Ben Place
2001-11-14  4:01                               ` Nick Roberts
2001-11-14 16:10                                 ` Jeffrey Carter
2001-11-14 19:12                                   ` Ted Dennison
2001-11-14 22:32                                   ` Jeffrey Carter
     [not found]                                   ` <_mzI7.24675 <3BF2F0E7.5DD40B4B@boeing.com>
2001-11-15  3:49                                     ` Nick Roberts
2001-11-10  3:07               ` Ted Dennison
2001-11-10 14:18               ` Florian Weimer
2001-11-13 16:48                 ` Stephen Leake
2001-11-06 18:21             ` Eric Merritt
2001-11-08 11:53               ` Simon Wright
2001-11-06 16:30       ` Darren New
2001-11-06 18:19         ` Eric Merritt
2001-11-04  4:55   ` Larry Hazel
     [not found] ` <3BE31DD5.FF96AFE0@san.rr.com>
2001-11-03  7:07   ` Ted Dennison
2001-11-03 18:59     ` Jeffrey Carter
2001-11-04 19:07       ` Darren New
2001-11-04 22:21         ` Jeffrey Carter
2001-11-04 23:43           ` James Rogers
2001-11-05 18:09           ` Darren New
2001-11-05 22:59             ` Jeffrey Carter
2001-11-04 20:56 ` Jean-Marc Bourguet
2001-11-05 20:00   ` Ted Dennison
2001-11-05 20:27     ` Darren New
2001-11-05 20:54       ` Ted Dennison
2001-11-05 22:30         ` Darren New
2001-11-08 10:50     ` Ehud Lamm
2001-11-05  9:53 ` Mike Ovenden
2001-11-05 14:37 ` Jean-Marc Bourguet
2001-11-05 20:03   ` Ted Dennison
2001-11-06  8:52     ` Jean-Marc Bourguet
2001-11-05 16:01 ` Marin David Condic
2001-11-05 20:06   ` Ted Dennison
2001-11-05 20:45     ` Marin David Condic
2001-11-08 10:54       ` Ehud Lamm
2001-11-08 19:30         ` Marin David Condic
2001-11-08 22:06           ` Nick Roberts
2001-11-10 18:15         ` Simon Wright
2001-11-11 21:33           ` Pascal Obry
2001-11-11 21:55             ` Ehud Lamm
2001-11-05 22:37   ` Nick Roberts
2001-11-09 15:51     ` Ted Dennison
2001-11-10  0:47       ` Nick Roberts
2001-11-06 12:38 ` Roy Bell
2001-11-08 10:56   ` Ehud Lamm
2001-11-08 18:08     ` Roy Bell
2001-11-09 15:55       ` Ted Dennison
2001-11-09 16:15         ` Ehud Lamm
2001-11-09 17:37         ` Marin David Condic
2001-11-09 22:24           ` Ehud Lamm
2001-11-11 15:39             ` Marin David Condic
2001-11-10  2:35           ` Ted Dennison
2001-11-10  4:03             ` Jeffrey Carter
2001-11-11 21:09               ` Simon Wright [this message]
2001-11-12  5:33                 ` Ted Dennison
2001-11-12 16:13                 ` Jeffrey Carter
2001-11-13  7:11                   ` Simon Wright
2001-11-11 15:45             ` Marin David Condic
2001-11-11 21:03           ` Simon Wright
2001-11-11 21:57             ` Ehud Lamm
2001-11-12 15:24             ` Marin David Condic
2001-11-13  7:06               ` Simon Wright
2001-11-13 21:21                 ` Marin David Condic
2001-11-13 16:55             ` Stephen Leake
replies disabled

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