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

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

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

[x]. Π‘ΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ являСтся ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ пСрСопрСдСлСния Ρ‚ΠΈΠΏΠΎΠ², Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½Π° Π»ΠΈΠ±ΠΎ Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π°, Π»ΠΈΠ±ΠΎ сама являСтся ΠΎΠΏΠΎΡ€Π½Ρ‹ΠΌ элСмСнтом.

Но ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ всС это ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Ρ‚ΡŒ? Вся ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ОО-ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ выраТСнная Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚-Π—Π°ΠΊΡ€Ρ‹Ρ‚ ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈ связана с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π²ΠΏΡ€Π°Π²Π΅ внСсти Π² Ρ€Π°Π½Π΅Π΅ ΡΠ΄Π΅Π»Π°Π½Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ бСсконСчной ΠΌΡƒΠ΄Ρ€ΠΎΡΡ‚ΡŒΡŽ, понимая, ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ смогут Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊ своим Π½ΡƒΠΆΠ΄Π°ΠΌ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΈ.

ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² ΠΈ скрытиС ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠΌ - своСго Ρ€ΠΎΠ΄Π° "ΠΏΡ€Π΅Π΄ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»Π°ΠΏΠ°Π½", Π΄Π°ΡŽΡ‰ΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ класс, ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ΠΉ для достиТСния Π½Π°ΡˆΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ:

[x]. ΠŸΡ€ΠΈΠ±Π΅Π³Π½ΡƒΠ² ΠΊ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ Ρ‚ΠΈΠΏΠΎΠ², ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠ΅Π½ΡΡ‚ΡŒ объявлСния Π² ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½ΠΎΠΌ классС, Π½Π΅ затрагивая ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π». ΠŸΡ€ΠΈ этом чисто ΠΊΠΎΠ²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΡ€Π°Π²ΠΊΠΈ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π° ΠΏΡƒΡ‚Π΅ΠΌ описанных ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ.

[x]. Π‘ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠΌ Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π½Π΅ΡƒΠ΄Π°Ρ‡ ΠΏΡ€ΠΈ создании класса. МоТно ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ RECTANGLE, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ являСтся ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠΌ POLYGON, пытаСтся Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ. Π’Π·Π°ΠΌΠ΅Π½ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ структуру наслСдования, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ с фиксированным числом Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΎΡ‚Π΄Π΅Π»Π΅Π½Ρ‹ ΠΎΡ‚ всСх ΠΏΡ€ΠΎΡ‡ΠΈΡ…, ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΎ Π±Ρ‹. Однако ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ структур наслСдования ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ всСгда Ρ‚Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ таксономичСских ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. Но ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡ… ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ? ΠžΠ±ΡΡƒΠΆΠ΄Π°Ρ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ экспорта Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π»Π΅ΠΊΡ†ΠΈΠΉ, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ Π΄Π²ΡƒΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, это Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π² классификации. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ‚ идСального Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΎ сущСствуСт.

ЖСлая ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Π°Π΄Π°ΠΏΡ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹Ρ… классов для Π½Π°ΡˆΠΈΡ… Π½ΡƒΠΆΠ΄, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΈ ΠΊΠΎΠ²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΠ΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ², ΠΈ скрытиС ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠΌ. Π”Π°Π»Π΅Π΅ ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ этого Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ.

Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ·

Π­Ρ‚ΠΎΡ‚ Ρ€Π°Π·Π΄Π΅Π» посвящСн описанию ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ практичСскиС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Ρ‹ Π² Π»Π΅ΠΊΡ†ΠΈΠΈ 17.

Π˜Π·ΡƒΡ‡Π°Ρ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ с Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ΠΌ, ΠΌΡ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ основной ΠΈΠ΄Π΅Π΅ΠΉ Π±Ρ‹Π»ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€ΠΎΠ² сущностСй. Π’Π°ΠΊ, Ссли Π²Π·ΡΡ‚ΡŒ Π΄Π²Π΅ инструкции Π²ΠΈΠ΄Π°


s := b ...

s.share (g)



каТдая ΠΈΠ· Π½ΠΈΡ… слуТит ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ примСнСния Π²Π°ΠΆΠ½Ρ‹Ρ… ОО-ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ²: пСрвая - ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ°, вторая - пСрСопрСдСлСния Ρ‚ΠΈΠΏΠΎΠ². ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ объСдинСнии ΠΈΡ… для ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ сущности s. Аналогично:


p := r ...

