ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ связи ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ Π² 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… инструмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π³ΠΈΠ±ΠΊΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ взаимодСйствиСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π±Π΅Π· ТСсткой привязки ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ особСнно Π²Π°ΠΆΠ΅Π½ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ, ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° трСбуСтся Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, структура ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ. НапримСр, Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΊΠΎΠ΄ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ€Π°Π·Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ² β€” ΠΈ вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π² условии Если Π’ΠΈΠΏΠ—Π½Ρ‡(Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚) = Π’ΠΈΠΏ("Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΠ΅Π’ΠΎΠ²Π°Ρ€ΠΎΠ²") Π’ΠΎΠ³Π΄Π°..., ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ связь ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±Ρ‰ΠΈΠΉ интСрфСйс.

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ связь ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½Π° Π½ΡƒΠΆΠ½Π°

Бвязь ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ β€” это ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ динамичСски ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ² Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ (Π³Π΄Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ Π½Π° этапС компиляции), Π² 1Π‘ связь ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² runtime. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅:

  • πŸ”Ή ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Ссли ΠΎΠ½ΠΈ связаны ΠΏΠΎ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΠ΅Π’ΠΎΠ²Π°Ρ€ΠΎΠ² β†’ Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚)
  • πŸ”Ή ΠŸΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ/ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠ΅ "Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ" Ρ‚ΠΈΠΏ
  • πŸ”Ή Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π’ΠΈΠΏΠ—Π½Ρ‡() для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ совмСстимости Ρ‚ΠΈΠΏΠΎΠ² Π±Π΅Π· Тёсткого сравнСния

ОсновноС прСимущСство β€” Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с иСрархичСскими структурами. НапримСр, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, которая Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π»ΡŽΠ±Ρ‹ΠΌΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠ°ΠΊ Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈ Π² Π½Π΅Ρ‘ смогут ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΠ΅Π’ΠΎΠ²Π°Ρ€ΠΎΠ², РСализацияВоваров, ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅Π’ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ β€” всС ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ наслСдниками Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.

Но Π΅ΡΡ‚ΡŒ ΠΈ обратная сторона: связь ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ°ΡΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ошибки. НапримСр, Ссли Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅Ρ‚ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ Ρ‚ΠΈΠΏΠ΅, Π½ΠΎ ΠΎΠ½ Π΅ΡΡ‚ΡŒ Π² наслСдникС, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π½Π΅ выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ Π½Π° этапС написания ΠΊΠΎΠ΄Π°. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° проявится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ β€” ΠΈ Π½Π΅ всСгда Π² ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠΌ мСстС.

πŸ“Š Как часто Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ связь ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ Π² 1Π‘?
ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½ΠΎ, это основа ΠΌΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°
Иногда, для ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ
Рядом, Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽ явныС Ρ‚ΠΈΠΏΡ‹
Никогда нС использовал
НС знаю, Ρ‡Ρ‚ΠΎ это

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ иСрархия Ρ‚ΠΈΠΏΠΎΠ² Π² 1Π‘

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ связь ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ, Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘. ВсС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² Π΄Π΅Ρ€Π΅Π²ΠΎ наслСдования, Π³Π΄Π΅ Π΅ΡΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ (абстрактныС) Ρ‚ΠΈΠΏΡ‹ ΠΈ ΠΈΡ… наслСдники. НапримСр:

  • πŸ“Œ Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚ β€” Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ для всСх Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²
  • πŸ“Œ Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠžΠ±ΡŠΠ΅ΠΊΡ‚ β€” Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ для справочников
  • πŸ“Œ ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ΠžΠ±ΡŠΠ΅ΠΊΡ‚ β€” Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ для ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² (Π² Π½ΠΎΠ²Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹)
  • πŸ“Œ ΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ β€” ΠΎΠ±Ρ‰ΠΈΠΉ ΠΏΡ€Π΅Π΄ΠΎΠΊ для всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², управляСмых ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ

