Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 137

Автор Π‘Π΅Ρ€Ρ‚Ρ€Π°Π½ ΠœΠ΅ΠΉΠ΅Ρ€

transform (r) -- для r: RECTANGLE

transform (c) -- для c: CIRCLE

transform (figarray.item (i)) -- для массива Ρ„ΠΈΠ³ΡƒΡ€: ARRAY [POLYGON]



Π˜Π½Ρ‹ΠΌΠΈ словами, трСбуСтся ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ прСобразования rotate ΠΈ translate ΠΊ Ρ„ΠΈΠ³ΡƒΡ€Π΅ f ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡƒ динамичСского связывания Π²Ρ‹Π±ΠΎΡ€ подходящСй вСрсии (Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠΉ для классов RECTANGLE ΠΈ CIRCLE), зависящСй ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π° Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ f, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выяснится Π²ΠΎ врСмя выполнСния.

Π­Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ являСтся Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ элСгантного стиля, ΡΡ‚Π°Π²ΡˆΠ΅Π³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ благодаря ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΡƒ ΠΈ динамичСскому ΡΠ²ΡΠ·Ρ‹Π²Π°Π½ΠΈΡŽ, стиля, основанного Π½Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ ЕдинствСнного Π²Ρ‹Π±ΠΎΡ€Π°. ВрСбуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ rotate ΠΈ translate для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²ΠΎΠ²Π»Π΅Ρ‡Π΅Π½Π½Ρ‹Ρ… Π² вычислСниС классов.

Но ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ-Ρ‚ΠΎ Π½Π΅Ρ‡Π΅Π³ΠΎ! Класс FIGURE - это ΠΎΡ‡Π΅Π½ΡŒ ΠΎΠ±Ρ‰Π΅Π΅ понятиС, ΠΏΠΎΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ всС Π²ΠΈΠ΄Ρ‹ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Ρ… Ρ„ΠΈΠ³ΡƒΡ€. Ясно, Ρ‡Ρ‚ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ rotate ΠΈ translate, ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ для всСх Ρ„ΠΈΠ³ΡƒΡ€ "Π²ΠΎΠΎΠ±Ρ‰Π΅", Π½Π΅ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΠ² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΈΡ… Π²ΠΈΠ΄Π΅.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° transform Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, благодаря динамичСскому ΡΠ²ΡΠ·Ρ‹Π²Π°Π½ΠΈΡŽ, Π½ΠΎ статичСски ΠΎΠ½Π° Π½Π΅Π·Π°ΠΊΠΎΠ½Π½Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ rotate ΠΈ translate Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ класса FIGURE. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ² выявит Π² Π²Ρ‹Π·ΠΎΠ²Π°Ρ… f.rotate ΠΈ f.translate ошибки.

МоТно, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ввСсти Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ класса FIGURE ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ rotate, которая Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ. Но это опасный ΠΏΡƒΡ‚ΡŒ, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ rotate (center, angle) ΠΈΠΌΠ΅ΡŽΡ‚ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ½ΡΡ‚Π½ΡƒΡŽ сСмантику ΠΈ "Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ" Π½Π΅ являСтся ΠΈΡ… Ρ€Π°Π·ΡƒΠΌΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ.

ΠžΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½ΡƒΠΆΠ΅Π½ способ спСцификации ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² rotate ΠΈ translate Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ класса FIGURE, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π»Π°Π³Π°Π» Π±Ρ‹ ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎ ΠΈΡ… фактичСской Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ² этого класса. Π­Ρ‚ΠΎ достигаСтся объявлСниСм этих ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΊΠ°ΠΊ "ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ…". ΠŸΡ€ΠΈ этом вся Ρ‡Π°ΡΡ‚ΡŒ Ρ‚Π΅Π»Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ с ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ замСняСтся ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом deferred. Π’ классС FIGURE Π±ΡƒΠ΄Π΅Ρ‚ объявлСниС:


rotate (center: POINT; angle: REAL) is

-- ΠŸΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½Π° ΡƒΠ³ΠΎΠ» angle Π²ΠΎΠΊΡ€ΡƒΠ³ Ρ‚ΠΎΡ‡ΠΊΠΈ center.

deferred

end



ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ объявлСн ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ translate. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ этот ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ извСстСн Π² Ρ‚ΠΎΠΌ классС, Π³Π΄Π΅ появилось Ρ‚Π°ΠΊΠΎΠ΅ объявлСниС, Π½ΠΎ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ находятся Π² классах - собствСнных ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°Ρ…. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Π²Ρ‹Π·ΠΎΠ² Π²ΠΈΠ΄Π° f.rotate Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ transform становится Π·Π°ΠΊΠΎΠ½Π½Ρ‹ΠΌ.

ΠžΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ называСтся ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ, - ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, любой ΠΈΠ· Ρ€Π°Π½Π΅Π΅ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΠ²ΡˆΠΈΡ…ΡΡ Π½Π°ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²), называСтся эффСктивным.

ЭффСктивизация ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… собствСнных ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°Ρ… класса FIGURE потрСбуСтся Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ эффСктивной. НапримСр,


class POLYGON inherit

CLOSED_FIGURE

feature

rotate (center: POINT; angle: REAL) is

-- ΠŸΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½Π° ΡƒΠ³ΠΎΠ» angle Π²ΠΎΠΊΡ€ΡƒΠ³ Ρ‚ΠΎΡ‡ΠΊΠΈ center.

do

... ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ для ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° всСх Π²Π΅Ρ€ΡˆΠΈΠ½ ...

end

...

end



Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ POLYGON наслСдуСт ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ класса FIGURE Π½Π΅ нСпосрСдствСнно, Π° Ρ‡Π΅Ρ€Π΅Π· класс CLOSED_FIGURE, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° rotate остаСтся ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ.

Π­Ρ‚ΠΎΡ‚ процСсс обСспСчСния Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° называСтся эффСктивизациСй (effecting). (Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ - это ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, снабТСнный Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ.)

НС Π½ΡƒΠΆΠ½ΠΎ Π² ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ redefine Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ класса ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρƒ Π½ΠΈΡ… Π½Π΅ Π±Ρ‹Π»ΠΎ настоящСго опрСдСлСния Π² мСстС объявлСния. Π’ этом классС просто ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ опрСдСлСния Ρ‚Π°ΠΊΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², совмСстимыС ΠΏΠΎ Ρ‚ΠΈΠΏΠ°ΠΌ с ΠΈΡ… ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ объявлСниями ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² случаС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° rotate.

Π—Π°Π΄Π°Π½ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π±Π»ΠΈΠ·ΠΊΠΎ ΠΊ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ ΠΈ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ redefine, подчиняСтся Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½ΡƒΠΆΠ΅Π½ ΠΎΠ±Ρ‰ΠΈΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅: ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ объявлСниС

ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ объявлСниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° - ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ этими двумя Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ объявлСния Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈ ΠΈΡ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ:

[x]. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΎΡ‚ POLYGON ΠΊ RECTANGLE ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ perimeter ΡƒΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρƒ родитСля, ΠΈ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π² классС RECTANGLE. Π­Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅. Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ этот ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π΅Ρ‰Π΅ Ρ€Π°Π· пСрСопрСдСляСтся Π² классС SQUARE.

[x]. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΎΡ‚ FIGURE ΠΊ POLYGON Ρƒ родитСля Π½Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° rotate, ΠΈ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² классС POLYGON. Π­Ρ‚ΠΎ эффСктивизация. БобствСнныС ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΈ POLYGON ΠΌΠΎΠ³ΡƒΡ‚, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ эту ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ.

ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π½ΡƒΠΆΠ΄Π° Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² наслСдуСмого ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ½ΠΎ всС Ρ‚Π°ΠΊ ΠΆΠ΅ останСтся ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ. Π­Ρ‚ΠΈ измСнСния ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Ρ‚ΡŒ сигнатуру ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° - Ρ‚ΠΈΠΏΡ‹ Π΅Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° - ΠΈ Π΅Π³ΠΎ утвСрТдСния (Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ ограничСния Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ). Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΎΡ‚ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΊ эффСктивному, Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌΡƒ рассматриваСтся ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ прСдлоТСния redefine. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ Ρ€Π΅Π·ΡŽΠΌΠ΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… случаСв Π½ΠΎΠ²ΠΎΠ³ΠΎ объявлСния:

ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ объявлСниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΊ ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ объявлСниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΎΡ‚ ΠžΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠžΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠžΡ‚ΠΌΠ΅Π½Π° опрСдСлСния Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ЭффСктивизация ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅

Π’Π°Π±Π»ΠΈΡ†Π° 14.1.Π­Ρ„Ρ„Π΅ΠΊΡ‚Ρ‹ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ объявлСния


Π’ этой Ρ‚Π°Π±Π»ΠΈΡ†Π΅ имССтся ΠΎΠ΄ΠΈΠ½ Π΅Ρ‰Π΅ Π½Π΅ рассмотрСнный случай: ΠΎΡ‚ΠΌΠ΅Π½Π° опрСдСлСния - ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ эффСктивного ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΊ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌΡƒ. ΠŸΡ€ΠΈ этом отмСняСтся исходная рСализация ΠΈ начинаСтся новая Тизнь.

ΠžΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы

Как ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ ΠΈΠ»ΠΈ эффСктивным. Π’ΠΎ ΠΆΠ΅ относится ΠΈ ΠΊ классам.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅: ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ класс, эффСктивный класс

Класс являСтся ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ, Ссли Ρƒ Π½Π΅Π³ΠΎ имССтся ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚.

Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, класс являСтся эффСктивным.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ класс Π±Ρ‹Π» эффСктивным, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ эффСктивными всС Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹. Один ΠΈΠ»ΠΈ нСсколько ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π΄Π΅Π»Π°ΡŽΡ‚ класс ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ. Π’ этом случаС класс Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ΅Ρ‚ΠΊΡƒ:

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ объявлСния ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ класса

ОбъявлСниС ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ класса Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ подряд ΠΈΠ΄ΡƒΡ‰ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова deferred class (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ слова class для эффСктивных классов).

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ класс FIGURE Π±ΡƒΠ΄Π΅Ρ‚ объявлСн ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:


deferred class FIGURE feature

rotate (...) is

... ОбъявлСния ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ...

... ОбъявлСния Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ...

end



ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎ, Ссли класс ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ ΠΊΠ°ΠΊ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ, Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. ΠŸΡ€ΠΈ этом класс ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ, Π΄Π°ΠΆΠ΅ Ссли Π² Π½Π΅ΠΌ самом Π½Π΅ объявлСн Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ½ унаслСдовал ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π½Π΅ ΡΡ‚Π°Π²ΡˆΠΈΠΉ Ρƒ Π½Π΅Π³ΠΎ эффСктивным. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π² классС OPEN_FIGURE, скорСС всСго, останутся ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ display, rotate ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, унаслСдованныС ΠΎΡ‚ класса FIGURE, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ понятиС Π½Π΅Π·Π°ΠΌΠΊΠ½ΡƒΡ‚ΠΎΠΉ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ Π½Π΅ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ стандартныС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этих ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ этот класс являСтся ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ объявлСн ΠΊΠ°ΠΊ


deferred class OPEN_FIGURE inherit

FIGURE

...



Π΄Π°ΠΆΠ΅ Ссли Π² Π½Π΅ΠΌ самом Π½Π΅ вводится Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚.

ΠŸΠΎΡ‚ΠΎΠΌΠΎΠΊ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ класса являСтся эффСктивным классом, Ссли всС ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π΅Π³ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ ΠΈΠΌΠ΅ΡŽΡ‚ Π² Π½Π΅ΠΌ эффСктивныС опрСдСлСния ΠΈ Π² Π½Π΅ΠΌ Π½Π΅ вводятся Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ собствСнныС ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹. Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ классы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ POLYGON ΠΈ ELLIPSE, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² display, rotate.