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

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

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

"Π’ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° Π»ΠΈ ΠΊΡ€ΠΎΡ…Π°"?

Наша Ρ†Π΅Π»ΡŒ - строгая статичСская типизация. ИмСнно поэтому ΠΌΡ‹ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Ρ… Π»Π°Π·Π΅Π΅ΠΊ Π² нашСй "ΠΈΠ³Ρ€Π΅ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ", ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Ρ‚ΠΎΡ‡Π½ΠΎ ΠΈΡ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ссли ΠΎΠ½ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚.

Π‘Π°ΠΌΠΎΠΉ распространСнной Π»Π°Π·Π΅ΠΉΠΊΠΎΠΉ Π² статичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языках являСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ, ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΡ… Ρ‚ΠΈΠΏ сущности. Π’ C ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… ΠΎΡ‚ Π½Π΅Π³ΠΎ языках ΠΈΡ… Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ "ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠ°" ΠΈΠ»ΠΈ кастингом (cast). Π—Π°ΠΏΠΈΡΡŒ (OTHER_TYPE) x ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ x воспринимаСтся компилятором, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π΅ Ρ‚ΠΈΠΏ OTHER_TYPE, ΠΏΡ€ΠΈ соблюдСнии Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ограничСниях Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹.

ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ обходят ограничСния ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ². ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ распространСно ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° языкС C, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚ ANSI C. Π”Π°ΠΆΠ΅ Π² языкС C++ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ², хотя ΠΈ Π½Π΅ ΡΡ‚ΠΎΠ»ΡŒ частоС, остаСтся ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ.

ΠŸΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€Π°Π²ΠΈΠ» статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ Ρ‚Π°ΠΊ просто, Ссли Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ ΠΏΡƒΡ‚Π΅ΠΌ привСдСния.

Π”Π°Π»Π΅Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ систСма Ρ‚ΠΈΠΏΠΎΠ² являСтся строгой ΠΈ Π½Π΅ допускаСт привСдСния Ρ‚ΠΈΠΏΠ°.

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

Випизация ΠΈ связываниС

Π₯отя ΠΊΠ°ΠΊ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ этой ΠΊΠ½ΠΈΠ³ΠΈ Π²Ρ‹ навСрняка ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΎΡ‚ статичСского связывания, Π΅ΡΡ‚ΡŒ люди, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ Π½Π΅ ΠΏΠΎΠ΄ силу. ΠžΡ‚Ρ‡Π°ΡΡ‚ΠΈ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ связано с влияниСм языка Smalltalk, ΠΎΡ‚ΡΡ‚Π°ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ динамичСский ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΎΠ±Π΅ΠΈΠΌ Π·Π°Π΄Π°Ρ‡Π°ΠΌ ΠΈ способного ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅Π²Π΅Ρ€Π½ΠΎΠ΅ прСдставлСниС, Π±ΡƒΠ΄Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. (ΠœΡ‹ ΠΆΠ΅ Π² своСй ΠΊΠ½ΠΈΠ³Π΅ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ для создания Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Ρ… ΠΈ Π³ΠΈΠ±ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ динамичСскоС связываниС.)

Как типизация, Ρ‚Π°ΠΊ ΠΈ связываниС ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Π΅Π»ΠΎ с сСмантикой Базисной ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ x.f (arg), Π½ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π½Π° Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… вопроса:

Випизация ΠΈ связываниС

[x]. Вопрос ΠΎ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ: ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²ΠΎ врСмя выполнСния появится опСрация, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ f, примСнимая ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, присоСдинСнному ΠΊ сущности x (с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ arg)?

[x]. Вопрос ΠΎ связывании: ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ²?

Випизация ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π½Π° вопрос ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, связываниС ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π²Ρ‹Π±ΠΎΡ€ Π½ΡƒΠΆΠ½ΠΎΠΉ.

Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°:

[x]. ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰Π°Ρ ΠΏΡ€ΠΈ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ, связана с ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ: ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ x Π²ΠΎ врСмя выполнСния ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ опСрация, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ f, доступна Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· этих случаСв;

[x]. ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° связывания Π²Ρ‹Π·Π²Π°Π½Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΌΠΈ объявлСниями: Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ класс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒ наслСдуСмыС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΉΡ‚ΠΈΡΡŒ Π΄Π²Π΅ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΏΡ€Π΅Ρ‚Π΅Π½Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ f Π² Π΄Π°Π½Π½ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅.

ОбС Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½Ρ‹ ΠΊΠ°ΠΊ динамичСски, Ρ‚Π°ΠΊ ΠΈ статичСски. Π’ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… языках прСдставлСны всС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

[x]. Ряд Π½Π΅ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… языков, скаТСм, Pascal ΠΈ Ada, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ ΠΊΠ°ΠΊ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ, Ρ‚Π°ΠΊ ΠΈ статичСскоС связываниС. КаТдая ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ прСдставляСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ статичСски. Π’Π΅ΠΌ самым обСспСчиваСтся Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΏΠ»Π°Ρ‚ΠΎΠΉ Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ являСтся Π΅Π³ΠΎ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ.

