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

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

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

Π‘Π΅Π»Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ экспорт ΠΈ скрытиС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ

Π”ΠΎ сих ΠΏΠΎΡ€ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ класса Π±Ρ‹Π»ΠΈ доступны всСм ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ. Π­Ρ‚ΠΎ, бСзусловно, Π½Π΅ всСгда ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ скрытиС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ являСтся Π²Π°ΠΆΠ½Ρ‹ΠΌ элСмСнтом построСния ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈ Π³ΠΈΠ±ΠΊΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹.

Рассмотрим способы скрытия ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΎΡ‚ всСх ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ². Π”Π°Π½Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» содСрТит лишь Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ - ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΌΡƒ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ интСрфСйсов классов посвящСна ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π»Π΅ΠΊΡ†ΠΈΠΉ (лСкция 5 курса "ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ проСктирования"). Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… для простоты Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΎΠ΄Π½Π°ΠΊΠΎ всС ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π½ΠΈΠΆΠ΅ сообраТСния справСдливы ΠΈ для ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

НСограничСнный доступ

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ доступны для всСх ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ². Для класса


class S1 feature

f ...

g ...

...

end


ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ f, g, ... доступны всСм ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ S1. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ссли Π² классС C объявлСна ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ x класса S1, Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ²


x.f ...


являСтся допустимым, Ссли Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ всС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ условия коррСктности Π²Ρ‹Π·ΠΎΠ²Π° f.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ доступа ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ

Для ограничСния доступа ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ h, Π±ΡƒΠ΄Π΅Ρ‚ использована Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² объявлСниС класса Π΄Π²ΡƒΡ… ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² feature. ОбъявлСниС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ


class S2 feature

f ...

g ...

feature {A, B}

h ...

...

end


ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ f ΠΈ g ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ доступны всСм ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ h доступСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для классов A ΠΈ B, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ² (прямых ΠΈΠ»ΠΈ косвСнных). Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ x Ρ‚ΠΈΠΏΠ° S2 ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π·ΠΎΠ²


x.h


являСтся допустимым Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² исходных тСкстах классов A, B ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ².

Π’ особом случаС, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ i ΠΎΡ‚ всСх ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ экспортируСмым пустому списку ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² (НС Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ (см. Π½ΠΈΠΆΠ΅ S5).):


class S3 feature { }

i ...

end


Π’ этом случаС любой Π²Ρ‹Π·ΠΎΠ² x.i(...) нСдопустим. ЕдинствСнная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ обращСния ΠΊ i - Π½Π΅ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ²


i (...)


Π² тСкстС ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ класса S3 ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ². Π’Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ обСспСчиваСт ΠΏΠΎΠ»Π½ΠΎΠ΅ скрытиС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ скрытия ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² доступна Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ОО-языках, Π° Π²ΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ сСлСктивного ограничСния доступа, ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ h, ΠΊ соТалСнию, практичСски Π½Π΅ поддСрТиваСтся. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ½ΠΊΠΈΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ доступа Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ достаточно часто. Вопрос ΠΎ ваТности сСлСктивного экспорта обсуТдаСтся Π² дискуссии Π² ΠΊΠΎΠ½Ρ†Π΅ Π»Π΅ΠΊΡ†ΠΈΠΈ.

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΌΡ‹ столкнСмся с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ сСлСктивного экспорта ΠΈ рассмотрим Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ€ΠΎΠ»ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ интСрфСйсов.

Π‘Ρ‚ΠΈΠ»ΡŒ объявлСния скрытых ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΡΡ‚ΠΈΠ»ΡŒ объявлСния скрытой ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ i Π½Π΅ слишком ΡƒΠ΄Π°Ρ‡Π΅Π½. Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π²ΠΈΠ΄Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ (НС Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ (см. Π½ΠΈΠΆΠ΅ S5).)


class S4 feature

exported ...

feature {}

secret ...

end


Π³Π΄Π΅ secret являСтся скрытой ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΉ, Π° exported - общСдоступной. Π Π°Π·Π½ΠΈΡ†Π° Π² написании feature {} с пустым списком Π² скобках ΠΈ feature Π±Π΅Π· всяких скобок Π΅Π΄Π²Π° Π·Π°ΠΌΠ΅Ρ‚Π½Π°. Π“ΠΎΡ€Π°Π·Π΄ΠΎ Ρ€Π°Π·ΡƒΠΌΠ½Π΅Π΅ вмСсто пустого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ список, содСрТащий СдинствСнный класс NONE (Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ.)


class S5 feature

... exported ...

feature {NONE}

... secret ...

end


Класс NONE являСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹ΠΌ классом ΠΈ обсуТдаСтся Π΄Π°Π»Π΅Π΅ Π² связи с наслСдованиСм. По ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ² ΠΈ нСльзя ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ экзСмпляр. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, экспортированный классу NONE, фактичСски являСтся скрытым. ΠœΠ΅ΠΆΠ΄Ρƒ объявлСниями S4 ΠΈ S5 Π½Π΅Ρ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹, ΠΎΠ΄Π½Π°ΠΊΠΎ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС исходный тСкст становится Π±ΠΎΠ»Π΅Π΅ понятным ΠΈ ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ. ИмСнно Ρ‚Π°ΠΊΠΎΠΉ ΡΡ‚ΠΈΠ»ΡŒ объявлСния скрытых ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄Π°Π»Π΅Π΅ Π² этой ΠΊΠ½ΠΈΠ³Π΅.

"Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ" экспорт

Рассмотрим объявлСниС класса


indexing

Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: "ΠžΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠ΅ объявлСниС (объяснСниС см. Π½ΠΈΠΆΠ΅)"

class S6 feature

x: S6

my_routine is do ... print (x.secret) ... end

feature {NONE}

secret: INTEGER

end -- class S6


НаличиС Π² объявлСнии класса Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° x Ρ‚ΠΈΠΏΠ° S6 ΠΈ Π²Ρ‹Π·ΠΎΠ²Π° x.secret Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ собствСнным ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ. Но Ρ‚Π°ΠΊΠΎΠΉ Π²Ρ‹Π·ΠΎΠ² нСдопустим, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ secret скрыт ΠΎΡ‚ всСх ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²! Π’ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Π½Π΅Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ являСтся сам класс S6, Π½Π΅Ρ‡Π΅Π³ΠΎ Π½Π΅ мСняСт - ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΉ статус secret Π΄Π΅Π»Π°Π΅Ρ‚ нСдопустимым любой Π²Ρ‹Π·ΠΎΠ² Π²ΠΈΠ΄Π° x.secret. ВсякиС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π°Ρ€ΡƒΡˆΠ°ΡŽΡ‚ простоту сформулированного ΠΏΡ€Π°Π²ΠΈΠ»Π°.

Π•ΡΡ‚ΡŒ простоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅: Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ вмСсто feature {NONE} ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ feature {S6} , экспортируя ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ самому сСбС ΠΈ своим ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°ΠΌ.

НСобходимо ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π² тСкстС класса присутствуСт ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ print (x.secret). ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² secret Π² инструкции print (secret) допустим Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΡƒΡ…ΠΈΡ‰Ρ€Π΅Π½ΠΈΠΉ. ВсС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π² Π΄Π°Π½Π½ΠΎΠΌ классС, ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса ΠΈ Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ². Волько ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² приходится ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ самому сСбС.

Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ всС вмСстС

ПослС ввСдСния Π² Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ОО-вычислСний настало врСмя ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° вопрос, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡƒΡŽ систСму Π½Π° основС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… классов.

ΠžΠ±Ρ‰Π°Ρ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Π£Π΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ всС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π΄ΠΎ сих ΠΏΠΎΡ€ описания Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ происходит Π²ΠΎ врСмя выполнСния, Π±Ρ‹Π»ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ всСгда связан с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ экзСмпляром, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² исходном тСкстС класса нСизвСстСн. МоТно ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ½ΡΡ‚ΡŒ дСйствиС Π²Ρ‹Π·ΠΎΠ²Π°, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ принимая Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ†Π΅Π»ΡŒ этого Π²Ρ‹Π·ΠΎΠ²Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ p1 Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:


p1.translate (u, v)


Однако Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ вопрос: Ρ‡Ρ‚ΠΎ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ p1? ΠžΡ‚Π²Π΅Ρ‚ ΠΎΠΏΡΡ‚ΡŒ относитСлСн. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² присутствуСт Π² тСкстС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ класса GRAPHICS, Π° p1 это Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ GRAPHICS. Π’ΠΎΠ³Π΄Π° ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² этом случаС p1 фактичСски ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Current.p1. Но это Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° поставлСнный вопрос, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ нСизвСстно, Ρ‡Ρ‚ΠΎ прСдставляСт собой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Current Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π°! Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ класса GRAPHICS, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ наш Π²Ρ‹Π·ΠΎΠ².

Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ Π’Π·Ρ€Ρ‹Π²

Рассмотрим ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ². ПониманиС смысла, происходящСго Π² процСссС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅ ОО-вычислСний. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ сформулированный Ρ€Π°Π½Π΅Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π²Ρ‹Π·ΠΎΠ²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²:

[x]. (F1) Π›ΡŽΠ±ΠΎΠΉ элСмСнт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

[x]. (F2) ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ Ρ†Π΅Π»ΡŒ.

Π›ΡŽΠ±ΠΎΠΉ Π²Ρ‹Π·ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΠΎΡ€ΠΌ:

[x]. нСквалифицированная: f (a, b, ...);

[x]. квалифицированная: x.g (u, v, ...) .

АргумСнты Π² ΠΎΠ±ΠΎΠΈΡ… случаях ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ. Π’Ρ‹Π·ΠΎΠ² Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ Π² Ρ‚Π΅Π»Π΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ r ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²Π° r. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ извСстна Ρ†Π΅Π»ΡŒ этого Π²Ρ‹Π·ΠΎΠ²Π° - Π½Π΅ΠΊΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ OBJ. Π’ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π΅Π»ΡŒ этого Π²Ρ‹Π·ΠΎΠ²Π° - t. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… относится ΠΊ Π½Π΅ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ Π²Ρ‹Π·ΠΎΠ²Ρƒ, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ - ΠΊ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ:

[x]. (T1) Для Π½Π΅ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° t это просто OBJ.

[x]. (T2) Если x это Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚, Ρ‚ΠΎ x - ΠΏΠΎΠ»Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° OBJ-ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, присоСдинСно ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ - ΠΎΠ½ ΠΈ Π΅ΡΡ‚ΡŒ t.