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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 9

Автор Π˜Ρ€ΠΈΠ½Π° Козлова

Π‘Π°ΠΌΠ° функция Π΄Π΅Π»Π°Π΅Ρ‚ ΠΌΠ°Π»ΠΎ. Π’ ΠΌΠ°Π½Π΅Ρ€Π΅, которая Ρ‚ΠΈΠΏΠΈΡ‡Π½Π° для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π±ΠΎΠ»Π΅Π΅ высокого уровня Π² Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…, ΠΎΠ½Π° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ для осущСствлСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π‘++ Π½Π΅ составляСт большого Ρ‚Ρ€ΡƒΠ΄Π°. Ѐункция ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок просто опрСдСляСт ошибки, ΠΏΠΈΡˆΠ΅Ρ‚ сообщСниС ΠΎΠ± ошибкС ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ:

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ производится ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ошибки Ρ‡Π°Ρ‰Π΅ всСго Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π² сСрСдинС вычислСния выраТСния, ΠΈ поэтому слСдуСт ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Ρ‚ΡŒ вычислСниС, ΠΈΠ»ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ привСсти ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ошибкам. Для ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π° большС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ послСднСС. Если Π±Ρ‹ gettoken() ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π»Π° Π½ΠΎΠΌΠ΅Ρ€Π° строк, Ρ‚ΠΎ error() сообщала Π±Ρ‹, Π³Π΄Π΅ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° ошибка. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Π±Ρ‹ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ примСнялся Π½Π΅ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ.

Когда всС части ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ связано с запуском. НапримСр:

ΠŸΡ€ΠΈΠ½ΡΡ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Ρ‡Ρ‚ΠΎ main() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ноль ΠΏΡ€ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π½Π΅ ноль Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, поэтому это прСкрасно осущСствляСт Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ числа ошибок.

34. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ„Π°ΠΉΠ»Ρ‹

ВсС нСэлСмСнтарныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя нСсколько Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π΅Π΄ΠΈΠ½ΠΈΡ† (ΠΈΡ… Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ просто Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ). ПокаТСм, ΠΊΠ°ΠΊ Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ ΠΊ Π΄Ρ€ΡƒΠ³Ρƒ.

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

ПокаТСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ΠΎΠΌ. Он Π±Ρ‹Π» прСдставлСн ΠΎΠ΄Π½ΠΈΠΌ исходным Ρ„Π°ΠΉΠ»ΠΎΠΌ. Если ΠΎΠ½ Π½Π°Π±ΠΈΡ‚, Ρ‚ΠΎ навСрняка Π±Ρ‹Π»ΠΈ трудности с Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ΠΌ описаний Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ порядкС ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎ мСньшСй ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄Π½ΠΎ Β«Ρ„Π°Π»ΡŒΡˆΠΈΠ²ΠΎΠ΅Β» описаниС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ компилятор ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π» Π²Π·Π°ΠΈΠΌΠ½ΠΎ рСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ expr(), term() ΠΈ prim(). ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ части (лСксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° синтаксичСского Ρ€Π°Π·Π±ΠΎΡ€Π°, Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΈΠΌΠ΅Π½ ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€), Π½ΠΎ это Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ Π±Ρ‹Π» написан ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. Π’Π°ΠΊ это Π½Π΅ дСлаСтся; Π΄Π°ΠΆΠ΅ Ссли Π² этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Β«Π½Π° выброс» ΠΏΡ€Π΅Π½Π΅Π±Ρ€Π΅Ρ‡ΡŒ всСми сообраТСниями ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ программирования, эксплуатации ΠΈ эффСктивности компиляции, слСдуСт Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² 200 строк Π½Π° нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Ρ‹Π»ΠΎ приятнСС.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ согласованной Π² смыслС примСнСния ΠΈΠΌΠ΅Π½ ΠΈ Ρ‚ΠΈΠΏΠΎΠ², Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая состоит ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ исходного Ρ„Π°ΠΉΠ»Π°. Π’ΠΎΠΎΠ±Ρ‰Π΅ это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ. ΠšΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ прСдставляСт собой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая стыкуСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ скомпилированныС части вмСстС. ΠšΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ часто ΠΈΠΌΠ΅Π½ΡƒΡŽΡ‚ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠΌ. Π’ иМΠ₯'Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ имСнуСтся Id. Но ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ систСм, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ ΡΠ»Π°Π±ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ согласованности.

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

Если ΠΎΠ³ΠΎΠ²ΠΎΡ€Π΅Π½ΠΎ ΠΈΠ½ΠΎΠ΅, Ρ‚ΠΎ имя, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ являСтся Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ класса, Π² любой части ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π½Π΅Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, функция ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ.

35. ΠšΠ»Π°ΡΡΡ‹

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

Π’ΠΈΠΏ являСтся ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ прСдставлСниСм Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉΡΡ Π² C++ Ρ‚ΠΈΠΏ float с Π΅Π³ΠΎ опСрациями +, β€”, * ΠΈ Ρ‚. Π΄. обСспСчиваСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΡƒΡŽ, Π½ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ матСматичСского понятия Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ числа. Новый Ρ‚ΠΈΠΏ образуСтся для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ описаниС понятия, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π½ΠΈΡ‡Ρ‚ΠΎ прямо ΠΈ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ срСди встроСнных Ρ‚ΠΈΠΏΠΎΠ² Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚.

