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

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

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

По этим ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ (1), Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π΅Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ программисты сами Π·Π°Π΄Π°Π²Π°Π»ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ связывания, ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ эффСктивному ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ ОО-ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

РСшСниС (2) - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ статичСскоС связываниС Π² качСствС ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ - Π΅Ρ‰Π΅ Ρ…ΡƒΠΆΠ΅. ΠžΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π΄ΠΎΠ²ΠΎΠ΄Ρ‹ Π² Π΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·Ρƒ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния проСктирования языка. Как ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ, Π²Ρ‹Π±ΠΎΡ€ статичСского связывания всСгда ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкам, Ссли Π΅Π³ΠΎ сСмантика отличаСтся ΠΎΡ‚ динамичСского. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΈΡ‡ΠΈΠ½ для Π΅Π³ΠΎ Π²Ρ‹Π±ΠΎΡ€Π° Π² качСствС ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ.

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

Π”Π°ΠΆΠ΅ Π² языкС, Π·Π°ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΌ программиста ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π·Π° Π²Ρ‹Π±ΠΎΡ€ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ связывания (Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ принято Π² C), ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹ΠΌ. ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ динамичСски связываСмыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ (virtual), язык Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Π» Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ динамичСскоС связываниС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ программистам Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ словом static (ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠΌ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ) ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ΠΈ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ, Π΄ΠΎΠ²Π΅Ρ€ΠΈΠ² ΠΈΠΌ самим (Π² Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΈ C ΠΈ Π‘++) ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° допустима.

Π­Ρ‚ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ особСнно Π²Π°ΠΆΠ½ΠΎ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, СстСствСнно, ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Π΅Π½Π΄Π΅Π½Ρ†ΠΈΡŽ Π΄ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ значСниям ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π”Π°ΠΆΠ΅ для языка, ΠΌΠ΅Π½Π΅Π΅ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎΠ³ΠΎ, Ρ‡Π΅ΠΌ Π‘++, нСльзя ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΡ‚ΠΎ-Π»ΠΈΠ±ΠΎ сразу справится со всСми дСталями наслСдования. ΠžΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ этому Π΄ΠΎΠ»ΠΆΠ΅Π½ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΡƒΡŽ сСмантику для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² (ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅, для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ "хотят Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго ΠΎΠ½ Π±Ρ‹Π» ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ, Π° ΡƒΠΆ Π·Π°Ρ‚Π΅ΠΌ быстрым"), Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ возмоТности ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ для Ρ‚Π΅Ρ…, ΠΊΠΎΠΌΡƒ это трСбуСтся ΠΈ ΠΊΡ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ разбираСтся Π² ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π΅.

ИмСя Π² Π²ΠΈΠ΄Ρƒ ΡˆΠΈΡ€ΠΎΠΊΠΎ распространСнный интСрСс ΠΊ "совмСстимости снизу - Π²Π²Π΅Ρ€Ρ…", созданиС ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚Π° для измСнСния ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ связывания Π² Π‘++, особСнно ΠΏΡƒΠ½ΠΊΡ‚Π° (2), Π±ΡƒΠ΄Π΅Ρ‚ тяТСлым Π΄Π΅Π»ΠΎΠΌ, Π½ΠΎ стоит ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ»ΠΈΡ‚ΡŒ свСт Π½Π° ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π½Ρ‹Π½Π΅ΡˆΠ½ΠΈΡ… соглашСний.

ΠŸΡ€ΠΈΡΠΊΠΎΡ€Π±Π½ΠΎ, Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π‘++ влияСт ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° динамичСского связывания Π² языкС Borland Delphi, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‰Π΅ΠΌ ΠΏΡ€Π΅ΠΆΠ½ΠΈΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Паскаля, ΠΏΠΎ сути, Ρ‚Π° ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ Π² Π‘++. ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ всС ΠΆΠ΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ΡˆΠ΅Π΄ΡˆΠΈΠΉ ΠΈΠ· Π½Π΅Π΄Ρ€ Π‘++ язык Java Π² качСствС Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ динамичСскоС связываниС.