[x]. Smalltalk ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ОО-языки содСрТат срСдства динамичСского связывания ΠΈ динамичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈ этом ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ отдаСтся гибкости Π² ΡƒΡ‰Π΅Ρ€Π± надСТности языка.

[x]. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π½Π΅ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ языки ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ статичСскоС связываниС. Π‘Ρ€Π΅Π΄ΠΈ Π½ΠΈΡ… - языки ассСмблСра ΠΈ ряд языков сцСнариСв (scripting languages).

[x]. ИдСи статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ динамичСского связывания Π²ΠΎΠΏΠ»ΠΎΡ‰Π΅Π½Ρ‹ Π² Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π² этой ΠΊΠ½ΠΈΠ³Π΅.

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ своСобразиС языка C++, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ, хотя ΠΈ Π½Π΅ ΡΡ‚Ρ€ΠΎΠ³ΡƒΡŽ Π²Π²ΠΈΠ΄Ρƒ наличия привСдСния Ρ‚ΠΈΠΏΠΎΠ², статичСскоС связываниС (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ), динамичСскоС связываниС ΠΏΡ€ΠΈ явном ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… (virtual) объявлСний.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° Π²Ρ‹Π±ΠΎΡ€Π° статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ динамичСского связывания ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Π°. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ вопрос: "Когда ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π·Π½Π°Ρ‚ΡŒ ΠΎ сущСствовании ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²?" - ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ статичСский ΠΎΡ‚Π²Π΅Ρ‚: "Π§Π΅ΠΌ Ρ€Π°Π½ΡŒΡˆΠ΅, Ρ‚Π΅ΠΌ Π»ΡƒΡ‡ΡˆΠ΅", Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚: Π²ΠΎ врСмя компиляции. Π’Ρ‚ΠΎΡ€ΠΎΠΉ вопрос: "Какой ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?" ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ динамичСский ΠΎΡ‚Π²Π΅Ρ‚: "Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ΅Π½", - ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ динамичСскому Ρ‚ΠΈΠΏΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, опрСдСляСмому Π²ΠΎ врСмя выполнСния. Π­Ρ‚ΠΎ СдинствСнно ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Ссли статичСскоС ΠΈ динамичСскоС связываниС Π΄Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ наслСдования ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡΡΠ½ΠΈΡ‚ΡŒ эти понятия:

Рис. 17.3.  Π’ΠΈΠ΄Ρ‹ Π»Π΅Ρ‚Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚ΠΎΠ²

Рассмотрим Π²Ρ‹Π·ΠΎΠ²:


my_aircraft.lower_landing_gear



Вопрос ΠΎ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ: ΠΊΠΎΠ³Π΄Π° ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ здСсь Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ lower_landing_gear ("Π²Ρ‹ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ шасси"), ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ΠΉ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ (для COPTER Π΅Π³ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ вовсС) Вопрос ΠΎ связывании: ΠΊΠ°ΠΊΡƒΡŽ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… вСрсий Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ.

БтатичСскоС связываниС ΠΎΠ·Π½Π°Ρ‡Π°Π»ΠΎ Π±Ρ‹, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅ΠΌ Ρ‚ΠΈΠΏ присоСдиняСмого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ полагаСмся Π½Π° объявлСниС сущности. Π’ ΠΈΡ‚ΠΎΠ³Π΅, имСя Π΄Π΅Π»ΠΎ с Boeing 747-400, ΠΌΡ‹ Π²Ρ‹Π·Π²Π°Π»ΠΈ Π±Ρ‹ Π²Π΅Ρ€ΡΠΈΡŽ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΡƒΡŽ для ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Π»Π°ΠΉΠ½Π΅Ρ€ΠΎΠ² сСрии 747, Π° Π½Π΅ для ΠΈΡ… ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ 747-400. ДинамичСскоС связываниС примСняСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ, Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡƒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΈ это ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄.

ΠŸΡ€ΠΈ статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ компилятор Π½Π΅ ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΠΈΡ‚ Π²Ρ‹Π·ΠΎΠ², Ссли ΠΌΠΎΠΆΠ½ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊ сущности my_aircraft Π±ΡƒΠ΄Π΅Ρ‚ присоСдинСн ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, поставляСмый с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ lower_landing_gear. Базисная Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° получСния Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΉ проста: ΠΏΡ€ΠΈ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ объявлСнии my_aircraft трСбуСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ° Π²ΠΊΠ»ΡŽΡ‡Π°Π» Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ my_aircraft Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ объявлСн ΠΊΠ°ΠΊ AIRCRAFT, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ послСдний Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ lower_landing_gear Π½Π° этом ΡƒΡ€ΠΎΠ²Π½Π΅; Π²Π΅Ρ€Ρ‚ΠΎΠ»Π΅Ρ‚Ρ‹, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ шасси Π½Π΅ ΡƒΠΌΠ΅ΡŽΡ‚. Если ΠΆΠ΅ ΠΌΡ‹ объявим ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊ PLANE, - класс, содСрТащий Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, - всС Π±ΡƒΠ΄Π΅Ρ‚ Π² порядкС.

