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-Thread: 103376,20144c9b38aef82d X-Google-Attributes: gid103376,public X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news1.google.com!atl-c05.usenetserver.com!news.usenetserver.com!cycny01.gnilink.net!cyclone1.gnilink.net!gnilink.net!peer01.cox.net!cox.net!newsfeed.stueberl.de!news.bawue.net!news.belwue.de!newsfeed.arcor.de!news.arcor.de!not-for-mail From: "Dmitry A. Kazakov" Subject: Re: About 0Y interfaces Newsgroups: comp.lang.ada User-Agent: 40tude_Dialog/2.0.14.1 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Reply-To: mailbox@dmitry-kazakov.de Organization: cbb software GmbH References: <4354EF40.9010906@mailinator.com> <435507E0.7020401@mailinator.com> Date: Tue, 18 Oct 2005 18:54:46 +0200 Message-ID: <180gerbi90omf.pylfyvfq3l09.dlg@40tude.net> NNTP-Posting-Date: 18 Oct 2005 18:54:41 MEST NNTP-Posting-Host: 3a2e71e6.newsread4.arcor-online.net X-Trace: DXC=cYoRDXP=N0CRG:gi]CKmZG:ejgIfPPldDjW\KbG]kaMH;F:^k\0:_XEAe; On Tue, 18 Oct 2005 16:34:08 +0200, Alex R. Mosteo wrote: > Dmitry A. Kazakov wrote: >> On Tue, 18 Oct 2005 14:49:04 +0200, Alex R. Mosteo wrote: >> >>>I hope someone can clarify some aspects of interfaces to me. I've read >>>the description in several places but there are some things I'm not sure >>>about. >>> >>>Firstly, interfaces are purely abstract, right? There's no way to >>>provide a default/partial implementation except creating an object type >>>which implements that interface. >>> >>>Secondly, we can create an object type which implements two or more >>>interfaces. But I guess there's no multiple inheritance from classes, so >>>you couldn't use two implementations of two different interfaces >>>directly when creating a new type. Is this right? You'd need to use, for >>>example, member objects and use proxy calls. >> >> I think the answer depends on what is meant under "implementation": > > I was refering to implementation of the primitive operations. > >> 1. Implementation of the values >> (data implementation) > > I'm not sure what this means. I'd say that you're not refering to data > initialization, since one can't provide record definition for an interface? Yes >> 2. Implementation of the primitive operations >> (type interface implementation) > > This is what I had in mind. Let's say for example that you want a > primitive operation to always make a dispatching call on another > operation. You can't model this in the interface, right? Right. This is not how it works in Ada independently on interface/concrete type issue. From a primitive operation you call another operation *consistent* to the view (contract) of the caller. This view is fixed, and already at the compile time you know the target. In other words: implementations of a primitive operation are [by default] defined in terms of their types. If you wanted to have an operation defined in terms of the class, that should be a class-wide operation. >> 3. Implementation of class-wide operations >> (class interface implementation) > > I don't see any issue here. Just provide the subprograms you consider > necessary taking classwide objects? These can be implemented in terms of abstract primitive operations. I presume it is allowed. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de