Когда Π²Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈΠ»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с Ρ‚ΠΈΠΏΠΎΠΌ Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚, Π² Π½Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ любой Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ β€” ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ всС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΡ‚ Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚. Аналогично Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ.

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ наслСдников Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎ связи
Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΠ΅Π’ΠΎΠ²Π°Ρ€ΠΎΠ², РСализацияВоваров, ΠžΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅Π’ΠΎΠ²Π°Ρ€ΠΎΠ² Π›ΡŽΠ±ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚
Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠžΠ±ΡŠΠ΅ΠΊΡ‚ НомСнклатура, ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚Ρ‹, Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ Π›ΡŽΠ±ΠΎΠΉ справочник совмСстим с Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠžΠ±ΡŠΠ΅ΠΊΡ‚
Π’Π°Π±Π»ΠΈΡ‡Π½Π°ΡΠ§Π°ΡΡ‚ΡŒ Π’Π°Π±Π»ΠΈΡ‡Π½Π°ΡΠ§Π°ΡΡ‚ΡŒ.Π’ΠΎΠ²Π°Ρ€Ρ‹, Π’Π°Π±Π»ΠΈΡ‡Π½Π°ΡΠ§Π°ΡΡ‚ΡŒ.Услуги Π›ΡŽΠ±Π°Ρ табличная Ρ‡Π°ΡΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°/справочника совмСстима с Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ
ΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€.ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΠ΅Π’ΠΎΠ²Π°Ρ€ΠΎΠ², Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€.НомСнклатура ВсС ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΎΡ‚ ΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ связь ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ΄Π½Ρƒ сторону: ΠΎΡ‚ наслСдника ΠΊ ΠΏΡ€Π΅Π΄ΠΊΡƒ. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΠ΅Π’ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚, Π½ΠΎ Π½Π΅ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ ошибкС:

Π”ΠΎΠΊ = Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹.ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΠ΅Π’ΠΎΠ²Π°Ρ€ΠΎΠ².Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒΠ”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚();

ΠžΠ±Ρ‰ΠΈΠΉΠ”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ = Π”ΠΎΠΊ; // Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚: ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΠ΅Π’ΠΎΠ²Π°Ρ€ΠΎΠ² β†’ Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚

Π”ΠΎΠΊ2 = ΠžΠ±Ρ‰ΠΈΠΉΠ”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚; // ΠžΠ¨Π˜Π‘ΠšΠ: Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ являСтся ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΠ΅Π’ΠΎΠ²Π°Ρ€ΠΎΠ²

πŸ’‘

Π§Ρ‚ΠΎΠ±Ρ‹ бСзопасно привСсти ΠΎΠ±Ρ‰ΠΈΠΉ Ρ‚ΠΈΠΏ ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Если Π’ΠΈΠΏΠ—Π½Ρ‡(ΠžΠ±Ρ‰ΠΈΠΉΠ”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚) = Π’ΠΈΠΏ("Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΠ΅Π’ΠΎΠ²Π°Ρ€ΠΎΠ²") Π’ΠΎΠ³Π΄Π° Π”ΠΎΠΊ2 = ΠžΠ±Ρ‰ΠΈΠΉΠ”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚;

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования связи ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ

Рассмотрим нСсколько Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… сцСнариСв, Π³Π΄Π΅ связь ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΊΠΎΠ΄ ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1: Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²

Допустим, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, ΠΏΡ€ΠΎΠ²Π΅Π΄Ρ‘Π½ Π»ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, нСзависимо ΠΎΡ‚ Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ°:

Ѐункция Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½(Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚) Экспорт

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½();

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Если ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΊΠ°ΠΊ Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚, Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚1 = Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½(Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹.ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΠ΅Π’ΠΎΠ²Π°Ρ€ΠΎΠ².ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠΠΎΠΌΠ΅Ρ€Ρƒ("0001"));

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚2 = Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½(Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹.РСализацияВоваров.ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠΠΎΠΌΠ΅Ρ€Ρƒ("0002"));

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2: Π Π°Π±ΠΎΡ‚Π° с Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ частями

Аналогичный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ с Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ частями. НапримСр, функция для добавлСния строки Π² Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ любого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒΠ’Π’Π°Π±Π»ΠΈΡ‡Π½ΡƒΡŽΠ§Π°ΡΡ‚ΡŒ(Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, Π˜ΠΌΡΠ’Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉΠ§Π°ΡΡ‚ΠΈ, Π”Π°Π½Π½Ρ‹Π΅) Экспорт

НоваяБтрока = Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚[Π˜ΠΌΡΠ’Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉΠ§Π°ΡΡ‚ΠΈ].Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ();

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡΠ‘Π²ΠΎΠΉΡΡ‚Π²(НоваяБтрока, Π”Π°Π½Π½Ρ‹Π΅);

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

Π—Π΄Π΅ΡΡŒ Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ, Π° Π˜ΠΌΡΠ’Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉΠ§Π°ΡΡ‚ΠΈ β€” ΠΈΠΌΠ΅Π½Π΅ΠΌ любой Π΅Π³ΠΎ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ части (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "Π’ΠΎΠ²Π°Ρ€Ρ‹" ΠΈΠ»ΠΈ "Услуги").

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3: ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π² 1Π‘

Бвязь ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ°. НапримСр, Ρƒ вас Π΅ΡΡ‚ΡŒ базовая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, Π½ΠΎ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π½ΡƒΠΆΠ½ΠΎ особоС ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΠ°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒΠ”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚(Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚) Экспорт

Если Π’ΠΈΠΏΠ—Π½Ρ‡(Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚) = Π’ΠΈΠΏ("Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π‘Ρ‡Π΅Ρ‚ΠΠ°ΠžΠΏΠ»Π°Ρ‚Ρƒ") Π’ΠΎΠ³Π΄Π°

ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒΠ‘Ρ‡Π΅Ρ‚Π°(Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚);

Π˜Π½Π°Ρ‡Π΅Π•ΡΠ»ΠΈ Π’ΠΈΠΏΠ—Π½Ρ‡(Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚) = Π’ΠΈΠΏ("Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.РСализацияВоваров") Π’ΠΎΠ³Π΄Π°

ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒΠ Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ(Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚);

Π˜Π½Π°Ρ‡Π΅

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ(); // Бтандартная ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ для ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

Π―Π²Π½ΠΎΠ΅ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π² сигнатурС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ|ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° совмСстимости Ρ‡Π΅Ρ€Π΅Π· Π’ΠΈΠΏΠ—Π½Ρ‡()|ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ для нСсовмСстимых Ρ‚ΠΈΠΏΠΎΠ²|Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π² коммСнтариях-->

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ

НСсмотря Π½Π° удобство, связь ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ часто становится источником Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΡƒΠ»ΠΎΠ²ΠΈΠΌΡ‹Ρ… Π±Π°Π³ΠΎΠ². Π’ΠΎΡ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространённыС ошибки:

1. НСявноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²

Если Π²Ρ‹ присваиваСтС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ нСсовмСстимого Ρ‚ΠΈΠΏΠ°, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π½Π΅ выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ сразу, Π½ΠΎ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ. НапримСр:

ΠŸΠ΅Ρ€Π΅ΠΌ Π”ΠΎΠΊ;

Π”ΠΎΠΊ = Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.НомСнклатура.ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡŽ("Π’ΠΎΠ²Π°Ρ€1"); // Ошибки Π½Π΅Ρ‚, Π½ΠΎ Π”ΠΎΠΊ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ справочник, Π° Π½Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚!

Π”ΠΎΠΊ.ΠŸΡ€ΠΎΠ²Π΅ΡΡ‚ΠΈ(); // ПадСниС: Ρƒ справочника Π½Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠŸΡ€ΠΎΠ²Π΅ΡΡ‚ΠΈ()

2. ΠŸΠΎΡ‚Π΅Ρ€Ρ спСцифичных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Ρ‡Π΅Ρ€Π΅Π· Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π²Ρ‹ тСряСтС доступ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ наслСдников. НапримСр, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ пСрСмСнная Ρ‚ΠΈΠΏΠ° Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚, Π²Ρ‹ Π½Π΅ смоТСтС Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ‘ΡƒΠΌΠΌΡƒΠΠ”Π‘(), Π΄Π°ΠΆΠ΅ Ссли Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚. РСшСниС β€” явноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²:

Если Π’ΠΈΠΏΠ—Π½Ρ‡(Π”ΠΎΠΊ) = Π’ΠΈΠΏ("Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΠ΅Π’ΠΎΠ²Π°Ρ€ΠΎΠ²") Π’ΠΎΠ³Π΄Π°

БуммаНДБ = Π”ΠΎΠΊ.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ‘ΡƒΠΌΠΌΡƒΠΠ”Π‘(); // Π’Π΅ΠΏΠ΅Ρ€ΡŒ доступно

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