К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΉ с Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ trunkmodule (элСмСнт Π»ΠΈΠ½ΠΈΠΈ), Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкстов – Ρ‚ΠΈΠΏ listofpa-ragraphs (список ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„ΠΎΠ²). ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΈΠΏΡ‹, Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ понятиям прилоТСния, ΠΏΠΎΠ½ΡΡ‚ΡŒ Π»Π΅Π³Ρ‡Π΅, Ρ‡Π΅ΠΌ Ρ‚Ρƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ это Π½Π΅ происходит. Π₯ΠΎΡ€ΠΎΡˆΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π°Π²Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π΄Π΅Π»Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅Ρ‚ΠΊΠΎΠΉ ΠΈ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ компилятору ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ нСдопустимыС примСнСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС останутся Π½Π΅Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΌΠΈ Π΄ΠΎ тСстирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° основной ΠΈΠ΄Π΅Π΅ΠΉ являСтся ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ нСсущСствСнныС подробности Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ для хранСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚ΠΈΠΏΠ°) ΠΎΡ‚ качСств, сущСствСнных для Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ использования. ПодобноС Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° со структурой Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ административными ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ производится Ρ‡Π΅Ρ€Π΅Π· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс.

Класс прСдставляСт собой опрСдСляСмый ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ‚ΠΈΠΏ. Π”Π°Π½Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» Π·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ с основными срСдствами опрСдСлСния класса, создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса, Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, уничтоТСния Ρ‚Π°ΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² послС использования.

Π―Π²Π½ΠΎΠΉ связи ΠΌΠ΅ΠΆΠ΄Ρƒ функциями ΠΈ Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ сущСствуСт. Π’Π°ΠΊΡƒΡŽ связь ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, описав Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°ΠΊ Ρ‡Π»Π΅Π½Ρ‹:

struct date {

int month, day, year;

void set(int, int, int); void get(int*, int*, int*); void next(); void print(); };

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, описанныС Π΄Π°Π½Π½Ρ‹ΠΌ способом, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ функциями-Ρ‡Π»Π΅Π½Π°ΠΌΠΈ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ стандартного синтаксиса для доступа ΠΊ Ρ‡Π»Π΅Π½Π°ΠΌ структуры.

36. ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ

Часто ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Π΅Π»ΠΎ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ прСдставлСниями абстрактных понятий. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… int Π² C++ вмСстС с опСрациями +, β€”, *, / ΠΈ Ρ‚. Π΄. являСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ матСматичСского понятия Ρ†Π΅Π»Ρ‹Ρ… чисСл. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ понятия Ρ‡Π°Ρ‰Π΅ всСго Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя мноТСство ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΡ€Π°Ρ‚ΠΊΠΎ, ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ основныС дСйствия Π½Π°Π΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. Π―Π·Ρ‹ΠΊ программирования ΠΌΠΎΠΆΠ΅Ρ‚ нСпосрСдствСнно ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎΠ΅ количСство Ρ‚Π°ΠΊΠΈΡ… понятий. НапримСр, понятия, комплСксная Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠ°, матричная Π°Π»Π³Π΅Π±Ρ€Π°, логичСскиС сигналы ΠΈ строки Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ прямой ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π² C++. ΠšΠ»Π°ΡΡΡ‹ Π΄Π°ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ спСцификации Π² C++ прСдставлСния нСэлСмСнтарных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с мноТСством дСйствий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π°Π΄ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. Часто ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ классов, Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΡƒΡŽ запись для манипуляции ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ классов, Ρ‡Π΅ΠΌ Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, примСняя Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΡƒΡŽ запись.

К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ:

class complex {

double re, im;

public:

complex(double r, double i) { re=r; im=i; }

friend complex operator+(complex, complex);

friend complex operator*(complex, complex);

};

Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ просто ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ понятиС комплСксного числа, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ число являСтся ΠΏΠ°Ρ€ΠΎΠΉ чисСл с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ точности, Ρ€Π°Π±ΠΎΡ‚Π° с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ производится опСрациями + ΠΈ *. Π§Π΅Π»ΠΎΠ²Π΅ΠΊ опрСдСляСт смысл ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ + ΠΈ * с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ operator+ ΠΈ operator*. Если, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΈΠΌΠ΅Π΅ΠΌ b ΠΈ c Ρ‚ΠΈΠΏΠ° complex, Ρ‚ΠΎ b+c Π·Π½Π°Ρ‡ΠΈΡ‚ (ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ) operator+(b,c). Π’Π΅ΠΏΠ΅Ρ€ΡŒ сущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ комплСксных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ:

void f()

{

complex a = complex(1, 3.1);

complex b = complex(1.2, 2);

complex c = b;

a = b+c;

b = b+c*a;

c = a*b+complex(1,2);

}

37. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ классы

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ классы ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ простой ΠΈ эффСктивный Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚ задания для класса Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ интСрфСйса ΠΈ установлСния класса ΠΏΡƒΡ‚Π΅ΠΌ добавлСния возмоТностСй ΠΊ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ классу Π±Π΅Π· пСрСпрограммирования ΠΈΠ»ΠΈ пСрСкомпиляции. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классов Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΉ интСрфСйс для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… классов Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ части ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ этих классов ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. ΠŸΡ€ΠΈ этом Ρ‡Π°Ρ‰Π΅ всСго Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ закладываСтся информация ΠΎ Ρ‚ΠΈΠΏΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² ситуациях, ΠΊΠΎΠ³Π΄Π° ΠΈΡ… Ρ‚ΠΈΠΏ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π²ΠΎ врСмя компиляции. Для простой ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Π°ΠΊΠΈΡ… динамичСских зависимостСй Ρ‚ΠΈΠΏΠΎΠ² вводится понятиС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. По сути, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ классы ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΡƒ общности.