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.9 required=5.0 tests=BAYES_00,LOTS_OF_MONEY autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,602b7f606b0d64e2 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2003-01-11 06:39:48 PST Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!sn-xit-03!sn-xit-01!sn-post-01!supernews.com!corp.supernews.com!claveman From: claveman@grzorgenplatz.net (Charles H. Sampson) Newsgroups: comp.lang.ada Subject: Re: Private discrete type as index Date: Sat, 11 Jan 2003 06:36:53 -0800 Organization: NetHere Inc. Message-ID: <1folzmn.po64991od5f02N%claveman@grzorgenplatz.net> References: <8pLT9.105190$hK4.8530896@bgtnsc05-news.ops.worldnet.att.net> User-Agent: MacSOUP/2.4.6 Cache-Post-Path: news-1.nethere.net!unknown@ppp-207-167-100-45.sndg-pm4-2.dialup.nethere.net X-Cache: nntpcache 3.0.1 (see http://www.nntpcache.org/) X-Complaints-To: abuse@supernews.com Xref: archiver1.google.com comp.lang.ada:32917 Date: 2003-01-11T06:36:53-08:00 List-Id: AG wrote: > "James S. Rogers" wrote in message > news:TwPT9.105450$hK4.8563792@bgtnsc05-news.ops.worldnet.att.net... > > > "AG" wrote in message > > > However, what if you want to let your clients know that > > > that the structure is indeed an array and provide appropriate > > > operations on the index but prevent them from directly > > > manipulating it? > > > > > I am unclear what you mean by "providing appropriate operations" > > without allowing direct manipulation. This sounds like an iterator to > > me. Please describe what you have in mind instead. > > > > OK, here it is: > > package test is > > type X is new Integer; -- What I'd like here is "limited private" instead of > "new integer" > > type Test is array(X) of Boolean; > > function "+"(Left: X) return X; -- Unary increment (however that may be > implemented) > > function "+"(Left:X; N: Integer) return X; -- Shift by N positions (does not > equal N times other "+") > > private > > -- Defiinition of "X" here whatever it may be > > end test; It looks like you have an ADT that you've chosen to implement as an array. If that's true, the fact that you've chosen an array, rather than a linked list or something else, is an implementation decision and should be hidden in the package or its private part. I'm guessing that you want the user to know that you've used an array for the ease of access to its components. Unfortunately, losing that ease of access is one of the prices you pay for the benefit of the abstraction (information hiding). I don't think it would be onerous to the ADT's users to have to employ a "retrieve component" function and a "store component" procedure. > The code above compiles fine. Replacing "new Integer" with "limited private" > does not. > > But, if it did, it would allow the user of the package to do things like > 10th position from > > wherever the index is now and it would be the responsibility of the > implementation > > to know what/where it is. At the same time, the client package would have no > clue > > as to what the type is or be able to operate on it directly (only through > any functions > > provided by the package which was the whole point). Charlie -- For an email response, my real user name is csampson and my ISP is inetworld.net.