3. Ошибки ΠΏΡ€ΠΈ сравнСнии Ρ‚ΠΈΠΏΠΎΠ²

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π’ΠΈΠΏΠ—Π½Ρ‡() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π° Π½Π΅ Π΅Π³ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ. НапримСр:

Π”ΠΎΠΊ = Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹.ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΠ΅Π’ΠΎΠ²Π°Ρ€ΠΎΠ².Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒΠ”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚();

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π’ΠΈΠΏΠ—Π½Ρ‡(Π”ΠΎΠΊ)); // Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚ "Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΠ΅Π’ΠΎΠ²Π°Ρ€ΠΎΠ²", Π° Π½Π΅ "Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚"

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π’ΠΈΠΏΠ—Π½Ρ‡Π‘Ρ‚Ρ€() с маской:

Если БтрНачинаСтсяБ(Π’ΠΈΠΏΠ—Π½Ρ‡Π‘Ρ‚Ρ€(Π”ΠΎΠΊ), "Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.") Π’ΠΎΠ³Π΄Π°

// Π”ΠΎΠΊ совмСстим с Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π’ΠΈΠΏΠ—Π½Ρ‡(Π”ΠΎΠΊ) = Π’ΠΈΠΏ("Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚") Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π›ΠΎΠΆΡŒ?

ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π’ΠΈΠΏΠ—Π½Ρ‡() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΠ΅Π’ΠΎΠ²Π°Ρ€ΠΎΠ²), Π° Π½Π΅ Π΅Π³ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс. Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ совмСстимости ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π’ΠΈΠΏΠ—Π½Ρ‡Π‘Ρ‚Ρ€() ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π’ΠΈΠ΄() (Π² Π½ΠΎΠ²Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹).

Бвязь ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ vs. явная типизация: ΠΊΠΎΠ³Π΄Π° Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

НС всСгда связь ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ β€” Π»ΡƒΡ‡ΡˆΠ΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях явная типизация Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π½Π°Π΄Ρ‘ΠΆΠ½Π΅Π΅ ΠΈ ΠΏΡ€ΠΎΡ‰Π΅ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ.

ΠšΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ Бвязь ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ Явная типизация
Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ βœ… Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π»ΡŽΠ±Ρ‹ΠΌΠΈ совмСстимыми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ❌ Волько с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ
Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ⚠️ Риск ошибок ΠΏΡ€ΠΈ нСявном ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠΈ βœ… Ошибки Π²Ρ‹ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π° этапС написания ΠΊΠΎΠ΄Π°
ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ⚠️ Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π² runtime βœ… ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ
ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΊΠΎΠ΄Π° ⚠️ Π‘Π»ΠΎΠΆΠ½Π΅Π΅ ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ ΠΈΠ·-Π·Π° динамичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ βœ… Π›Π΅Π³Ρ‡Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ

Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ связь ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ:

  • πŸ”§ Π’ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ…, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²
  • πŸ”§ ΠŸΡ€ΠΈ написании ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, Π³Π΄Π΅ структура Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ
  • πŸ”§ Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° "БтратСгия" ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ООП-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… конструкций

Когда Π»ΡƒΡ‡ΡˆΠ΅ явная типизация:

  • πŸ”§ Π’ критичСских участках ΠΊΠΎΠ΄Π°, Π³Π΄Π΅ Π²Π°ΠΆΠ½Π° Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΡΡ‚ΡŒ
  • πŸ”§ ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, Ρ‚ΠΈΠΏΡ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… извСстны Π·Π°Ρ€Π°Π½Π΅Π΅
  • πŸ”§ Π’ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ…, Π³Π΄Π΅ Π²Π°ΠΆΠ½Π° докумСнтация Ρ‚ΠΈΠΏΠΎΠ² для Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²
πŸ’‘

Бвязь ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ ΡƒΠ΄ΠΎΠ±Π½Π° для ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, Π½ΠΎ Ρ‡Ρ€Π΅Π²Π°Ρ‚Π° скрытыми ошибками. ВсСгда Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π² коммСнтариях ΠΈ добавляйтС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π² runtime.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ связи ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ Π² Ρ€Π°Π·Π½Ρ‹Ρ… вСрсиях 1Π‘

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ связи ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π» вмСстС с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ. Π’ старых вСрсиях (8.2 ΠΈ Π½ΠΈΠΆΠ΅) ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π» ΠΌΠ΅Π½Π΅Π΅ прСдсказуСмо, Π° Π² Π½ΠΎΠ²Ρ‹Ρ… (8.3.10+) появились Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ инструмСнты для контроля Ρ‚ΠΈΠΏΠΎΠ².

