From: woodruff@neux2.llnl.gov (John Woodruff)
Subject: [Q] Relationships between tagged types
Date: 01 Mar 1995 01:31:16 GMT
Date: 1995-03-01T01:31:16+00:00 [thread overview]
Message-ID: <WOODRUFF.95Feb28173116@neux2.llnl.gov> (raw)
I'm trying to teach myself the OO features of Ada95, and sometimes I
get a little stuck. Here is a case where I'd benefit from a little
advice. I suspect that there is an idiomatic structure for modeling
related extensible types, but I'm stumbling.
package Reading is
type Reading_Type is tagged null record ;
--
-- I hope to model some distinct devices, each kind with its own reading
--
type continuous_reading is new Reading_Type with record
value : float ;
end record ;
type discrete_reading is new Reading_Type with record
value : integer ;
end record ;
-- I am going to get a reading from one of these devices,
-- using some dispatching operation not shown here, then
-- decide if the reading is significantly out of tolerance:
type Tolerance is record
Upper, Lower : Reading_Type ; -- this is not quite what I want!
end record ; -- but 'class is not correct here
-- I wish I could express the fact that discrete readings are
-- characterized by discrete tolerances, etc ...
-- Now the point of the exercise is to require that continuous
-- readings be tested for significance against continuous tolerances, etc.
-- But I haven't seen how to do this without making the
-- functions try to dispatch on two different parameters
function Significant (Reading : Continuous_Reading ;
Bound : Tolerance) return Boolean ;
function Significant (Reading : Discrete_Reading ;
Bound : Tolerance) return Boolean ;
end Reading ;
The issues I wish I could model in the spec I sketched here are
reading_type can be extended for numerous kinds of devices
each reading_type has a corresponding tolerance type
I want to assure that reading and tolerance values stay paired, so
operations like Significant (and other opn's tbd) will be type-safe
There doesn't seem to be a reason for reference semantics, since I
dont see any cause for sharing access to values (thus I have not used
access types).
I'd be glad to have advice; thanks.
--
John Woodruff
Lawrence Livermore National Lab
510 422 4661
next reply other threads:[~1995-03-01 1:31 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
1995-03-01 1:31 John Woodruff [this message]
1995-03-03 14:44 ` [Q] Relationships between tagged types Tucker Taft
1995-03-08 12:52 ` Real-time implications of Ada 95 OO features Will Stewart
1995-03-09 3:45 ` Offer Pazy
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox