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.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,34c2aa33b8bdb1a9 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2002-01-11 10:14:05 PST Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!bloom-beacon.mit.edu!nycmny1-snh1.gtei.net!washdc3-snh1.gtei.net!news.gtei.net!news.mindspring.net!not-for-mail From: Richard Riehle Newsgroups: comp.lang.ada Subject: Re: Sugestion to Multiple Inheritance Date: Fri, 11 Jan 2002 10:14:24 -0800 Organization: AdaWorks Software Engineering Message-ID: <3C3F2B7F.4F077FC0@adaworks.com> References: Reply-To: richard@adaworks.com NNTP-Posting-Host: 9e.fc.cd.67 Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Server-Date: 11 Jan 2002 18:13:50 GMT X-Mailer: Mozilla 4.7 [en] (Win98; I) X-Accept-Language: en Xref: archiver1.google.com comp.lang.ada:18788 Date: 2002-01-11T18:13:50+00:00 List-Id: Lutz Donnerhacke wrote: > The rationale suggests three solutions in chapter "4.6 Multiple Inheritance": None of those suggestions in the Rationale satisfies the requirements for multiple inheritance. They are simply workarounds. There is no MI in Ada, period. That is not a bad thing, but it is a fact. MI, as with any inheritance, requires satisfying the Liskov Substitutatility Priniciple. None of the workarounds do. MI implies a corresponding available of polymorphic types. None of the workarounds do. MI implies dispatching, dynamically, on any derivation of a type in the inheritance hierarchy. None of the workarounds do. In my view, MI is still a research topic. There is no universally accepted model, and no foolproof design, at this stage, in any language, that can be said to solve all the problems. Eiffel may come the closest to getting it right, but even with Eiffel, any discussion of MI requires a long and detailed understanding of repeated inheritance and other entertaining issues. With C++, MI is probably a disaster waiting to happen. Why would anyone want MI. MI is most useful if you have a need for polymorphic dispatching types. Grady Booch suggests that when you need MI, you really need it. The frequency with which one needs MI, contrasted with the risks associated with it should make one pause before deciding that it should be included in a language design where software safety is an issue. Tucker go this one right. Richard Riehle