1Π‘ 8.2 ΠΈ Π½ΠΈΠΆΠ΅

Π’ этих вСрсиях связь ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ Π±Ρ‹Π»Π° Π±ΠΎΠ»Π΅Π΅ "Ρ€Π°Π·ΠΌΡ‹Ρ‚ΠΎΠΉ". НапримСр, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΌΠΎΠ³Π»Π° нСявно ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π² Π½ΠΎΠ²Ρ‹Ρ… вСрсиях это Π²Ρ‹Π·Π²Π°Π»ΠΎ Π±Ρ‹ ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π’Π°ΠΊΠΆΠ΅ отсутствовал ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π’ΠΈΠ΄(), Ρ‡Ρ‚ΠΎ услоТняло ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ совмСстимости Ρ‚ΠΈΠΏΠΎΠ².

1Π‘ 8.3 (Π΄ΠΎ 8.3.10)

Появилась Π±ΠΎΠ»Π΅Π΅ строгая ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ², Π½ΠΎ всё Π΅Ρ‰Ρ‘ ΠΎΡΡ‚Π°Π²Π°Π»ΠΈΡΡŒ "сСрыС Π·ΠΎΠ½Ρ‹". НапримСр, присваиваниС НСопрСдСлённоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с явным Ρ‚ΠΈΠΏΠΎΠΌ Π½Π΅ всСгда Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΎ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

1Π‘ 8.3.10 ΠΈ Π²Ρ‹ΡˆΠ΅

Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ возмоТности:

  • πŸ”Ή ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π’ΠΈΠ΄() для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ совмСстимости Ρ‚ΠΈΠΏΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Если Π’ΠΈΠ΄(Π”ΠΎΠΊ) = Π’ΠΈΠ΄(Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚) Π’ΠΎΠ³Π΄Π°)
  • πŸ”Ή Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π½Π°Ρ диагностика нСсовмСстимых ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ²
  • πŸ”Ή ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² (generics) Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сцСнариях
πŸ’‘

Π’ вСрсиях 8.3.10+ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ совмСстимости Ρ‚ΠΈΠΏΠΎΠ² Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π’ΠΈΠ΄() вмСсто Π’ΠΈΠΏΠ—Π½Ρ‡() β€” ΠΎΠ½ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ наслСдования.

Однако Π΄Π°ΠΆΠ΅ Π² Π½ΠΎΠ²Ρ‹Ρ… вСрсиях ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π½ΡŽΠ°Π½ΡΡ‹. НапримСр, связь ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ (Число, Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Π”Π°Ρ‚Π°), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ наслСдования.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠΎΠ΄Π° с использованиСм связи ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ

Π§Ρ‚ΠΎΠ±Ρ‹ связь ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° эффСктивно ΠΈ Π½Π΅ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΠ»Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, слСдуйтС этим рСкомСндациям:

1. ΠœΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π² Ρ†ΠΈΠΊΠ»Π°Ρ…

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΏΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²), вынСситС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Ρ†ΠΈΠΊΠ»Π° ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:

// ΠŸΠ»ΠΎΡ…ΠΎ: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠ° Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ

Для КаТдого Π”ΠΎΠΊ Из Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π¦ΠΈΠΊΠ»

Если Π’ΠΈΠΏΠ—Π½Ρ‡(Π”ΠΎΠΊ) = Π’ΠΈΠΏ("Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΠ΅Π’ΠΎΠ²Π°Ρ€ΠΎΠ²") Π’ΠΎΠ³Π΄Π°

// ...

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

// Π›ΡƒΡ‡ΡˆΠ΅: ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ

ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΡ = Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹.ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΠ΅Π’ΠΎΠ²Π°Ρ€ΠΎΠ².Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ();

Для КаТдого Π”ΠΎΠΊ Из ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΡ Π¦ΠΈΠΊΠ»

// Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с поступлСниями

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²

Если Π²Π°ΠΌ часто Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ, Π·Π°ΠΊΡΡˆΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π’ΠΈΠΏ() Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ:

