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.6 required=5.0 tests=BAYES_20,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,2ea02452876a15e1 X-Google-Attributes: gid103376,public From: bobduff@world.std.com (Robert A Duff) Subject: Re: Choice of OO primitives in Ada95 Date: 1996/02/19 Message-ID: #1/1 X-Deja-AN: 140131306 references: <4g2f8v$15lc@watnews1.watson.ibm.com> organization: The World Public Access UNIX, Brookline, MA newsgroups: comp.lang.ada Date: 1996-02-19T00:00:00+00:00 List-Id: In article , Don Harrison wrote: >package X is > type MARRIAGE is tagged ... > type PERSON is tagged ... > type UNIVERSITY is tagged ... > type GOVERNMENT is tagged ... > type ELECTORATE is tagged ... > type ADDRESS is tagged ... > > procedure Enrol (Student : in out PERSON; Uni : in out UNIVERSITY); > procedure Award_Grant (Polies : in out GOVERNMENT; Uni : in out UNIVERSITY); > procedure Make_Gerrymander (Polies : in out GOVERNMENT; Elect : in out ELECTORATE); > function Office_Address (Elect : in ELECTORATE) return ADDRESS; > >end X; > >Each abstraction is related to the previous one but isn't necessarily related >to any other. As I understand it, the language rules dictate that each of these >abstractions must be in the same package. No, they don't have to be in the same package (and as you say, probably should not be). Could you explain what you mean -- why do you think that all of the above types have to be in the same package? (By the way, the above code is illegal, by 3.9.2(12).) >I can't make any comment on C++ as I'm unfamiliar with it (must be the only >one in the world). The Eiffel equivalent of static members are probably 'once' >attributes which may optionally be exported (visible or private). No, static members in C++ are not quite the same thing as Eiffel's 'once' attributes. A static member is just a function that is inside the class for visibility/encapsulation purposes, but isn't attached to any particular object. In other words, there's no "self" or "this" when you call a static member. A once attribute is a function that gets executed just once, and the result gets saved -- when you call it again, you get the saved value. In Ada, you would just use a constant for that purpose, in most cases. >... This issue >is language war flame bait and I don't intend to defend the pure OO position >here :-) Once attributes are flame bait? Not sure why anybody would get too hot about that issue. OK, if you say so. - Bob