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: <7a6jho$nkv$1@remarQ.com>#1/1 X-Deja-AN: 444259971 References: <36C5B28C.F32C43A4@jps.net> <7a4f85$rh1$1@remarQ.com> <7a4j3h$64e@drn.newsguy.com> <7a4pem$qlc$1@remarQ.com> X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3 X-Complaints-To: newsabuse@remarQ.com X-Trace: 918999416 Y6JRGRJUHDE35C640C usenet54.supernews.com Organization: Software Arts & Sciences Newsgroups: comp.lang.ada Date: 1999-02-14T00:00:00+00:00 List-Id: Matthew Heaney wrote in message ... >"Pat Rogers" writes: > >> A package serves more of a central purpose in Ada 95, especially when >> it exports a tagged type declaration. >> >> The big difference (or, at least one difference) between Java packages >> and Ada packages is that the combination of an Ada package and a >> private type defines an Abstract Data Type. > >I wouldn't quite phrase it that way. With respect to the declaration of >a type (and I mean _any_ kind of type, not just ADTs), the package in >which the type is declared serves to demarcate, among all the operations >in the universe that can take objects of that type as a parameter or >return value, those operations that are "primitive" for the type. Yes, I believe that is what I said (in a part you've snipped). >Perhaps I am being pedantic, but I don't regard a package as part of a >type. I regard the type as its name, values, and (primitive) >operations. The package is just syntactic overhead necessary to >identify the primitive operations, but the package itself is not part of >the type. 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. --- Pat Rogers Training & Development in: http://www.classwide.com Deadline Schedulability Analysis progers@acm.org Software Fault Tolerance (281)648-3165 Real-Time/OO Languages