p.add_vertex (...)



ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с объСдинСния Π΄Π²ΡƒΡ… нСзависимых ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅Π²ΠΈΠ½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ².

ΠžΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π²Π΅Π΄ΡƒΡ‚ ΠΊ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡŽ Ρ‚ΠΈΠΏΠΎΠ². Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½ΠΎΠ΅ присваиваниС присоСдиняСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ BOY ΠΊ сущности s, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ g нСдопустимым Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ share, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° связана с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ GIRL. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊ сущности r присоСдиняСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ RECTANGLE, Ρ‡Ρ‚ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ add_vertex ΠΈΠ· числа экспортируСмых ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

Π’ΠΎΡ‚ ΠΈ идСя Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ: Π·Π°Ρ€Π°Π½Π΅Π΅ - статичСски, ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Ρ‚ΠΈΠΏΠΎΠ² компилятором ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹ΠΌΠΈ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ срСдствами - ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Π½Π°Π±ΠΎΡ€ Ρ‚ΠΈΠΏΠΎΠ² (typeset) ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сущности, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ связана Π² ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ выполнСния. Π—Π°Ρ‚Π΅ΠΌ, ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅ статичСски, ΠΌΡ‹ убСдимся Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² являСтся ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта ΠΈΠ· Π½Π°Π±ΠΎΡ€ΠΎΠ² Ρ‚ΠΈΠΏΠΎΠ² Ρ†Π΅Π»ΠΈ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Π’ Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ s := b ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ класс BOY ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π½Π°Π±ΠΎΡ€Ρƒ Ρ‚ΠΈΠΏΠΎΠ² для s (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния инструкции создания create b ΠΎΠ½ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π½Π°Π±ΠΎΡ€Ρƒ Ρ‚ΠΈΠΏΠΎΠ² для b). GIRL, Π²Π²ΠΈΠ΄Ρƒ наличия инструкции create g, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π½Π°Π±ΠΎΡ€Ρƒ Ρ‚ΠΈΠΏΠΎΠ² для g. Но Ρ‚ΠΎΠ³Π΄Π° Π²Ρ‹Π·ΠΎΠ² share Π±ΡƒΠ΄Π΅Ρ‚ нСдопустим для Ρ†Π΅Π»ΠΈ s Ρ‚ΠΈΠΏΠ° BOY ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° g Ρ‚ΠΈΠΏΠ° GIRL. Аналогично RECTANGLE находится Π² Π½Π°Π±ΠΎΡ€Π΅ Ρ‚ΠΈΠΏΠΎΠ² для p, Ρ‡Ρ‚ΠΎ обусловлСно ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹ΠΌ присваиваниСм, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π²Ρ‹Π·ΠΎΠ² add_vertex для p Ρ‚ΠΈΠΏΠ° RECTANGLE окаТСтся нСдопустимым.

Π­Ρ‚ΠΈ наблюдСния наводят нас Π½Π° ΠΌΡ‹ΡΠ»ΡŒ ΠΎ создании глобального ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π½Π° основС Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π° Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ:

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ систСмной коррСктности

Π’Ρ‹Π·ΠΎΠ² x.f (arg) являСтся систСмно-ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ, Ссли ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли ΠΎΠ½ классово-ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π΅Π½ для x, ΠΈ arg, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… Π»ΡŽΠ±Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΈΠ· своих ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π½Π°Π±ΠΎΡ€ΠΎΠ² Ρ‚ΠΈΠΏΠΎΠ².

Π’ этом ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π²Ρ‹Π·ΠΎΠ² считаСтся классово-ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ, Ссли ΠΎΠ½ Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π’Ρ‹Π·ΠΎΠ²Π° ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ гласит: Ссли C Π΅ΡΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс Ρ‚ΠΈΠΏΠ° x, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ f Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ C, Π° Ρ‚ΠΈΠΏ arg Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ совмСстим с Ρ‚ΠΈΠΏΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° f. (ВспомнитС: для простоты ΠΌΡ‹ ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π½Π΅ составляСт Ρ‚Ρ€ΡƒΠ΄Π° Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ дСйствиС ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ число Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².)

БистСмная ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²Π° сводится ΠΊ классовой коррСктности Π·Π° Ρ‚Π΅ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° провСряСтся Π½Π΅ для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов, Π° для Π»ΡŽΠ±Ρ‹Ρ… ΠΏΠ°Ρ€ ΠΈΠ· Π½Π°Π±ΠΎΡ€ΠΎΠ² мноТСств. Π’ΠΎΡ‚ основныС ΠΏΡ€Π°Π²ΠΈΠ»Π° создания Π½Π°Π±ΠΎΡ€Π° Ρ‚ΠΈΠΏΠΎΠ² для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сущности:

1 Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сущности Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Ρ‚ΠΈΠΏΠΎΠ² пуст.

2 ВстрСтив ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Π²ΠΈΠ΄Π° create {SOME_TYPE} a, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ SOME_TYPE Π² Π½Π°Π±ΠΎΡ€ Ρ‚ΠΈΠΏΠΎΠ² для a. (Для простоты Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ любая инструкция create a Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Π΅Π½Π° инструкциСй create {ATYPE} a, Π³Π΄Π΅ ATYPE - Ρ‚ΠΈΠΏ сущности a.)

3 ВстрСтив ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ΅ присваиваниС Π²ΠΈΠ΄Π° a := b, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² Π½Π°Π±ΠΎΡ€ Ρ‚ΠΈΠΏΠΎΠ² для a всС элСмСнты Π½Π°Π±ΠΎΡ€Π° Ρ‚ΠΈΠΏΠΎΠ² для b.

4 Если a Π΅ΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚ΠΎ, встрСтив ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Π²Ρ‹Π·ΠΎΠ² с фактичСским ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ b, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² Π½Π°Π±ΠΎΡ€ Ρ‚ΠΈΠΏΠΎΠ² для a всС элСмСнты Π½Π°Π±ΠΎΡ€Π° Ρ‚ΠΈΠΏΠΎΠ² для b.

5 Π‘ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ шаги (3) ΠΈ (4) Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π°Π±ΠΎΡ€Ρ‹ Ρ‚ΠΈΠΏΠΎΠ² Π½Π΅ пСрСстанут ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ.

Данная Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠ° Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π½ΡƒΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π· особых ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π¨Π°Π³ (5) Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Π²Π²ΠΈΠ΄Ρƒ возмоТности Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ присваивания ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ (ΠΎΡ‚ b ΠΊ a, ΠΎΡ‚ c ΠΊ b ΠΈ Ρ‚. Π΄.). НСтрудно ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ число шагов этот процСсс прСкратится.

Число шагов ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ Π΄Π»ΠΈΠ½ΠΎΠΉ максимальной Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ присоСдинСний; Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами максимум Ρ€Π°Π²Π΅Π½ n, Ссли систСма содСрТит присоСдинСния ΠΎΡ‚ xi+1 ΠΊ xi для i=1, 2, ... n-1. ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ шагов (3) ΠΈ (4) извСстно ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄ "Π½Π΅ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ".

Как Π²Ρ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ инструкций. Π’ случаС


create {TYPE1} t; s := t; create {TYPE2} t



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


create b

s := b

s.share (g)



Π±ΡƒΠ΄Π΅Ρ‚ объявлСна систСмно-Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ, нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΡ… выполнСния Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡŽ Ρ‚ΠΈΠΏΠ°.

Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· систСмы Π±Ρ‹Π» (Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ) прСдставлСн Π² 22-ΠΉ Π³Π»Π°Π²Π΅ ΠΌΠΎΠ½ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ [M 1992]. ΠŸΡ€ΠΈ этом Π±Ρ‹Π»Π° Ρ€Π΅ΡˆΠ΅Π½Π° ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ковариантности, Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ экспорта ΠΏΡ€ΠΈ наслСдовании. Однако Π² этом ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ Π΅ΡΡ‚ΡŒ досадный практичСский Π½Π΅Π΄ΠΎΡ‡Π΅Ρ‚, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ: прСдполагаСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° систСмы Π² Ρ†Π΅Π»ΠΎΠΌ, Π° Π½Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ класса Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. УбийствСнным оказываСтся ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ (4), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ всС Π΅Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… классах.

Π₯отя Π·Π°Ρ‚Π΅ΠΌ Π±Ρ‹Π»ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ классами Π² [M 1989b], ΠΈΡ… ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π»ΠΎ, Ρ‡Ρ‚ΠΎ Π² срСдС программирования, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°ΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ всСй систСмы. Π–Π΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ элСмСнт (быстрой) локальной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, внСсСнных ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ классы. Π₯отя ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ примСнСния глобального ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° извСстны, - Ρ‚Π°ΠΊ, программисты Π½Π° языкС C ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ инструмСнт lint для поиска нСсоотвСтствий Π² систСмС, Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… компилятором, - всС это выглядит Π½Π΅ слишком ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.