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,b7bb302ee9d32439 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2003-10-22 10:52:44 PST Path: archiver1.google.com!news2.google.com!news.maxwell.syr.edu!eusc.inter.net!news.eusc.inter.net!boavista.snafu.de!news From: Michael Erdmann Newsgroups: comp.lang.ada Subject: Re: Q: Refactorizing code because Inheritance and Interfaces Date: Tue, 21 Oct 2003 21:58:04 +0200 Organization: gnade.sourceforge.net Message-ID: References: <8lc761-u81.ln1@boavista.snafu.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7Bit X-Trace: news.eusc.inter.net 1066845164 7806 213.73.70.72 (22 Oct 2003 17:52:44 GMT) X-Complaints-To: abuse@eusc.inter.net User-Agent: KNode/0.7.1 Xref: archiver1.google.com comp.lang.ada:1445 Date: 2003-10-21T21:58:04+02:00 List-Id: Stephen Leake wrote: > Michael Erdmann writes: > >> In order to line up the implemenation of the XML_Reader with the >> Abstract_Reader interface i need to rewrite the complete XML_Reader. >> Is there any way to avoid such situations? > > In general, no. Refactoring is hard work. That's why it's worth doing :). Well the code i got a result is not realy nice. The result is now: 1. I had to move the type declaration of the XML Reader into the package body. 2. I needed to define my new type as an implementation of the interface is wanted to introdcue. it looks now like this: package ... is type Object is new XX.Interface.Object with private; private type Object_Data_Type; type Object is new XX.Interface.Object with record Data : Object_Data_Access := Initialize; end record; package package body is type XML_Reader_Type is new SAX ...... with.. procedure Element_Begin( S : in XML_Reader ....) type Object_Type is record .... Reader : XML_Reader_Type ; end record; end ..; This was a lot more refactorizing then i expected! I am now afraid that i have to spend the effort again, again ...... > >> In java i would use constructs as implements Sax..,Abstract_Reader. > > Ada 200Y will have interface inheritance similar to Java's. But you > still need to rewrite the implementation, so I don't see that as > saving much work. > > You can get something similar to interface inheritance in Ada 95 using > generic mixins. It depends on the details of what you are doing > exactly what approach to take. >