From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,c7fe97e7d36f4c57,start X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 1995-03-02 04:12:39 PST Path: bga.com!news.sprintlink.net!howland.reston.ans.net!news.moneng.mei.com!uwm.edu!lll-winken.llnl.gov!winken.llnl.gov!woodruff From: woodruff@neux2.llnl.gov (John Woodruff) Newsgroups: comp.lang.ada Subject: [Q] Relationships between tagged types Date: 01 Mar 1995 01:31:16 GMT Organization: Lawrence Livermore National Lab Distribution: world Message-ID: Reply-To: woodruff1@llnl.gov NNTP-Posting-Host: neux2.llnl.gov Date: 1995-03-01T01:31:16+00:00 List-Id: 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