ДинамичСская типизация Π² стилС Smalltalk Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ Π²Ρ‹Π·ΠΎΠ²Π°, ΠΈ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΅Π³ΠΎ выполнСния ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Π’Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ для ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² ΠΈ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ, Π½ΠΎ нСдопустимо для ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹Ρ… систСм - Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠΎΠ»Π΅Ρ‚Π° ΠΏΠΎΠ·Π΄Π½ΠΎ ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ, Π΅ΡΡ‚ΡŒ Π»ΠΈ Ρƒ вас шасси.

ΠšΠΎΠ²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΈ скрытиС ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠΌ

Если Π±Ρ‹ ΠΌΠΈΡ€ Π±Ρ‹Π» прост, Ρ‚ΠΎ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ ΠΎ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ. ΠœΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Ρ†Π΅Π»ΠΈ ΠΈ прСимущСства статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΈΠ·ΡƒΡ‡ΠΈΠ»ΠΈ ограничСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ рСалистичныС систСмы Ρ‚ΠΈΠΏΠΎΠ², ΠΈ ΡƒΠ±Π΅Π΄ΠΈΠ»ΠΈΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ нашим критСриям.

Но ΠΌΠΈΡ€ Π½Π΅ прост. ОбъСдинСниС статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ трСбованиями ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΈ создаСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π±ΠΎΠ»Π΅Π΅ слоТныС, Ρ‡Π΅ΠΌ это каТСтся с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ взгляда. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Π΄Π²Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°: ΠΊΠΎΠ²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ (covariance) - смСна Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ, скрытиС ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠΌ (descendant hiding) - ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ класса ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ статус экспорта наслСдуСмых ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

ΠšΠΎΠ²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ

Π§Ρ‚ΠΎ происходит с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ°? Π­Ρ‚ΠΎ ваТнСйшая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΈ ΠΌΡ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ ряд ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π΅Π΅ проявлСния: устройства ΠΈ ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€Ρ‹, ΠΎΠ΄Π½ΠΎ- ΠΈ двухсвязныС списки ΠΈ Ρ‚. Π΄. (см. Ρ€Π°Π·Π΄Π΅Π»Ρ‹ 16.6, 16.7).

Π’ΠΎΡ‚ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰ΠΈΠΉ ΡƒΡΡΠ½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. И ΠΏΡƒΡΡ‚ΡŒ ΠΎΠ½ Π΄Π°Π»Π΅ΠΊ ΠΎΡ‚ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ ΠΌΠ΅Ρ‚Π°Ρ„ΠΎΡ€ΠΈΡ‡Π΅Π½, Π½ΠΎ Π΅Π³ΠΎ Π±Π»ΠΈΠ·ΠΎΡΡ‚ΡŒ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ схСмам ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Π°. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, разбирая Π΅Π³ΠΎ, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ часто Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π·Π°Π΄Π°Ρ‡Π°ΠΌ ΠΈΠ· ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ сСбС Π³ΠΎΡ‚ΠΎΠ²ΡΡ‰ΡƒΡŽΡΡ ΠΊ Ρ‡Π΅ΠΌΠΏΠΈΠΎΠ½Π°Ρ‚Ρƒ Π»Ρ‹ΠΆΠ½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ унивСрситСта. Класс GIRL Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π»Ρ‹ΠΆΠ½ΠΈΡ†, Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΡ… Π² составС ТСнской сборной, BOY - Π»Ρ‹ΠΆΠ½ΠΈΠΊΠΎΠ². Ряд участников ΠΎΠ±Π΅ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄ Ρ€Π°Π½ΠΆΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, ΠΏΠΎΠΊΠ°Π·Π°Π² Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… сорСвнованиях. Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ для Π½ΠΈΡ…, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ΠΈ ΠΏΠΎΠ±Π΅Π³ΡƒΡ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² прСимущСство ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ. (Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π΄Π°ΡŽΡ‰Π΅Π΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ слалом ΠΈ Π»Ρ‹ΠΆΠ½Ρ‹Π΅ Π³ΠΎΠ½ΠΊΠΈ ΡΡ‚ΠΎΠ»ΡŒ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π² Π³Π»Π°Π·Π°Ρ… ΠΌΠ½ΠΎΠ³ΠΈΡ… людСй, являясь Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΌΠ΅Ρ‚Π°Ρ„ΠΎΡ€ΠΎΠΉ самой ΠΆΠΈΠ·Π½ΠΈ.) Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π²Π° Π½ΠΎΠ²Ρ‹Ρ… класса: RANKED_GIRL ΠΈ RANKED_BOY.

Рис. 17.4.  ΠšΠ»Π°ΡΡΠΈΡ„икация Π»Ρ‹ΠΆΠ½ΠΈΠΊΠΎΠ²