comp.lang.ada
 help / color / mirror / Atom feed
From: Marin David Condic <nobody@noplace.com>
Subject: Re: Idiom for a class and an object in Ada
Date: Tue, 19 Oct 2004 12:59:26 GMT
Date: 2004-10-19T12:59:26+00:00	[thread overview]
Message-ID: <Oc8dd.2347$ta5.1598@newsread3.news.atl.earthlink.net> (raw)
In-Reply-To: <9175719.eWmeGlFrVu@linux1.krischik.com>

So you would do something that looked like this:

package AD_Converter_Class_And_Objects is

     type AD_Converter is tagged private ;

     procedure Some_Op (AD : in out AD_Converter) ;

     AD_Number_1 : AD_Converter ;

private
     --stuff
end AD_Converter_Class_And_Objects ;

Similarly if I had a half-dozen of these puppies? If I had only one, 
you'd want to hide it in the package body and make the package be an 
object instead of a class?

Would there be a reason to prefer making a child package to contain one 
or more objects of the class? Or a separate child package for each object?

There could be plusses and minuses to any given approach. I'm mostly 
wondering what most Ada programmers prefer or tend to use.

MDC



Martin Krischik wrote:

> Marin David Condic wrote:
> 
> 
>>Suppose I have a class with one or a limited set of objects. The objects
>>are "global" in the sense that they hang around from program startup
>>thru the entire life of execution. An example would be an A/D Converter
>>class - My little control box might have 3 or 4 A/Ds in it - they're
>>always there and I want the data associated with them to be static (not
>>declared on the stack.)
>>
>>Question: What is the preferred Ada idiom for defining such a creature?
>>
>>I have a package that defines the class - that contains the tagged type
>>and any methods. I might:
>>
>>a) Declare the objects within that "class" package
> 
> 
> Yes, within the class body only.
>  
> 
>>b) Declare the objects within some child package of the class package
> 
> 
> If there are a lot of static data, use a private package.
> 
> For both: When multi tasking is an issue use a protected type to secure
> access to the data.
>  
> 
>>c) Declare the objects in some global "Here's all my static data"
>>package (not very tidy)
> 
> 
> No.
> 
> 
>>d) Declare the objects in the main program (not good if they are
>>accessed by more than one task and also a kind of dumping ground)
> 
> 
> No as well. Each package has it
> 
> 
>>Does anybody have an opinion or experience with doing this? I know what
>>I've done in the past, but I'm curious if there is any preferred method
>>or idiom for this in the OO paradigm as applied to Ada?
> 
> 
> If you truly thing about OO you would us a singelton class. You know a class
> where only one instance exists. Within the singelton class (package body)
> you can either use class data or static data. It would not matter since is
> is all hidden inside the package body.
> 
> With Regards
> 
> Martin
> 
> 

-- 
======================================================================
Marin David Condic
I work for: http://www.belcan.com/
My project is: http://www.jsf.mil/NSFrames.htm

Send Replies To: m   o   d   c @ a   m   o   g
                    c   n   i       c   .   r

     "Power corrupts.  Absolute power is kind of neat"
         -- John Lehman, Secretary of the Navy 1981-1987
======================================================================



  parent reply	other threads:[~2004-10-19 12:59 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-10-18 11:47 Idiom for a class and an object in Ada Marin David Condic
2004-10-18 12:14 ` Martin Krischik
2004-10-18 19:40   ` Matthew Heaney
2004-10-19 12:59   ` Marin David Condic [this message]
2004-10-19 14:46     ` Martin Dowie
2004-10-19 15:55       ` Matthew Heaney
2004-10-19 18:31         ` Martin Dowie
2004-10-19 15:52     ` Matthew Heaney
2004-10-18 12:26 ` Marius Amado Alves
2004-10-19  2:09   ` Jeffrey Carter
2004-10-19  3:28     ` Matthew Heaney
2004-10-19 12:53       ` Marin David Condic
2004-10-19 14:44         ` Matthew Heaney
2004-10-19 15:01           ` Dmitry A. Kazakov
2004-10-19 15:40             ` Matthew Heaney
2004-10-20  7:58               ` Dmitry A. Kazakov
2004-10-20 12:31                 ` Marin David Condic
2004-10-20 13:53                   ` Dmitry A. Kazakov
2004-10-20 15:23                   ` Matthew Heaney
2004-10-21 12:24                     ` Marin David Condic
2004-10-21 17:15                       ` Matthew Heaney
2004-10-20  5:39         ` Simon Wright
2004-10-20  7:24           ` Matthew Heaney
2004-10-20  8:39             ` Dmitry A. Kazakov
2004-10-21  1:36             ` Jeffrey Carter
2004-10-21  1:46               ` Matthew Heaney
2004-10-21  7:51                 ` Dmitry A. Kazakov
2004-10-21 12:45                   ` Matthew Heaney
2004-10-21 14:11                     ` Dmitry A. Kazakov
2004-10-22  1:04                 ` Jeffrey Carter
2004-10-22  1:36                   ` Matthew Heaney
2004-10-21 19:31               ` Kevin Cline
2004-10-21 22:02                 ` Matthew Heaney
2004-10-22  0:10                   ` Matthew Heaney
2004-10-21  8:25             ` Martin Dowie
2004-10-20 17:04           ` Matthew Heaney
2004-10-20 19:37             ` Simon Wright
2004-10-20 20:04               ` Matthew Heaney
2004-10-22  5:37                 ` Simon Wright
2004-10-20  1:10       ` Jeffrey Carter
2004-10-20  7:04         ` Matthew Heaney
2004-10-20 12:42           ` Marin David Condic
2004-10-20 12:55             ` Matthew Heaney
2004-10-20 15:27             ` Matthew Heaney
2004-10-21  1:36               ` Matthew Heaney
2004-10-19 12:38   ` Marin David Condic
2004-10-18 16:59 ` Matthew Heaney
2004-10-18 18:02 ` Martin Dowie
2004-10-19 13:06   ` Marin David Condic
2004-10-19 14:51     ` Martin Dowie
2004-10-20 16:20 ` Michael Paus
2004-10-20 17:15   ` Matthew Heaney
2004-10-20 17:55     ` Michael Paus
2004-10-21 12:33   ` Marin David Condic
  -- strict thread matches above, loose matches on Subject: below --
2004-10-21 13:59 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