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,c52c30d32b866eae X-Google-Attributes: gidfac41,public X-Google-Thread: 103376,2ea02452876a15e1 X-Google-Attributes: gid103376,public X-Google-Thread: 1108a1,c52c30d32b866eae X-Google-Attributes: gid1108a1,public From: jhd@herold.franken.de (Joachim Durchholz) Subject: Re: Real OO Date: 1996/04/09 Message-ID: <66WRx8xF3RB@herold.franken.de>#1/1 X-Deja-AN: 147479810 references: <4j9p3a$uo5@watnews1.watson.ibm.com> newsgroups: comp.lang.eiffel,comp.lang.ada,comp.object Date: 1996-04-09T00:00:00+00:00 List-Id: bobduff@world.std.com wrote 08.04.96 on Re: Real OO: > In Eiffel, there's something called "system validity check" or "system > goodness check" or some such thing (I can't remember what it's called). It is "system validity". It is a check wether a call to a routine with a redefined parameter can result in an object being mistaken for a descendant one. Such systems (programs) are not system- valid. The notion "system validity" is problematic in itself, because it can make sets of modules invalid just by combining them. Bertrand Meyer has proposed a different rule that is a bit more restrictive than the current definition of system validity, but which can be checked on a by-class level. Details are on http://www.eiffel.com, in a paper called "Beware of polymorphic catcalls". Anyway, I'm not so sure something like congruency can be naturally done in Eiffel. Eiffel deliberately lacks mechanisms for polymorphism in routine parameters (apart from the usual polymorphism in the implicit Current or this or self or however- your-language-names-it parameter). My OOA/OOD "bible" says this can always be achieved by something like muli-polymorphic(parm) begin parm.function() end but I don't think this applies to congruency or other symmetric polymorphic functions. I can't comment on this without some serious thinking though (and I've been trying to avoid that for the past holidays ). -Joachim -- Im speaking for myself here.