Π’ΠΈΠΏΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΡ = Π’ΠΈΠΏ("Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΠ΅Π’ΠΎΠ²Π°Ρ€ΠΎΠ²");

Для КаТдого Π”ΠΎΠΊ Из Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π¦ΠΈΠΊΠ»

Если Π’ΠΈΠΏΠ—Π½Ρ‡(Π”ΠΎΠΊ) = Π’ΠΈΠΏΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΡ Π’ΠΎΠ³Π΄Π°

// ...

ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

3. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΡ… ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΉ наслСдования

Π§Π΅ΠΌ Π³Π»ΡƒΠ±ΠΆΠ΅ иСрархия Ρ‚ΠΈΠΏΠΎΠ², Ρ‚Π΅ΠΌ слоТнСС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ. Если Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° наслСдования ΠΈΠ· 5+ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ, рассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΅Ρ‘ упрощСния.

4. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Π΅ Ρ‚ΠΈΠΏΡ‹

ВсСгда ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΈΠΏΡ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ ваш ΠΊΠΎΠ΄:

// ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

// Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ - Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚ (совмСстимыС Ρ‚ΠΈΠΏΡ‹: ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΠ΅Π’ΠΎΠ²Π°Ρ€ΠΎΠ², РСализацияВоваров)

Ѐункция ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒΠ”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚(Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚) Экспорт

// ...

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

πŸ’‘

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ связи ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ сводится ΠΊ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ динамичСских ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ использованию статичСской ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΈΠΏΠ°Ρ….

FAQ: ЧастыС вопросы ΠΎ связи ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ Π² 1Π‘

МоТно Π»ΠΈ Ρ‡Π΅Ρ€Π΅Π· связь ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ справочник ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° "Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚"?

НСт, это ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ ошибкС. Бвязь ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ наслСдования. Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠžΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈ Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚ β€” это Ρ€Π°Π·Π½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ Π΄Π΅Ρ€Π΅Π²Π° Ρ‚ΠΈΠΏΠΎΠ², ΠΈ ΠΎΠ½ΠΈ Π½Π΅ совмСстимы ΠΌΠ΅ΠΆΠ΄Ρƒ собой.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Π’ΠΈΠΏΠ—Π½Ρ‡(ΠžΠ±ΡŠΠ΅ΠΊΡ‚) = Π’ΠΈΠΏ("Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚") возвращаСтся Π›ΠΎΠΆΡŒ, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ β€” Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚?

ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π’ΠΈΠΏΠ—Π½Ρ‡() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΠ΅Π’ΠΎΠ²Π°Ρ€ΠΎΠ²), Π° Π½Π΅ Π΅Π³ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс. Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ совмСстимости ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π’ΠΈΠΏΠ—Π½Ρ‡Π‘Ρ‚Ρ€() с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ Π½Π°Ρ‡Π°Π»Π° строки ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π’ΠΈΠ΄() (Π² Π½ΠΎΠ²Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹).

Как ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, Π»ΠΈΠ±ΠΎ справочник, Ссли ΠΎΠ½ΠΈ Π½Π΅ совмСстимы ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ?

Π’ этом случаС связь ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ:

  1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚ΠΈΠΏΠ° ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
  2. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΡƒ (структуру ΠΈΠ»ΠΈ класс), которая Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ Ρ‚ΠΈΠΏ, ΠΈ сам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.
  3. Π Π°Π·Π±ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π½Π° Π΄Π²Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅: ΠΎΠ΄Π½Π° для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², другая для справочников.

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΠΈ связь ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²?

Частично. Π’Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ) ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (Π’Π°Π±Π»ΠΈΡ†Π°Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°) Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ наслСдования, поэтому связь ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ ΠΊ Π½ΠΈΠΌ Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ°. Однако Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΉ интСрфСйс Ρ‡Π΅Ρ€Π΅Π· ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (Ссли Π½ΡƒΠΆΠ½Π° ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ).

МоТно Π»ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ Ρ‚ΠΈΠΏΠΎΠ² Π² 1Π‘ своими классами?

НСт, Π² стандартной ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ Π½Π΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° создания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… классов с наслСдованиСм. Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ Ρ‚ΠΈΠΏΠΎΠ² Тёстко Π·Π°Π΄Π°Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ. Однако Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Ρ‡Π΅Ρ€Π΅Π· структуры, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ»ΠΈ внСшниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹.