From 290ebc704e185b54b400d447d05781129995e5bb Mon Sep 17 00:00:00 2001 From: halw Date: Tue, 22 Sep 2009 17:12:02 +0000 Subject: [PATCH] Author:halw Date:2009-09-22T17:12:02.000000Z git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@303 abb3cda0-5349-4a8f-a601-0c33ac3a8c38 --- .../method/_images/Catcall_warning.png | Bin 0 -> 53476 bytes .../method/_images/Catcall_warning.png.data | 3 + .../eiffel-tutorial-et/et-inheritance.wiki | 58 +++++++++++++++++- 3 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 documentation/current/method/_images/Catcall_warning.png create mode 100644 documentation/current/method/_images/Catcall_warning.png.data diff --git a/documentation/current/method/_images/Catcall_warning.png b/documentation/current/method/_images/Catcall_warning.png new file mode 100644 index 0000000000000000000000000000000000000000..4dd3ed4de0ea0f9558d024edc82ff19f5d86e13c GIT binary patch literal 53476 zcmXtf1z43$*Y%CkAShDO4E-+ERUr-+Z zqHJUA=we`R1nJm5JYJ6W@8M<+hL#54QhTVTwK5V6BR>wS8Q5E!S(`wugd0I%4C#OO zJJ}l=L1z#CJO6jtI~yx2BWp+Kd?2m`j3GW=refx3X$1Y+AESaGGDu2PSj9DEcfmy+ zyZZ(@baAmMS!x@7vDM^&-L~k#6wDze#}UjjsGezxl_ef7Raka`C8o0b6$eKwJ5(|T zL!yq4ySCn=MM!lRjhyA`O_C>DI@SBM)ux%5nS~CI#MIO_NccIt@V5urtkG$2I9$l{ z0k(LmJ%eV3=||SHgz_{vc7b%ZJ!6WCqwgVSgRJKP!i9cr_C=%(`^+$aTd!m?d!Hs^mcv}O1&)ogn-YR0p&@m&ZZ)96hG(HPO#EzqZ$o4ID%~j7F_9$v<`fm+Aw(w^%=5CQXiZ97`{snjttqw(8Cn83GTz@u_U4JP2veHv$rZ=;2d43dP*9&H z4)mNmE{<-_;Z`>tAJ5G9Zf|$HhYX1h&Dvk-q$ch4;}oxk^9u?Lb(gv2pTh@rtk`mE zGsX`Z8{#9rk5v4M;iP@;HasPP0N0uT*NlZ`9V&itepy<+og?2Cp^Z_-z(_aJKf46G zPCYWn{t*8DfR(rMouerdp2X46KK-2ws`iGZy2(XT#P{Qbb`Dr@Cd);CBJ_X7 zW7$3%ZDQ5CS{kfsW9Eb%+FHcmCZ08_pP|*%zgb?$;P!+B1)8YJU&TYkmLp(N3(gk< zm%rACbRN$fJ>jMg$)pLXu3jsX63OCVwwaN1eOh0qSO38nJn|cSXsg+*X@=$j^1pM^ z()T;~<<9o@_RiyH-QLa6&`?GuR6aM0I^@-`B=pvHE#pS)8RWZ?z}}j6^?vl1q6PXz zD1j~dYpKRxvKlnXbv(gH&KI>YIu0eJ5uaAXjHHdZ=$}NQJAX%-U(AG!z6`vw zU=P%LznQ%h({yHTs_`MKTnY_3Lv=d9kNIO)FH*PPK27_ z|2wWOo>xgtSCO(IWZ0-ymX^DFd&ERUmX?-ZME;YCj>HO(P7IN&Zl3b}w}B5o8Si;d zNC#gcAR!^0h^~z4cZrcYRYe`n<)i+S>;p$oWSZO1ZqZNMih3hl^*a7Io5F3@%5!;1Wiw;t#+1mo1NdV#2w3{3b%+myGs|yBW%1vI>G)N zER-lAY-two^2@Y{-|83Df-Wf~vdRo<|F#StqVZ*lN%3!I6x6H;EV5+SLZ~5cxaI#= z5}0!RQmkRlqR6)}x7yNuEtAGy zmkL|sIlN3R%=blM;htI2m=KD2n<+a2LJFtDKgmsx)CdMZ>hdG8~hCVv0YTJ}_Hh@AZ>&2-%L*NQU zuYq(lh1r)))N)Cz*=P3L{IilzeRXXhbQ4WkSY=es+4s+#?n>qP*Sz>w^71Pi!a4Fy zizBKEH(_KuJpSCFV*GrPGe-1tjww+$O<(H@GF>xq zRuQ#rUlwxGukw6`=QBc%n9r^pIntRj%#z4#b139s6u~g@)f0FP3XDBO6u*r0r0!m1 z@f;{L;3*^r%QlkoY@1?DMDC8~;R|9D_G`5z$~E(MlX_y}H=ad?See%4^YS;;kwzt1 z%1qR8I*k1BvPB;o;ZfiD!(SEp8sJB)(&L6|V1$q%DF1xY)o;vB{{-j0Kc6oVuK`+fzbPUa1meytP=I|SxMn?{w z_1P*a;UZPJM@)xVR9!p!GcZ`mCca&U@A^J&aprDisGO$Fl3P~R*`7&Bb>T(XvvSBB zHex=3Fa8`p@tf_fYr7q8TNkoO!3R7X9F79bQ+KPrvmJWeWU{XXYD|XsT`PyD?oGM{ z>$a}&ZI<^G)6>6b85lSaXqt3yRHT#@a@`hr^8f8V=^H))1jA-Qspvstwonn4ttYUy zLkdNGcWiddeRDdryS4LYp9OFPy8XgepGGp0M~?ny8Bxq!M7hdaA^Jt+$9$ukjGWwH zc7J^Ff-AOmjdw+%xT>;pmI~*SKo()5?r`zfaxnY|L$EWA;lV_*0;u?bhWKgm7oo|7 zyR!&pX3M*lzoOoJ#FvM$`@ZP5gI3=QJy66FoZM?* z*9;#uoj>eXh4gbW+HF%boCv$^PBO%ctgWp%5#Ty(i7Y;hVT%epvXGt@JXmUL;aRJG z#moRJY{WdwPvMiIa)K}|?bTgi%sX+|sK0dMPhv~rT4L{sJw9u?l5wu_zh|0$`ihlN zh@SJ)QFu&LYE$DZ!pviE-p$x@ViFQQEH^TGq)eaRx?anE6m>Ptl~=4f>+|xsaCdj} zI&HhDXi0hbf&_OVFQ!nw%w}nE`P(<9mdo!Q>s!yRRf|lzsPRn&k_RVD3zD_=>+Aj6 zAogd%!hx&Zk*5b!u{mzwAW(GckH{slkG3tAHD=nMY!rznQA$NfwldKUT%4bOs?cz& zyP$ugI;o14HCnrSgQJm{7(*$yane(uR-#l1Zo6;KF0hQ|FgyMv81z9&lh@_`30hfz z0)=L+esdJ3cNLkc&4>j@Qk8|zz1!gRpUn0;ht10?_a7|(6Plue`aq^wXoANxp!JC@ ziT&%Wsi@o$hWO_|EutvIUQzqWDMK7`pX?h41jaeYerD&ZIJo<(&i%>~p2~EfREP9O zc4+)Rzq%@!+Cuh2fOu0GS+@K}B_+hgt1C@4HOFn5d7P%w?$XlIe*7>v@Hre^6yUR2 zkY4av*0-`s&CNBjmF!vm@tUhpZ)ax}0djA`NF%ThHo(`%7cMnTs`qqriZ3=#LM+0q z)YPwNn>ZWl2%2hYLVN;=y@Hsv2D+JR}phaC>@g&VU^NAEDq2Zo^*>X47zQ9fMrKKv^RM?`s$!$RiKD8!2*1>FD z(GTI~%N?6!6}c8mb&2RTi<0*X4KAd~a{CJvFQG8;*G8t^ic{E+X6>E;ST&Y(X}E5? zcJ!Dxw;PjBLn)piHbpI)n*Czv9hl;^{T-K4XcA0cCJ5suLhD23O^xd$XF-SUIDHo$ z{usquB>uo{YGib`zB{}*m}4XJMm{Z){~G@TuoHZYTvZu9zZ4^1EnD3yb9c z-US}I-Nr8YxNPj!C6W$*-1fX?wngu@P3a^j#npQr5`E=4V(QzEfc~@yHzoClc=d}8 zYV?k0hysBtXJ^MRbBAQ{g#x?R4Y*(ahWAWUqUmOSo%~4=Q9zC`f`sos>|jKUznja; ztsAyM&q)8nLXnD=E9b!$djTIhxDrhfM5c}(SSHEY1_*R$C%GLF74qb7loAX=-qVSr zn3(9H3U!Jz6^Tc$!0)yroRFjEH0c#)>%0M1x+vTL65DnqLG+rwDn_h!kht_tQ3rzB z>i6_>iXqbHOGT}Or%s*{e8W(at_3?mk)>sd&VtWOrBtyc#Og45$5C&y-&B?w{>HTU&#hWfg1(8;d>)A3pprQ#9i+k6tsaG7rxQ==}H! z-CZtJy1F-LOLTE^*3G<(<|;2wY{=U^J*{4$ zUg+EU*201gLVkv(T);6jB=2>7YT(B%*NY?lLxI~>!N=J5jU4Q|u%4P4Q~9^&_#bqX zEoffI(7z$Dk~yv#7J2tM=X0ihKW+x~;W=W+6D_S;@1{4*`qT~{?Tc-3OwU6^$$$7B z{MnT)RUfz%eeiv&rA65Mc6nw0zbMK1g$0_BKWJZ?+|N)^P|iWNd=8s=fa(iuzK&@)rr0I7o_499HUWNtq)b&B4&-cJF9 zn_D4c3`qrc=+p$}2oZ9ei?8GMe%pmn@C=NHQ1o)jwM&-!2=&Oe_jo%iWLf_=LsXQr zet*}9F+@UXl->MFBmFTja;c?Ck8~;^NTIP+y-k1(tw@02X8#LMb(G3eU&qQE=6wvLI)j zAG77C*`&L<^J@A(W} zNAVwn5^H+luUaJ)vBeY-{Xh3&CA1{^oVb4S(%}f|=(NlHkw?&hf)P|O@$1ZeVKoE2 z_S9Q3DsE$85NyFr;f^fvExK-wTBLJUlH;ZZ1Na#Jt(p>lqk|^2{uy>FRT_(87gv5=5ZjNFqaQysDqAY9IyXO-slu7|zTT95EH#rHE~C1-SX>p@>?AGC zN=>WqLe(tcr?3A>vyOSo&&=0vg~fR2&E$dFp;|>vMeM{RTx)iJuUd2o+}rpBQ$D^q zWs@P4OFuh9@f2RK;>`Sz?$vO7PS+!@{zXr(f{_Rmz!!zO2nzPn1WM!>D zLk)G_pXD+>{rdX^&+IiZ0Tz8cow>PrC9e*WL^qdSx}~5n$D;uz8^*%Mt#Cd1NU5eT zPRm@u-u#y&K=quIpFU=y_mk5N1`!rYfMv9R`#5uJ>3kznnckqA$#t@);8I_o`Lb`b z>=jE^V7E6%Ze3knbMp@eSt>3yHHaI_=N6_x+U3nbb#yBRmDbdR-kHlU`g=C%K44)! z`=^&;2~nsU!G1Jqt|-AG28v}t4TR7)in{&H*d1@(tKM!>{O~TY=HJ9Ti2BuUKWSNr zRWngDFPE58{UZ(%37BS<6D5Zte4DG0skO;zW;P}_la*6&%duryA6s-$p@jzL>WT^h zyX`OqG6?b!TAD72KfY>Id>xo%LxShSf99Oz-;^2|skVQI)QKqr>F*{)(WyPi!n)w@ zZrIs-^ww7X7qtl7J^fy5Xp%T3&c@^zCNfN-lRfqvdVYxDDHs_Hk9ZB|TNR5Fu}aM6 ztRG|fL*a0C?I>JMjv^G8q|5!e0O)X`2CYP|Wu`^%;NHuFExG0Bn&Jsna}t*pJ+7O3 zJz=I zCO3NRrB$(dVQ(0If82P`)g=L7tCBXn3I_#sAVP!|7L+}IP7?4wmi;~8d(<`fD^l3T zljs&H>{Iu5?#A-&nwmE_Rlg?On*;@3Q@wtD=O&$F^vT5d(`_DS4MR(5cw+qjZi6+a zuuXY}JvsSCanb{#diap6yN%O)afuG!Z1aHe|IRC`Y!W*P#EcG1ZT~v3?{su@e0+R_ zgoJ|W55FV~PBsRySaKKKNunlHrf2vPy$5<}1nudsU>YUJmqp$1m9%C#;UC^`5M=8X zxGx%t{5u>ahZz}3ZU#w-in*|@f2?Q1TnhGG^zQo1p|Zj?jX);kM0>$2acX8pEK%dE zM2^H~rM<(KZ20qC$DL>D9KBg|TJzEUU4XE#5F&ycYa~~JIR}G}rLM_8q_|Hf!6ssE zGLG|L#z&WpYaLj>-9%!`$=ytEvGrK{x=&t~Arrq`S(!;Xl^zyxOw36=Kbfc#LVs(C%TsRi#NFhi)aLcMzolWLl256%TNN*0otX*1 zV_ba2PNqqQz3l7cSWd!0YrKeOs6kP7x*5|gzu;M~87>|b@8Z`#(R9Q3Rdf)OBxQ0d zDQ!Zv@uw`eSB`0)N8uXw33pUd*GySUsz0_TcQU_S1i#ZF|K(W?9TH|L^QYvwa<%Izt=&&;L!2KlTe9Zsk7DmEGUEtm*>W)jn)7UbE|U^k>g&8|nYB|#A^LdEJ; z`wto`i(YoUQ%bWmhxb7h>5HSO4X?DS_sv>1VseM5Qn;tQ2j`r3TVk(G`ROY{K>*|C zoYa6k-Ltw>tcX+S;k`2TcZW@{Id7S?^TC<|+5+>0si0M?=;-3xQG)x*6RG&sh!n}; zp2f@lA?Fa5+$Q1z?`Z`E1$2nP{ERA{;r1m%USZ*4!@*(2qClGM`Dx-$Aw{d?`~suU z7L6mdiF1DM3wXhn4+UInn|K1l5vs+Sdg`Z#C9_O^w}xJq_g`}T#aClqVb1+k9NBVw z7l_Vs_e&{nf3ayUf1rB7WUr|6%n6mwf+fO$TmBnG|6~&1M_c$_V=0Qb_i9=yjvpv^ zhd2FY5wTF%*@+nFl6SXePPU?d-ywZ!*O;isX2LnEsvLf7*=ym!gA#V!Mb)>ApK}?@;uHHVDsfwB{1U3I z<9&}WR9{`~y>s3Kk_tTGbgD&J)Z0xii=~y7uD3FFtOvpd56w*}seFxGt7t+(Ov(jA zsSU1N0tGUgzepDNk_FSrqe{!m-M5opVs^iA^>919;z#e6-F&ds_KT0dNvy!z7ywZk ziz%xQ99%6|*I)9t38EAdq7n_Sf7vXRwY)<@$}WEa$)^gYCpwjQ)Fc$^@GeO8%gQ#c zt?uy{pN@p|I*{YQ{}n4#_|!L%v^g~?$$53d3c`QrlXP*JdP(&X2UX0$ z0ZmM?#wHh-gU;b8kMW*1q5IQN@q((#(yw2Un;fWCfr4d;V=&ScNY>kmn)~qF;SH`xjGWrm_H#;&j=eE2ev%0 z=lJSQeH;gsSDOUjdoy)B(oI~IzYoK)@`=;>icQ8!)du{ z&n;~P8(q!i>lW1v5v#GzMMAoI3Z-{9d9Gh4mqb3e_hJe(xNMwUbw{MvdGReQE#Q+8irbspKoSnc64-pYXoBinYFr;W@6ULrMnx1Y@>DI&)yOdY3T8YXz;gz zh*vob4c%b`nF{QxDypQs_WZoGDTDvLPj6QEpz{(J>!-Oj2HLYHzBcj2)uqp;dd%PX zJ!R5sCc*yOy>1V3cMa#a1UNKa>Po6=Q_HJ+K;b=`pLdsfdwCQu)!v<_p8oy&H3M35 zBCM{ftG~Q*%S%dPV=aI8&L8U~6AHYaOnk}vME2^+N|8KEdb*O7>#pAuLJ#E657+Ip zBWpJApGtt!2oi-^S+61e`}TvbFoNy9^)ioxm9a5YlE~HljdG)%v}H0M4?ZoybRRkn zEByyu9-a%hWq?vFqc5tQ&H@534>obQN853G|F0H+kB^6Ux{jNVrJL35&oo+mbZ!%m z6a{dhciKDGdSkkcjnNfY$=eDfO-b% zYgXck*%ng?@O=FGSJDJyu!)JI65TMFr^~GlzNkqUaHqwkRUNcO*<}T}dAI>+aM0B? zI6h0(3}<9#FU`!A1F-ueG*UJ{_f7R34?@pGTQ+gx^=(g{=7=E zUz}XC8z&9&APoNgw~oACqN0BRVG$P(#KDQ}!3oi6@bPk*M=n!$JUTwRaYLx8s(Kyx zOuNEb=BPu7Bz|XWtJwkjJmsQ# zTw0^E3^2MBScr(1UBm(_+kbY~*2u7sm8};sP%vtp_b7upcTDmBx=UjGcDk_Td^1}J- z$=TTthf)VhOEXTS)V@4v%Y$uZk$13b%2`=0RPWvB5_7eS&^NnoZI=W^xu$B9#UEoU41C%cUIZ*BBmaq-j9#pnDjn!7mP zo{7D>Wpn5TF#6ps?k$Kicf3Fi_*kY+k1OQ1{Ua6$lf-hm^s}3Q!^S`^ns$APpy}J( zR_G#Bt)kje-~jLM7*AJ8M(u3dkooVoz5ajd*OFRh=0V-PHi?%b9u_Xn^<>2TL*l{s|P7+ArVug@$ko10$y> zK`3dC-Di<%-TDoVc`2dR?4m5f(r3mWH+Pbh)R&Yb zgTAY&q{%dnXR4lXTMZD;l-NWvXkF;mds>ZsVHs$N)n=5Szy=qnXlgQ+d5(WDv|_lr zt-wS_?AT8CE~~`8xptkIR_Ex!G5FC2CfnDQQ_#y*kZ%OFuG)e5iHJNQjr(3xS^2e- z9Jp_gt({%H-D?iM&HF(uvyMP?W{!-?Nk(olQ+jpotJ;6Ex6L)C7*o>(<1mPcet(S0$`XJiDdOVda0kR#QhfqM+}6!ePw<$N z2aSu9L_eCD{pW1w%p312#i-_9+wfHsDOo#=%w}rj`gR$WfU?rsM zee$joNyPeH*94?z(`0=+~V)6rQ_V4;2X^MgKLUzYQaxk8YV^6O}et~%) zd9aEB+C6kXGTH8`-3A2U1E?sd-?n+cinZkoDl|AbRn5aUfLwQX=M(-)2LEQIpePkC z_5@yXy?B=;J~1(i)3t1Nc`%u6Zg-1aV^->Elrj|?T8*ueJ;H8Vx2Gp8E#s}_#_szMO! z^duRcoJ52KA1njsR{Jc>&0mv?1YvBs?B8a0b>*yCa9Mn+f=0@+3|pE7B7Ub6@&5EF zNz>u7ni*to_P9tmdbwm=U!|>+N*Eh1D3}I!FL-ulpIt6Rjg9_l{@^?nog}h<^JM6a zuKQ)_KwFzU*>cbqcw8a+Cfk*Kb$WZJJ!DAaN9)jJ*TSHY{=;I7uE+a@%&pO;inl%K z>~@w1x(oIWCqRNV*4cJ-+7P~=e}q5~9|4ZEJZa0N95mCVkl|ADuoVjGq|PHqbWLB#d|D+7a!QQs<# zfdn{_|4iAR;~Ll68q{2cKMxe-jgF0dns1z8wwUi!Sip7a?kF9nz{+)B0c2mXB_`?Fi{~IN^LQq_^kE zZh+&+;;|^VjGD^I3`_I-%y<@XEhUtGbhGqr!4wm?!b{27YH(p2rqbbwcQxxgR)HAt3F`!dN)!zdYWW5eW@l< ztWH9R^U9c6p-3K0nT+SkxI}lME1bAkwLq)tbE1J^XTB4aJZ1Ay*QH=n!;T~G$-5l0 z>$TqBm6f|5b(pI3kyh5$ZfPgzRyyCOavICQ{A_I@2UR%+*=BEx&g1D^3s91=rH+e= z02T~hR-nLHoqrWX%0+;VxZ(8R-2@&%%v+l-o@KF9U3-KvhUObvUJod1XTJDdOp*xsyI;zu7x~5ml`k$6hu2fcEj(q@-Ek z<5uTCoV+(FR41`8H0-oY^AK9{ybanS7-hHe)&|DXi{l{Xuv8y5T4i&w_|B$T&;a;N z-ntC|dDR&i>f~i994Dz=Ih-V7IcD``Wo8{re31TD^c7e`k{-iGy-?G{UE>oEkA_IW zgvIf3OVpfP6RNb9+tYPU;wbIn`EsMkymo{WA+0k0xCd9`4-Vp4EJwHNr>B;XtI_;d zoPI+-C)AR>yup6DOYfO>zxF?XN3wAAe{$k;-ltNBKWQ5=uX?ZMBveB7--_is|IB9H z`-PelY~vQ?9M+9NV_l!qHm#b2pKLRS&3ASoJMH`slZbj-UaM{=wHHo! zMY11}6(}~Jadhz3cS|TwLI}`D0tx{`^h0XJf5hx0C-3TrZYq1D2!`mvKVd zlGf#w$QhCi9E2S3y(LnSLi?yTE8)L*y5G2&!2MBCRlT`#M+@-#6O?`Ly@>lUs--*YBO11{a1n+QJ?o3ozC}faA$nZ}vf|{6}6E%wxS+8Ob z55Iw&xz}dV6irgJB)$KWJ8q)th6cI{7)?y~-hzwk)V{x=IOf^K2^)y@4b2sidwJ; z2(WQ+e<@IRi1=goi3_G*EDQe_MYiO;$--RXwPkLut`?-EZ10|n(SOk_s0%S$nm**g zOu9$~&dxHKkWLS(Zf`hnamg_;YkxRS2!zI+6R>?WJTlf(zM+{&Mox7!nhX(ZM;Cl5nfC8;uvmCkpQ#i>~$@BAU( zOmsU5dB@%9A1)=u>BA9smsu{*)6c%cDu4FY@2_^nV7c;)3Oqc*HwH)v|FOW2{H;J>_&zb#4wsa{dIcrv2nw$K1t~%7YzqK z&O53}G)1X$=noMJ3Bb|%QY@bKZ;ZNI!Og)YTmn)saJm5+OBgjK5}bZ=|CK~ zJ}qc4OLQ$;A)IJl|2hCM%ATeN{i`tvL&6|T!o!sT9)mG`I=bMRnxL$#rlKM_Gcz$!S8A#9N`fNk z33_Z)IX?G?1ui_VySw0*n}XNN41Q$J2UkvAH_9g`p)cjrl3C3P{ryuH^}mLoTPWor z6Q%Rp?IMwSxosVvb(U2~gcIGKH>88)2aCzM#1lAD$j|@weY%`xjW-B#zU#PyUwEJ-E{gDccA2mBW zn|8wHe)$`yFNla3uz>9%+Xv(~Hr{JWr`3xs6VmG&;>LHnR{6hsL zVc!E0T6Qy(L9Bdt-aJ5hYrM_c_TVk2R3&X< zyvylY@7ds>)i@<~dry>}tLv#ma64(H0yP6e`i}b@Q&jJEnEt01^cEJq{nlt>X-jvW z_YH!rIg=m|+|+hhcoT?xZ1agA1B!f!fQE*qrKRQJ;Q`V(KzxkxH>S*nsfE!Q={yCW zd5Xjt3hoCT4lyPZDEcTL{&THG#yR`&KK{G9sC;5&Q7W&|#5%9eNsJa|&%uAl&dM;K zea9o$CmWqUhtm%_-WMlV2iMR;b=7psuXW_(pagMkmX2UeCN>6ajga4eHuEI2l|p_O zJ*2&ao1UH(c;9RC&gb>N%7@SnJmf*OcupgfaYNazLu$q4<4gYLWw-4&$dh`ykHrVV z-|z2eyENi0i-HS&hd~uh9Lus4!*B-6`xnYoaV=j2Q`& z`C+_5!9;;-k$K7QHvezQXsoYp4?ArB7#WpTG`;cEzp|H<3y7h5@KgOad!Y}OyEZx1 z9cfRj7*WsSE6U1H(9l3&pRQmuO9Fgc_GX=?igj>taY4dNtIGU?v9a+|vlkKuQLX!# zd6{~n{kk+{YHqIC;JkOXGnJKWhhNR zD;MT}nLA|{Ss)!ZFaG?nHJmXUx7fT&Y9?bfXb}gi#!R*F5Uyslo z@wtI-ARSXf;}G_~b+xVBh-o?HUn*2c7?gN}djA!>IDO3*AsX1I9i@0I;y-@=Tsz%@ z<-SiZ{`HHRk#T>rC^;rZSygrN=Ab40`}eh-o#b!dKqb@%1%+?1u^fh7=*9(=mF#|G zSXfxsXFF=Ds?O)TGhe=ZQPcBs8cq`cYmf#W?*@);ss87hni>__R4$vv1QtUQBNR~o z0VfQFB0ywOZ^aO7>&Rl;(*&5U2*QZbhK6j{Q7I@|yGc7bg1*H(Ride_Z~xQzf3uef zGMN6;z2u%#MIsqZAr;;Ek)=SQ`723)d@3)4_N6HSK-5j^g?b#&IU^zA;qG3o*~-hy zJKNEbHL>ye^JiK45$T8fJ0{&mWT+$X+3LyF-Oa_r;2aSKKDs_Ln39td5G^t9TS?@f zxi!T-y(qhT26LRQ7dq6meqX*kOpX3igO)ZRLAljeiTm(=WWZ;xn6czc?gd2{t}lW` zoSo0R!U^FrTn-kC7LN}PxjoKz!2l0Ygy?Z{9ySp%@r3yq7%*a;`K6dOKR?fDJr8nS zBJbWg@dD~j=-}W0mtnKi{OZ*!cwu&S_OGJAlW)Kv2F*&2d#JIorOphtbqcx|9YODm zDJiIcoFHgxYh(nHmoK$@&CVe#3h%g!Tw^V)I*G>p-@l@WF$T@bp4&F0jU0cs%+`4? zQ$xjH=ZSId?nBW;7`g9)Fo42>4=6!;@#2NNygU&`Hw+eYrGytOiXRB{ba-wq8HF_& z;K|(F9E^RT%3>-bBg5C%7sLWUJw}>{yjB4^jff_4VlsxJ!8K|Iw7rt$obiXY4|Ai-h z44i~9L95)!gSf$>10f3M=jW4?lOjL9QAn|`VErpR*rfOF>bc9^)D{VT^1p$~q`1+_ z5&z!MMAjl`lImd`Sz2(&z_2aQYesUOQ_DXN$i_GJH{BB_h!%LP)aZzrP(TOop zy*LV)|JoxS6mzuO*xlIJhOyWt#G;!subk@a>Z<11i#9_X`{2WP-ekVr3FGR0Q+ge{b<(U%34 zhK6P!w6CvkY-~)mZFA<(C6(Xpc)HB6JA$}>Xoz!(mX1y)TdAr}%G=x9%j>R!w$W(^ z6sHc?T{!;)K(W3Kx`ben55uUiu`zan!HPvIVBiJ@ewtlR7HMr9WoD8m%1(L@^6>D; z$;l17PXUx}_PQBL<#TT$fmCQeI6HGf-{T)YY(@!L77zHqL;`y?XVVKC*cliYurxEf z%Hp^+1N;#+AQJ#1$fKlwZ1FI9c!(zfHB1Nk1Uaqrr>zvI?oDZ#zd&IHy+%1abn1Q= zDRf`!edoTBoQzWaK2Jq(lhNG5VyZ|hJ~ee=e%?~ILOR?0X zP~OPMXxLpXYqU_i?l_3l8`u%(t>Sm->@ibzi^)QkH;e;`HV=Kk0#H&=R4zs5CQj9v z!E(U!gfu(St9>5s|NQyGW->Hi=a35)cjM-rhRF|V14B&+vcSr|ze>tUc!I|2&oL3t275>m^}egiPy}SN+uhdL{(|Uob zv>UUe#ZrTJ;1tzZFKmERDR51yH23!Ro88a04_Y3YfvqJYTi%_i;Euo~v_OC@27nu1RplfvAF*|7Q8k;$W@0^89p1fqb#wEy6>MxwObm#g zH#%$%y^)DqTU(RN9z%IaiH(g7jt-EE;o0^C*i!pCegOfm{rS4h;dCZ?`dhF>spzoa zU^rjpTzL*IE+)-NNeV0t4Gn-a#TpgjKNMWu+=}#Cytl@(!AVrgV;2rLFb#DqwlDW#SiGe1z!f=@}WV?{BZ-8Ff%GG4Vn>p>Of= zTu$368ufoC+Ab^L~14eLk(8@snSbsdzQz*~?#Onu* zL08=8$JmK0KZ#T{Fcf=+*uOv8DJ#Q1KSk<_Bz+&f7WG;}g%(Hnxs#KVQr_uelSi(6 zDlH@9{hv@KA|fJ?Rl8e_6e8hwJse16Lk$qgRw~k{=vrFxxjbA!^#6~V`WM(9(5jIH zW&>Ey+r45Ku$?%46dJ;m;jatDz#l{Pvvvr<>Pyw$Z9nH zOHoWr4D22}l&3N~HWrFD~0hcTgz;q(V^suO2Rjr!xhe1Wgi_68() zc2+Y_1r_3R-o*z$gf@+K%dMXkv&7H#=C}j}L3~8DU;;oUom%miz`!I@WLQ=y*u&#v z`wbDHE->WMC4#maAXn2f70`BY%8x`f{fC2!+E}fm2m?$MBg@Awn zUT9%$U7VLU1B}^s8s)~uMqCEX(>}VAo=+fnQ4eV1U=l}vuLL3?|9 z!8?JP9epENJmzy0g>h^zSG^c-P{h_e{AFKq7Ag1A_t(CGHZ>i7IJ42ECjRv+eR* z35jlSBx>>*=;;dq1c26_?eRQ`ND`|GHytp404+*NO5lhmNPhSbD@wivY?-%rvs(uc z*ug@>MPbJ-EH|H(P+MWMpInwg0S4u<`Mqu&pjYRM;0gI$rbgCcQds zU9qiqIlzFNot=T;CwI=sqfCJ_vXOiNsOu@<|Ml%13P{oiwmi2r0AG& z!ZL7Q0VcavN6w=EUoC*ED>?~(!qt&Krr@KKC@I;~8H#5!UmFF;H9r0&|Cy`1J0&IM z{q4yx@Ss$vv8PJ(xV)ySvznU)Sy)C#N2AETf*G**Y_m*Tg59^3mX=mlR{r$qXK1Jl z_%1Jxak8JMoLld-<9vH*7a*djsAw>o4{+=1>I%#oXohU@^6swZ=1}T0LQc>H9`=e& zoEkd^80VZE*1Km#DS}@0#l;cbtEoH=fm<^1k`%PDv^+dB{ECnGu{}}X#;+?X3LoFU zP-@^mYD&ay3zCa9K<30CvaO&%7T*u%k(re>xHCL7WGo)$?&|vK(z+<2=m?Zol{E^CSm#JIQ;=HE`03Vogp9>W>yiR@q zO7Vb20W%*G5&}#va~mLSU<eq5-vd;R)#hvSPkSSZPZx-H&b042f7fZ76@lLQ5@)~^$jQk8_qn^hE!M6B7bxlK0(ZuhsGG}j8l;<;9siE_`a&Cs(!fG% zY9_fA0G0z>Ib|g!&_mw&@d)@p;DJ_FRwdeXtd`Tvpn&eoX!{e^Z(v)2&ZP1>Z5P!n zek@iI76ujxmN8|Lr?rt^4v~5$9BmUSp?9ICRoBJQpn52T($ne$G)ex8}5VwGU00_*U93KOx zk|rcSKOacP+}fIvh6V*08Q4*Fg7DbbSYTOZW;DP?=i~rG3eGv;vfy~UPvMU0UPXY1 zPdIlvSQNm+!^`=kqJj+pWk7|0qNX+ltp3f#0Ur+!;1nzY$w^7Hw6vh+sjt7Ejg=LM z1?)5!1Y*Q`^-4oWXORCD7BR8c(I4QEcY}H;&^V48y8ibsG6aYOAk6?sq9iF~0{}4v z+Ni6m3m71v)&SF^qM``G#VKPnG&KQKgETCw99RfY5x}qkB{cGbKqw+xg?4Xu7j&%y zj519k0Rjb#7B)RSU8KcTrRlZOj(`sG-mjt)6K8;G1JepxDmghh#l^%%*^8!jQd3ib zoah-CfX7V?<_qeuU%ZG)Ncg+I&luki_H%IfA)Juw($gDo5t>*$aa70rM01j2~2*CNWXI4z-x&deqh z=j5a$E^E8cWYE*IxHvh`wo>adb_#F?L`^}#Wgnl-KuU(>M~{vkIbtJy#=!w%ENr!h zKHUf0KBlg2bMYcL!uZ%&WsjLUAWwOD6k9*>Jm3SqRJtA5$WK;u3-fHPug@qfY-?>5 z6BcfA-Aph%DiM#Ac}QMfU0q$O3Obb4TNlI$F2d^4bcbCTPJuN%Cm%o7C$k}i`Eq5S zCTWnmFBEhn9X6lpe~-w>NG&1jvVKWH{pAy8h|gPnRUI#LqpBIc))tAE%s-j8K5UlA zTxu=((!u&}Vp73D2OYk1))BFNG;G=;`$MY5LN1%gybGAmHrRIf@m{wxmR4ujQrIbb zV{N!Uwofj7PR%gEusJUWp+Qw+V%VSpEq(Gh<+Hy0iZUO8;4bL>+9$#S%*=QOZSoyc?8!RhIeldAKSjO>=-kVhAf4d{MFCx%?!N6iuH#s z4{D;9fbG4LCv|j`yq9Nu^>gFF`4n2zZqj|1+w5@s{A`>d*wp6)#=QWldwv;m``rWT z!(jzwkd2uYk(#LGewUCqe|Ue`oELwBzGo}i5CZ}NfUR?$JmKTwN=!`Dj+9ha@ce7z z>iR4+6z_8d=>Rc~m4S-@^aSXFY8D|HB@GC^$dC}^KLnFSU}NG|xjFv}2Mkpf&fw+C zzk!iJSOQrgVw}kOXyLmdyLT_3Q0Qw*o@iT8g+Qo14d5 zV#UPSej}@5>w{}Ur5PC(_OZ9OxTt8~-o3|>Ti)6{e%jLBeo{+|L&@VB7&zc(A?8ph zX@?KLM$MjgQ4L`l#b0W2vX1hAC(;%W@YyqGM#sid54j^ShPIA!ad05~fv&B}&c4$+ z`f+?dMp&0^$BuA{Mai4F^W{q*8u-=!(@3bW0x zuLIFFQeS_Bn>z{hC;$nL_~O);HOKQ;i95^5;n#or=CkFUOqz5<;oz6 z%$qkW5%X(mHnD2C{_8p?Pa**qWo2~_4z_)tJ(VnP<>Zu_kgzwV8KrpR*xYXBbC;}1LNX)fFt=-yx&=u($di}@G7cDPTfmPy!pGQ2sIr5&#&?E(VssZE?ojbh&Yv_ z3Z@SmkQj>Gr}+pdtO=<;t9t`qOC30X+W4%gsp-v|t1}}FAVDX8{7}#AygK;uI!e!o zhzKx2h|pAH^08XWPex?_x#$Pz#`R1w7zWbhUqXPXHhDHxRV8Hg$L- zHGDAFuLC(*Tc9R~3eLsF^}vM#7a%*^?i!rvFP1(( zzg$*UMkE_R5kGkF;E8z^63(65w^`ZQAu|~1>UJP9iHZHL^Cttq0C7R_b$qq*h)+sj2Kf zW#;Lr5cnF}fTpeO?nkFyKvmhkJrBVP;l%9{U?4UUK#Jk>+gR*>sbd2Wuy*+y4OSWt zFRwMw9c`(qTR5hW1=%IfKfc42EM-;i<*iGkLHW65ACSs^a>YKypdZAh%1XuHh7}s+ zg=?tGQ97freF4$l@uNl64M&s?V8|k^NgM9pXO7lFb$8ssA=TvX+#DGrH~}W6PAi=T z6H#&TD-I5dH|KLRqDj?&sZCA$k{BMJQb(dOQCEM1cW99yt*pF(^(NT8Pv&G|D!tM# zEtm8N`JRahzn;sXTM4rvwiv}V#DtKL5c(KNJuGq*zbdc?Vhalsla+(RYA`#MCC(0B z1EdwnH59pph2jogDC+@Qk*X2rH|17{AJq4Bn0|7eS~>z%X{o+oG>9NXA7mSZq-15U z9`N`bV;x9)h;m(v07I+G%Qkj)Q2_iVCh=VFI=Z?ZG>j0^e0GEDKfOVLxKBaP!@nTH2^!nLssQt-q+%9P&dH>55Cx#{W>&m4 z+*T2~20njY_O7{eM-#8SFh9?FRATX0XG2fV4RAy#0`;!Q$jPB@KLe%#c?GyDFXtF` zWZl?YJf7xa2Oj}MzPE}mP#6-1s`s*#>``V}?aXh+Z7Ir!AXq`Y0@OxQk=?(4WNrm~ zK-cjVZ?Hv6h?gi2&#R=WUi$bL1?DvVL)D8X1Ma?a=MI1+0hFK0$`2NRu+i4|j--RS zy1GuFy1FK_-d>_W?+8?D91%bU%|~C}y?fW&%kCE(Oew3rhv4qM1kjBOg){@y1Hl^W z^7+%Jx%NlLw+HMDsVyE}vU$*K)85`Loe;s5v+Q(0`nv^XYR9zHbwf%}M~d!KJl!6% zz3x+k3Z26Q$##b(jIYc zaptB@J83~r&n_r9(JiySkXKN^z$1U}R8B!b0YG|n`p6yBq07PJGsR)BF>%n!B^BW` zrKi6hbv80I+!VdVx~U1+K9pSd`Sa>D^KL>(Nr|O&0s(Pw=;=8kj+yO1X`J;+TY0(e zpTaPwz$`-CZt7!MJYpiG=JUwBI_O!V5Qi2q-I2iEc{{iJGpVpdjHDJUpo*}tl{ycl1i*SKDz3g5_Hns!qsC`rHEf3%3MC|BXE17D z2f<5%J{@jtC1yM_3R+WW$Y`^>Z~+Nr*P~NT4i3~*R5Oc<#`^l5-QDPdK2za5iXy<= z%nY1MFfC_>2#~-kfD6!rW+YeaKb3`@iz`1f6Gai&@%5ospa!C$^4A_OGCsi`UCOz<~I@ru|8AlSUU*KrBB`S>K*!abGv zx_uvKWMrhJ)qVU3CN0LoXT=u0``^)4B5H&I%E@UOV=Vy1S%gnXCFmsRyd8B0yHANI z5v^roZ@(NhO$TU|QFdC1d%Is4GwM7USy|K>$bA)N5=reo)BZ;g__3kg+@2$=1_mBA zF!%`N0mm9z@UO|qlbM~E>%^z(Q&>=dLdy8uxq|F$HbzE5-G>h)*f-7hcVmAp&CHmV z*|md}I2Os3m635jHPsgo333eNP%r?%HHJGGL9Oi)5z(qR@(mvW7q6wGV{4+In3{$L zi0n~ns;Wbmh_Z4ubS`WF08mwr88r(F3&H5+Rdk=cK`3=dwxgsB2I@etOgfc=biV+> z8L^_Jxp}XoB+%DOwVfeRQP~vg#DWwTtGmDirW2rdyk0J+Y&s9QXk9|GYbnoJfwb{QS2Fw$x82)r!ZDHJ3B+o0d@*+BuxWk!Di#&04&%K zG{kq89q_lS>&MiT&&uCXsA&34xY9twRBD!%X~euEG6D?<+%&=d@?~TzCmdA}A}3Fr zprNL|uMI!<+pbbzx9ohjv**sy(bDSZ=%6H&u&9CQ%KqTN7f96k2Y!O}T$&t!bz=`( zIA9bAb-ZJofh+d*9^g%|M^S3U#>GLxWMgF|ptPES3Wh>OcC4NsP}T`lJGek`@jt!A z!(jZreEEW2pFE~ifav4Lo0E?D65SFZy|aJ+W=!lr&7}C}CX?dV4ThK4hBjBPp4#~N z)42js5A-G?Ey6b_daz)~3{Q%SQx9B>s;<6;@PaFt*Pqqi)`n9ZOvnA!M!NsX;_dA$ zxzSNC%_NN4Yb;-ro;cBZIFO>dxA&Z>X$0>fJYD&TcnMzZk1w1o8l4f4=V9Kxa%FyD z0g^N&9oLUvzqDj$7`SAJ0*;|Hs3}MSj*gSq$YA#i@J;agBlSUecj!h&!GX;m9vPWs z7tAH=&;|Xbr`Te+r|0d+HI=nL2e`Sp9on*Be8Aanz|w(G=nUVgqo;6c1gZVnD`HKqN37!=#*RRjM9K7vtaHDou@ClaEXbM%2)WVTw)r@UaH zJWWc6L!1fGL=Ib#7a|h<_k+YP{zpUU!n?M!;=5ECa|X9*!jAE=>MFx`;PC(d?z6)p z9aI`d!uPoTjokayrKr9=Ozkk!Zo*D~(tm05#$*w#Hfxnuni}ylZetY)u+Gg|oaBFD zO8oM$w|I*(XY7j?&!6vo>mc;MzX3IP-ccJHdej+F9W!^c%I~TDn=7h#NF(IK$B#!y z|GnJK^GC?3_jNokFE{Wf)%x@w5o2dKeVaa#9)~q-n~)yyLxsHmos;U5!Si@?_-?+ayu7PULJ|!x z@2}sr&q@O$Xn%~6VL0JXb@cs@HMf3fv9j+Hqah3q)>%UISTql$%zQ$hmxm^u*PmBA z%o+cEMwyn=N2{f^>w@$2Lr@oohvPM=aaK|2($K8Ato#`W{$+1gO-*28dZ-FrG;W`~ z2jlVM4;5Gx6bLh|lBTtM1nm>om!%f}ct-z?<>I;*?Qh|8_$1xc;kVB(=jIwZt9=It%2SWCtao1H?E&AZLwP|KXt^!6^0$mOegG|!i z+M1-~`BbnVSETKs|Ju@iJ6eKHN<QeYVepHh!?&>)r>R8O|LFVpm zZ?7i!`cJ>SE7i}Rld>#DMfQ$CF)U{00?da`(9HcDS@]Qpvbk*Rx4a%(N4hHqkG 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 E54Yy;TmS$7 literal 0 HcmV?d00001 diff --git a/documentation/current/method/_images/Catcall_warning.png.data b/documentation/current/method/_images/Catcall_warning.png.data new file mode 100644 index 00000000..0d58433f --- /dev/null +++ b/documentation/current/method/_images/Catcall_warning.png.data @@ -0,0 +1,3 @@ +title=Catcall compiler warning +author=halw +path=content/catcall-compiler-warning diff --git a/documentation/current/method/eiffel-tutorial-et/et-inheritance.wiki b/documentation/current/method/eiffel-tutorial-et/et-inheritance.wiki index 49521bee..77807ada 100644 --- a/documentation/current/method/eiffel-tutorial-et/et-inheritance.wiki +++ b/documentation/current/method/eiffel-tutorial-et/et-inheritance.wiki @@ -822,7 +822,63 @@ with the argument anchored to the current object. A final, more application-oriented example of anchoring to Current is the feature merge posited in an earlier example (in [[ET: The Dynamic Structure: Execution Model|"The Dynamic Structure: Execution Model"]] ) with the signature merge (other: ACCOUNT). By using instead merge (other: like Current) we can ensure that in any descendant class -- BUSINESS_ACCOUNT, SAVINGS_ACCOUNT, MINOR_ACCOUNT ... -- an account will only be mergeable with another of a compatible type. -Covariance makes static type checking more delicate; mechanisms of "system validity" and "catcalls" address the problem, discussed in detail in the book [http://eiffel.com/doc/oosc/ Object-Oriented Software Construction] (see the bibliography). +Covariance makes static type checking more delicate; mechanisms of '''system validity''' and '''catcalls''' address the problem, discussed in detail in the book [http://eiffel.com/doc/oosc/ Object-Oriented Software Construction] (see the bibliography). Catcalls are discussed briefly below. + +===Catcalls=== + +The capabilities of polymorphism combined with covariance provide for powerful and flexible modeling. Under certain conditions, though, this flexibility can lead to problems. + +In short, you should be careful to avoid polymorphic '''catcalls'''. The '''call''' part of '''catcall''' means feature call. The '''cat''' part is an acronym for '''C'''hanging '''A'''vailability or '''T'''ype. What is changing here are features of descendant classes through the adaptation of inheritance. So maybe a descendant class has changed the export status of an inherited feature, so that that feature is not available on instances of the descendant class ... this is the case of '''changing availability'''. Or perhaps, through covariant modeling, the type of an argument to a feature in a descendant class has changed ... the case of '''changing type'''. + +Let's look at an example of changing type, due to covariant modeling. Suppose we have a system which uses the classes depicted on the following diagram: + +[[Image:Catcall example class diagram]] + +If in a client class, we declare the following attributes: + + + my_animal: ANIMAL + my_food_stuff: FOOD_STUFF + + +Also, the class ANIMAL contains the feature: + + eat (a_f: FOOD_STUFF) + -- Consume `a_f' + deferred + end + +This routine is implemented in COW as: + + eat (a_f: GRASS) + +and in class LION as: + + eat (a_f: WILDEBEEST_FILET) + + +So, covariant modeling is used to make the type of the argument for eat appropriate for each of ANIMAL's heirs. + +Here's where the problem comes in. It is possible at run-time to attach to my_animal a direct instance of either COW or LION. So, my_animal is a polymorphic attribute. Likewise, it is possible at run-time that my_food_stuff could be attached to a direct instance of either GRASS or WILDEBEEST_FILET. + +So, the feature call: + + my_animal.eat (my_food_stuff) + +is a '''catcall''', because there is a possibility that through the changing type of the argument to eat, we could be causing a COW to engage in the inappropriate practice of eating a WILDEBEEST_FILET. + +Because this possibility exists, developers should exercise caution in using polymorphism and covariant modeling. + +In version 6.2 of EiffelStudio, a capability was added to detect harmful catcalls at runtime. So, in our example, if we used my_animal.eat (my_food_stuff) only to feed grass to cows and wildebeest filets to lions, then all would be well. But if we attempted to use that same call to feed an inappropriate food to an animal, we would see an exception. + +Likewise the compiler in EiffelStudio will produce warnings in cases in which catcalls are possible. Below is an example of the compiler warning issued on the example. + +[[Image:Catcall compiler warning]] + + + + +