Π­Ρ‚ΠΈ наблюдСния ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΄Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ практичСский совСт. Π§Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ использовании Π‘++ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ языка с Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΎΠΉ связывания? Π‘Π°ΠΌΡ‹ΠΌ Π»ΡƒΡ‡ΡˆΠΈΠΌ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… возмоТности ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ срСдства ΠΈΠ»ΠΈ ΠΆΠ΄Π°Ρ‚ΡŒ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ Π² этом языкС, Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°ΠΊ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ Ρ‚Π΅ΠΌ самым Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΈΡ… Π»ΡŽΠ±Ρ‹Π΅ пСрСопрСдСлСния Π² Π΄ΡƒΡ…Π΅ ОО-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ПО. (К соТалСнию, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ компиляторы Π‘++ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ число Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² систСмС, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π΄Π΅ΡΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ эти ограничСния Π±ΡƒΠ΄ΡƒΡ‚ сняты).

ΠŸΠ°Ρ€Π°Π΄ΠΎΠΊΡ этого совСта Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ нас Π½Π°Π·Π°Π΄ ΠΊ ситуации, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ всС Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· динамичСскоС связываниС ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ нСсколько большСго Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния. Π˜Π½Ρ‹ΠΌΠΈ словами, соглашСния (1) ΠΈ (2) языка Π‘++, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ эффСктивности, Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², Ссли ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ: "ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго", ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ² этого!

ΠΠ΅ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ экспСрты ΠΏΠΎ Π‘++ Π½Π΅ ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ "чСрСсчур ΠΌΠ½ΠΎΠ³ΠΎ" ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ориСнтированности. Π£ΠΎΠ»Ρ‚Π΅Ρ€ Π‘Ρ€Π°ΠΉΡ‚ (Walter Bright), Π°Π²Ρ‚ΠΎΡ€ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· самых популярных компиляторов Π‘++, ΠΏΠΈΡˆΠ΅Ρ‚ Π² [Bright 1995]:

Π₯ΠΎΡ€ΠΎΡˆΠΎ извСстно, Ρ‡Ρ‚ΠΎ Ρ‡Π΅ΠΌ большС Π‘++ [ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ²] Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ классС, Ρ‚Π΅ΠΌ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ Π΅Π³ΠΎ ΠΊΠΎΠ΄. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π΅ΡΡ‚ΡŒ нСсколько Π²Π΅Ρ‰Π΅ΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΡΠΊΠ»ΠΎΠ½ΠΈΡ‚ΡŒ Ρ‡Π°ΡˆΡƒ вСсов Π² Π²Π°ΡˆΡƒ ΠΏΠΎΠ»ΡŒΠ·Ρƒ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π±Π΅Π· большой нСобходимости Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ [Ρ‚. Π΅. динамичСскоС связываниС], Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ классы [ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы], дСструкторы ΠΈ Ρ‚.ΠΏ. Π”Ρ€ΡƒΠ³ΠΎΠΉ источник разбухания - это мноТСствСнноС наслСдованиС [...]. Если Ρƒ вас слоТная иСрархия классов с ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ двумя Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ функциями, Ρ‚ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ аспСкт ΠΈ, Π±Ρ‹Ρ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈ вСтвлСния.

Π˜Π½Ρ‹ΠΌΠΈ словами: Π½Π΅ ΠΏΡ€ΠΈΠ±Π΅Π³Π°ΠΉΡ‚Π΅ ΠΊ использованию ОО-ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². ( Π’ Ρ‚ΠΎΠΌ ΠΆΠ΅ тСкстС отстаиваСтся ΠΈ "Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° всСх ΠΊΠΎΠ΄ΠΎΠ² ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ" для Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ссылки - ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ элСмСнтарныС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ проСктирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΊΠ°ΠΊ ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ класс Π΄ΠΎΠ»ΠΆΠ΅Π½ сам ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π·Π° всС, связанноС с Π΅Π³ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ.)

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

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ

[x]. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ наслСдования ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ классы ΠΊΠ°ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… классов.

[x]. Класс, Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ классу, называСтся Π΅Π³ΠΎ наслСдником, Π° исходный класс - Π΅Π³ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ. РаспространСнныС Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ число ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ноль) эти понятия становятся понятиями ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ° ΠΈ ΠΏΡ€Π΅Π΄ΠΊΠ°.

[x]. НаслСдованиС являСтся ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΊΠ°ΠΊ для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования, Ρ‚Π°ΠΊ ΠΈ для Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΠΈ.

[x]. ΠŸΠ»ΠΎΠ΄ΠΎΡ‚Π²ΠΎΡ€Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ наслСдования Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ пСрСопрСдСлСния (прСдоставлСния классу возмоТности ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π΅Π³ΠΎ собствСнного ΠΏΡ€Π΅Π΄ΠΊΠ°), ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° (возмоТности ΡΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ ссылку Π²ΠΎ врСмя выполнСния с экзСмплярами Ρ€Π°Π·Π½Ρ‹Ρ… классов), динамичСского связывания (динамичСского Π²Ρ‹Π±ΠΎΡ€Π° подходящСго Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°), совмСстности Ρ‚ΠΈΠΏΠΎΠ² (трСбования, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всякая ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠ³Π»Π° ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ экзСмплярам Ρ‚ΠΈΠΏΠΎΠ²-наслСдников).

[x]. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ наслСдник Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ Π½Π°Π±ΠΎΡ€ слуТб, прСдоставляСмых Π΅Π³ΠΎ родитСлями. Π’ частности, это ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ использования.

[x]. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ‚ΠΈΠΏΠΎΠ² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ наслСдником ΠΈ Π΅Π³ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ - это ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ "являСтся". Оно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΊΠ°ΠΊ для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования, Ρ‚Π°ΠΊ ΠΈ для Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΠΈ.

[x]. Π€ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚, Π½ΠΎ Π½Π΅ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

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

[x]. Для Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языков динамичСскоС связываниС ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ с ΠΌΠ°Π»Ρ‹ΠΌΠΈ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹ΠΌΠΈ расходами. БвязанныС с Π½ΠΈΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Π² частности, примСняСмоС компилятором статичСскоС связываниС ΠΈ подстановка ΠΊΠΎΠ΄Π°, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ОО-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π²Π·ΠΎΠΉΡ‚ΠΈ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ выполнСния Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

[x]. ΠžΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы содСрТат ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ (Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ) ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. Они ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ частичныС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ абстрактных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ….

[x]. Π‘ΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ эффСктивных ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ позволяСт ΠΏΡ€ΠΈΠΌΠΈΡ€ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ "классов повСдСния" ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС с Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΡŒΡŽ.

[x]. ΠžΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы ΡΠ²Π»ΡΡŽΡ‚ΡΡ основным срСдством, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ ОО-ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π½Π° стадиях Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ проСктирования.

[x]. УтвСрТдСния, примСняСмыС ΠΊ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ‚ΠΎΡ‡Π½ΠΎ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы.

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

БиблиографичСскиС замСчания

ΠŸΠΎΠ½ΡΡ‚ΠΈΡ (Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΎΠ³ΠΎ) наслСдования ΠΈ динамичСского связывания Π±Ρ‹Π»ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ‹ Π² языкС Π‘ΠΈΠΌΡƒΠ»Π° 67, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ссылки Π² Π»Π΅ΠΊΡ†ΠΈΠΈ 17 курса "ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ проСктирования". ΠžΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ - это Ρ‚ΠΎΠΆΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½ΠΈΠ΅ Π‘ΠΈΠΌΡƒΠ»Ρ‹ (ΠΏΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ (Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹) ΠΈ ΠΏΡ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΡΠΎΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡΡ…).