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.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: fac41,9a0ff0bffdf63657 X-Google-Attributes: gidfac41,public X-Google-Thread: f43e6,9a0ff0bffdf63657 X-Google-Attributes: gidf43e6,public X-Google-Thread: 1108a1,9a0ff0bffdf63657 X-Google-Attributes: gid1108a1,public X-Google-Thread: 103376,4b06f8f15f01a568 X-Google-Attributes: gid103376,public From: James Weirich Subject: Re: Module size (was Re: Software landmines) Date: 1998/09/08 Message-ID: #1/1 X-Deja-AN: 389027407 Distribution: world Sender: gcweiric@sgipd497 References: <6snlos$bh6$1@hirame.wwa.com> <35F0BC05.61919244@s054.aone.net.au> <6srhl8$spv$1@hirame.wwa.com> <35F1B435.403AE1AC@s054.aone.net.au> Followup-To: comp.lang.eiffel,comp.object Organization: Structural Dynamics Research Corporation Newsgroups: comp.lang.eiffel,comp.object,comp.software-eng,comp.lang.ada Date: 1998-09-08T00:00:00+00:00 List-Id: >>> class Shape >>> { >>> public: >>> virtual void Draw() = 0; // Draw shape on screen. >>> } >>> >>> class Pump >>> { >>> public: >>> virtual void Draw() = 0; // draw water from the pump. >>> }; >>> >>> Here are two classes that appear to have the same interface. >>>>> "Loryn" == Loryn Jenkins writes: Loryn> But they don't have the same interface. It is just that Loryn> your formalism doesn't have the power to describe the Loryn> semantics. Were this written in Eiffel, you would find the Loryn> postconditions and invariant, and possibly the Loryn> preconditions, would differ. Loryn> Loryn> Thus the interfaces are quite different. >>>>> "Patrick" == Patrick Doyle writes: Patrick> And yet, if these two classes were both inherited into a Patrick> third class, would these two features no be merged into Patrick> one? It seems that, at some level, even Eiffel regards Patrick> these two interface points as being equivalent. I'm relatively new to Eiffel, but my understanding was that if the same feature was was repeated in the inheritance tree AND it had the same name, then the repeated copies would be merged into a single feature. Pump's version of `draw' and Shape's version of draw are two different features that accidently have the same name. They will *not* be merged (by default) in a child class that inherited from both (they would have to be renamed in that child class in order for them to be used however). I am assuming that Pump and Shape don't have a common ancestor that defines `draw'. If they do, then the two version of draw will indeed be merged. -- -- Jim Weirich jweirich@one.net http://w3.one.net/~jweirich --------------------------------------------------------------------- -- "A distributed system is one in which I cannot get something done -- because a machine I've never heard of is down." --Leslie Lamport