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 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,a270a1fc28d4f812 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2002-06-24 14:41:39 PST Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!postnews1.google.com!not-for-mail From: dennison@telepath.com (Ted Dennison) Newsgroups: comp.lang.ada Subject: Re: OOD in Ada? Date: 24 Jun 2002 14:41:39 -0700 Organization: http://groups.google.com/ Message-ID: <4519e058.0206241341.7c848bb7@posting.google.com> References: <3D153ABB.4090400@telepath.com> <4peR8.134$F46.42900789@newssvr14.news.prodigy.com> NNTP-Posting-Host: 65.115.221.98 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Trace: posting.google.com 1024954899 16847 127.0.0.1 (24 Jun 2002 21:41:39 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: 24 Jun 2002 21:41:39 GMT Xref: archiver1.google.com comp.lang.ada:26675 Date: 2002-06-24T21:41:39+00:00 List-Id: tmoran@acm.org wrote in message news:<4peR8.134$F46.42900789@newssvr14.news.prodigy.com>... > > >>1. The infamous "withing" problem (i.e. it is not possible to declare 2 > > >>classes A and B, each in its own package, such that A has a method taking a > > >>paremeter of type "access B", and B has a method with a parameter of type > > >>"access A"); and > > ... telling me that my code needs to be better structured. > Right. A case can be made that if structure A needs to know about > B, and B needs to know about A, they probably should be in the same > package anyway (or at least children with a common ancestor they both > know). 9 times out of 10, I'd say it means that your control flow is a mess, and one of the two needs to be promoted to "server" (and the other to "client"). Note that the Grace list package's list and iterator types in the reference implementation that I wrote fall into the 1 out of 10. So I'm certianly not saying you should *never* do this. But you should avoid it unless your two types really are inseperably interrelated.