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=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,6cb2525ffbfe23ce X-Google-Attributes: gid103376,public From: "Pat Rogers" Subject: Re: Why both "with" and "use"? Date: 1999/02/14 Message-ID: <7a7fiv$i5$1@remarQ.com>#1/1 X-Deja-AN: 444385051 References: <36C5B28C.F32C43A4@jps.net> <7a4f85$rh1$1@remarQ.com> <7a4j3h$64e@drn.newsguy.com> <7a4pem$qlc$1@remarQ.com> <7a6jho$nkv$1@remarQ.com> X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3 X-Complaints-To: newsabuse@remarQ.com X-Trace: 919028127 Y6JRGRJUHDE16C640C usenet54.supernews.com Organization: Software Arts & Sciences Newsgroups: comp.lang.ada Date: 1999-02-14T00:00:00+00:00 List-Id: Bob Collins wrote in message ... >In article <7a6jho$nkv$1@remarQ.com>, "Pat Rogers" > wrote: > >> Yes, the package isn't part of the type itself, but let's go back for >> a moment to the definition I gave of an ADT: "a set of legal >> operations (the "primitives") and legal values, and little else." It >> is the "little else" that packages provide, and IMHO and ADT without >> that aspect is not an ADT. We're in agreement overall, of course, but >> I think it is important to stress that, in addition to the demarcation >> of the primitives, as you've said above, the encapsulation of the >> type's representation is an essential aspect of an ADT. Without >> packages, we have no encapsulation, no information hiding. > >In the Guttag-Horning-Liskov formulations of the algebraic >specifications of ADTs, errors were important values. The >Ada package allows errors in ADTs very naturally, as exceptions >declared inside the package. Every stack ADT need an Empty_Stack >exception declaration for completeness as an ADT and possibly >a Stack_Overflow exception declaration as a practical convenience. > >These are the kinds of things that are more than the "little else" >mentioned above. Also, when the TOI (type of interest) in each of >two type algebras is a supporting type in the other, it is >programmatically convenient to include both ADTs in the same >package. In this thread, we've already seen an example of a structure >and its iterator in the same package. I fail to see how the above argues against my point that encapsulation (provided by the package) is a necessary aspect of an ADT. No one would argue that error conditions are not part of the ADT interface. My point is that the operations available due to the type's representation are available unless the package prevents it, and such operations are *not* part of the interface. --- Pat Rogers Training & Development in: http://www.classwide.com Deadline Schedulability Analysis progers@classwide.com Software Fault Tolerance (281)648-3165 Real-Time/OO Languages > >-- >Bob Collins