Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ абстракция простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹ абстракции ΠΈ интСрфСйсы

И Ρ‡Ρ‚ΠΎ это Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ‚Π°ΠΊΠΎΠ΅?

Как Π² старом Π°Π½Π΅ΠΊΠ΄ΠΎΡ‚Π΅: ΠΏΡ€ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ просто ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π»ΠΈΠ±ΠΎ слоТно ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. ΠœΡ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ аспСкт ООП просто.

Π—Π°Ρ‡Π΅ΠΌ это: ООП β€” ΠΎΠ΄Π½Π° ΠΈΠ· Π³Π»Π°Π²Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ соврСмСнной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Она ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ° Π½Π΅ ΠΊ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ языкам, это скорСС способ ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Если Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ ООП, ваш ΠΊΠΎΠ΄ Π½Π° любом языкС Π±ΡƒΠ΄Π΅Ρ‚ Ρ‡ΠΈΡ‰Π΅, Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠ΅Π΅ ΠΈ эффСктивнСС.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ Π΄Π²Π° слоТных понятия ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования: абстракции ΠΈ интСрфСйсы. Π­Ρ‚ΠΎ Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Π° ΡΡ‚ΡƒΠΏΠ΅Π½ΡŒ Π² ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ нСпостиТимого.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΈΠ΄Π΅ΠΈ ΠΈΠ· ООП

Абстракция

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ попросили Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΠΎΠ±Ρ‰ΠΈΡ… Ρ‡Π΅Ρ€Ρ‚Π°Ρ…, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ ΠΈ ΠΊΠ°ΠΊ ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ: ΠΏΡƒΡΡ‚ΡŒ это Π±ΡƒΠ΄ΡƒΡ‚ Π±Π°Π±ΡƒΡˆΠΊΠ°, ΠΌΠ°ΠΌΠ° ΠΈ ΠΏΠΎΠ΄Ρ€ΡƒΠ³Π°. Π‘Π°Π±ΡƒΡˆΠΊΠ° вспомнит ΠΏΡ€ΠΎ дисковыС Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Ρ‹ ΠΈ Ρ‚Ρ€ΡƒΠ±ΠΊΠΈ с Π²ΠΈΡ‚Ρ‹ΠΌ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΎΠΌ. Мама расскаТСт ΠΏΡ€ΠΎ Ρ€Π°Π΄ΠΈΠΎΡ‚Π΅Π»Π΅Ρ„ΠΎΠ½Ρ‹, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ Π±Π°Π·Π° ΠΈ Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΡƒΠ±ΠΊΠ°, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎ всСй ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Π΅, Π° ΠΏΠΎΠ΄Ρ€ΡƒΠ³Π° Π½Π°Ρ‡Π½Ρ‘Ρ‚ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ мобильник.

НСсмотря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ рассказы Π±ΡƒΠ΄ΡƒΡ‚ сильно ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ собой, Ρƒ Π½ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ нСсколько ΠΎΠ±Ρ‰ΠΈΡ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΎ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½:

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ссли ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ абстрактный Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½, Ρ‚ΠΎ получится Ρ‚Π°ΠΊΠΎΠ΅ устройство с Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠΎΠΌ, ΠΌΠΈΠΊΡ€ΠΎΡ„ΠΎΠ½ΠΎΠΌ ΠΈ срСдством Π½Π°Π±ΠΎΡ€Π° Π½ΠΎΠΌΠ΅Ρ€Π°.

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

🔥 Абстракция β€” это ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ сосрСдотачиваСмся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° сущСствСнных для Π·Π°Π΄Π°Ρ‡ΠΈ дСталях ΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅ΠΌ всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅. Π’ ООП абстракция ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌΡ‹ Π·Π°Π΄Π°Ρ‘ΠΌ минимальноС количСство ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΏΠΎΠ»Π΅ΠΉ ΠΈ описаний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ позволят Π½Π°ΠΌ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ. Π§Π΅ΠΌ мСньшС характСристик, Ρ‚Π΅ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ абстракция, Π½ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ характСристики ΡƒΠ±ΠΈΡ€Π°Ρ‚ΡŒ нСльзя.

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с абстракциями, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ интСрфСйсы.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ

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

Всё это β€” интСрфСйсы. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, Π½Π΅ вникая Π² Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ устроСн Π²Π½ΡƒΡ‚Ρ€ΠΈ. Если Π²Ρ‹ ΡƒΠΌΠ΅Π΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с интСрфСйсом номСронабиратСля, Ρ‚ΠΎ Π²Π°ΠΌ всё Ρ€Π°Π²Π½ΠΎ, Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈ ΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒ диск, Π½Π°ΠΆΠΈΠΌΠ°Ρ‚ΡŒ физичСскиС ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π° Ρ€Π°Π΄ΠΈΠΎΡ‚Ρ€ΡƒΠ±ΠΊΠ΅ ΠΈΠ»ΠΈ Π΄Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ°Π»ΡŒΡ†Π΅ΠΌ Π½Π° сСнсорный экран.

Π’Π°ΠΊΠΎΠΉ интСрфСйс ΠΊΠ°ΠΊ Π±Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π½Π°ΠΌ β€” я ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΌ Π² Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ Π»ΡŽΠ±Ρ‹Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹, ΠΊΠ°ΠΊΠΈΠ΅ Π·Π°Ρ…ΠΎΡ‡Π΅ΡˆΡŒ. Как я это сдСлаю Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ β€” Π½Π΅Π²Π°ΠΆΠ½ΠΎ, просто Π½Π°Π±Π΅Ρ€ΠΈ Π½ΠΎΠΌΠ΅Ρ€, Π° дальшС Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ сам разбСрётся.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ β€” это дСйствия Π½Π°Π΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, доступныС Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ (поэтому ΠΎΠ½ΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ).

Π•ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ инкапсулированныС, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. НапримСр, Ρƒ ΠΌΠΈΠΊΡ€ΠΎΡ„ΠΎΠ½Π° Π΅ΡΡ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Β«Π‘Π»ΡƒΡˆΠ°Ρ‚ΡŒ голос», ΠΈ Π΅ΡΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Β«ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ голос Π² элСктричСскиС сигналы». Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ½ взаимодСйствуСт с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ частями нашСго абстрактного Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°. ΠŸΡ€ΠΎ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΌΠ° большая.

БлоТная тСрминология

Π‘Ρ‚Ρ€ΠΎΠ³ΠΎ говоря, интСрфСйсы β€” это Π½Π΅ дСйствия, Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. БСйчас объясним.

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π΅ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ β€” это ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠ΅ дСйствия, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ.

Из простых дСйствий ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” это ΠΊΠΎΠ³Π΄Π° нСсколько ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Β«ΡΠΊΠ»Π΅ΠΈΠ²Π°ΡŽΡ‚ΡΡΒ» Π² Π½Π΅Ρ‡Ρ‚ΠΎ Π΅Π΄ΠΈΠ½ΠΎΠ΅. ΠœΡ‹ Π΄Π°Ρ‘ΠΌ этой склСйкС Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. НапримСр, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ функция Β«ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ элСктронного адрСса», которая состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… дСсятков простых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

На языкС ООП Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, привязанныС ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. ΠŸΡ€ΠΎΡΡ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½. По сути это Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ склССнныС вмСстС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π˜Ρ‚ΠΎΠ³ΠΎ: ΠΌΠ΅Ρ‚ΠΎΠ΄ β€” это Π½Π°Π±ΠΎΡ€ простых дСйствий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ склСили Π² Π΅Π΄ΠΈΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ ΠΈ засунули Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Для Ρ‡Π΅Π³ΠΎ это всё

Допустим, Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π½Π°Π΄ большим ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠΌ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° мноТСство ΠΌΠ΅Π»ΠΊΠΈΡ… ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ сСрвисов, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π΅ΡˆΠ°Π΅Ρ‚ свою ΡƒΠ·ΠΊΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ.

Если Π·Π°Ρ€Π°Π½Π΅Π΅ Π½Π΅ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒΡΡ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ эти ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ собой, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎ, ΠΎ Ρ‡Ρ‘ΠΌ ΠΌΡ‹ ΡƒΠΆΠ΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Π»ΠΈ:

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ, ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Ρ‚Π°ΠΊ:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

8) Абстракция Π΄Π°Π½Π½Ρ‹Ρ…

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ абстракция Π² ООП?

Абстракция β€” это Π²Ρ‹Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· большСго ΠΏΡƒΠ»Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Абстракция Β«ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Β» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ «скрываСт» Π½Π΅Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ программирования ΠΈ усилия. Π­Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· самых Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ ООП.

НаТмитС здСсь, Ссли Π²ΠΈΠ΄Π΅ΠΎ Π½Π΅ доступно

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ абстракции Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ банковскоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈ вас попросят ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ всю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ вашСм ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅. Π•ΡΡ‚ΡŒ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ абстракция простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ абстракция простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ абстракция простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ абстракция простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ абстракция простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Но Π½Π΅ вся Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Π°Ρ информация трСбуСтся для создания банковского прилоТСния.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· этого ΠΏΡƒΠ»Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для вашСго банковского прилоТСния. Π’Π°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠ°ΠΊ имя, адрСс, налоговая информация ΠΈ Ρ‚. Π”. Π˜ΠΌΠ΅ΡŽΡ‚ смысл для банковского прилоТСния

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ абстракция простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ абстракция простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ абстракция простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ абстракция простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ абстракция простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ ΠΈΠ·Π²Π»Π΅ΠΊΠ»ΠΈ / ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ / Π²Ρ‹Π±Ρ€Π°Π»ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ ΠΈΠ· большого ΠΏΡƒΠ»Π°, этот процСсс называСтся абстракциСй.

Однако ΠΎΠ΄Π½Π° ΠΈ Ρ‚Π° ΠΆΠ΅ информация послС извлСчСния ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована для ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ спСктра ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ для прилоТСния Π±ΠΎΠ»ΡŒΠ½ΠΈΡ†Ρ‹, прилоТСния ΠΏΠΎΡ€Ρ‚Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΏΡ€Π°Π²ΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²Π΅Π½Π½ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚. Π”. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½ становится вашими основными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π­Ρ‚ΠΎ прСимущСство абстракции.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ абстракция Π² Java?

Абстракция Π² JAVA Β«ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Β» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ «скрываСт» Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π’ Java абстракция выполняСтся с использованиСм абстрактных классов, абстрактных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ интСрфСйсов. Абстракция ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡ‚ΡŒ программирования.

Абстрактный класс

Класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ объявлСн «абстрактным», называСтся абстрактным классом. Он ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠ°ΠΊ абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‚Π°ΠΊ ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. ΠΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ класс Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ абстрактных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

Абстрактный ΠΌΠ΅Ρ‚ΠΎΠ΄

ΠœΠ΅Ρ‚ΠΎΠ΄ Π±Π΅Π· Ρ‚Π΅Π»Π° извСстСн ΠΊΠ°ΠΊ абстрактный ΠΌΠ΅Ρ‚ΠΎΠ΄. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ объявлСн Π² абстрактном классС. Абстрактный ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ абстрактный класс Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ всС абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

ΠŸΡ€Π°Π²ΠΈΠ»Π° абстрактного ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстракциСй ΠΈ инкапсуляциСй

Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡΠ˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ
Абстракция Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π΄ΠΈΠ·Π°ΠΉΠ½Π°.Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ это ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.
Абстракция β€” это сокрытиС Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ самой Π²Π°ΠΆΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ связываниС ΠΊΠΎΠ΄Π° ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π΅Π΄ΠΈΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ.
Абстракция позволяСт ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ скрытиС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΠ· сообраТСний бСзопасности.

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом

Абстрактный класс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠ°ΠΊ абстрактныС, Ρ‚Π°ΠΊ ΠΈ нСабстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

Он Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ мноТСствСнноС наслСдованиС.

Он ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ мноТСствСнноС наслСдованиС.

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ интСрфСйса.

Он Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ абстрактного класса.

Абстрактный класс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ ΠΈ абстрактныС ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

Абстрактный класс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ, ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈΠ»ΠΈ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с Π»ΡŽΠ±Ρ‹ΠΌ спСцификатором доступа.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ final.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° абстракции

Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ абстрактный класс?

АбстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² основном ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° Π΄Π²Π° ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ подклассов Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ Ρ‡Π΅Ρ€Π΅Π· Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Он Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ класс Abstract ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ абстрактных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

АбстрактныС классы ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ повСдСния ΠΈ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ классов ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования. Он Ρ‚Π°ΠΊΠΆΠ΅ описываСт подклассы, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ абстрактного класса.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ «абстракция» ΠΈ понятиС «объявлСниС»

Π£ мСня Π΅ΡΡ‚ΡŒ сомнСния насчСт примСнСния этих Π΄Π²ΡƒΡ… понятий Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅.
Π§Ρ‚ΠΎ Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅?

3 ΠΎΡ‚Π²Π΅Ρ‚Π° 3

Если Π·Π°ΠΉΡ‚ΠΈ Π½Π° Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΡŽ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ Абстракция Π΄Π°Π½Π½Ρ‹Ρ…, Π³Π΄Π΅ ΠΎΠ½ΠΎ опрСдСляСтся ΠΊΠ°ΠΊ

Абстра́кция Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ β€” это использованиС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅Ρ… характСристик ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ с достаточной Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π΅Π³ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΉ систСмС. Основная идСя состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ ΠΏΡ€ΠΈ этом с достаточной Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ для Ρ€Π΅ΡˆΠ°Π΅ΠΌΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ.

Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ ссылок Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ приводится ΡΡ‚Π°Ρ‚ΡŒΡ Π‘ΡŒΠ΅Ρ€Π½ Бтрауструп β€” Абстракция Π΄Π°Π½Π½Ρ‹Ρ… Π² языкС Π‘++, Π³Π΄Π΅ понятиС Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ рассматриваСтся Π² контСкстС C++ ΠΈ опрСдСляСтся ΠΊΠ°ΠΊ

Π€ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ идСя состоит Π² Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΈ нСсущСствСнных Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ характСристик сущСствСнных для для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Π΅Π΅ использования.

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ абстракция простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ абстракция простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ абстракция простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ абстракция простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ абстракция простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

ΠŸΠΎΠ³ΡƒΠ³Π»ΠΈΠ» толкования Π½Π° английском, ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… описаний:

Abstraction is one of the key concepts of object-oriented programming (OOP) languages. Its main goal is to handle complexity by hiding unnecessary details from the user.

Абстракция это ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… понятий Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ (ООП), Ρ‡ΡŒΡ‘ основноС Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ – ΠΏΠΎΠΌΠΎΠ³Π°Ρ‚ΡŒ ΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ со ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ скрывая Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Абстракция Ρ‚Π°ΠΊΠΆΠ΅ проявляСтся ΠΈ Π² наслСдовании с ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅/абстрактныС классы ΠΈΠ»ΠΈ интСрфСйсы, ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ Π»ΠΎΠ³ΠΈΠΊΡƒ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ зная ΠΈΡ… Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ООП: инкапсуляция, наслСдованиС, ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ

Contents

Абстракция [ ]

Абстра́кция β€” Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ это ΠΏΡ€ΠΈΠ΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ характСристик, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ Π΅Π³ΠΎ ΠΎΡ‚ всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‡Π΅Ρ‚ΠΊΠΎ опрСдСляя Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹. Основная идСя состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ способ использования составных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Π²ΠΈΠ΄Π΅ Π±ΠΎΠ»Π΅Π΅ простых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ абстракция раздСляСт способ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ Π΅Ρ‘ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ высокого уровня с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня.

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

Абстракция Π΄Π°Π½Π½Ρ‹Ρ… β€” популярная ΠΈ Π² ΠΎΠ±Ρ‰Π΅ΠΌ Π½Π΅Π²Π΅Ρ€Π½ΠΎ опрСдСляСмая Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° программирования. Π€ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ идСя состоит Π² Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΈ нСсущСствСнных Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ характСристик сущСствСнных для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Π΅Π΅ использования. Π’Π°ΠΊΠΎΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ «интСрфСйс», ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚Π°Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ описаниС всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ [1].

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ‚Π΅ΠΎΡ€ΠΈΠΈ мноТСств, процСсс прСдставляСт собой ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ для Π³Ρ€ΡƒΠΏΠΏΡ‹ подмноТСств своСго мноТСства. Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅ Π—Π°ΠΊΠΎΠ½ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ содСрТаниСм ΠΈ объСмом понятия.

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ [ ]

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ β€” свойство программирования, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π½Π΅ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎ слоТности Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° (Ρ‡Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ?), Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Π½ΠΈΠΌ посрСдством прСдоставляСмого интСрфСйса (ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ Ρ‡Π»Π΅Π½ΠΎΠ²), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΈ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎ Π²Π°ΠΆΠ½Ρ‹Π΅ для ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π΄Π°Π½Π½Ρ‹Π΅. ΠŸΡ€ΠΈ этом ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ прСдоставляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ спСцификация (интСрфСйс) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· этот интСрфСйс. РСализуСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова: public.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. РСализуСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов: private, protected, internal.))

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ… Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования (наряду с абстракциСй, ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ ΠΈ наслСдованиСм).

Π‘ΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ цСлСсообразно ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… случаях:

ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½Π°Ρ локализация ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ нСобходимости Ρ‚Π°ΠΊΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ,

ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (ΠΊΠ°ΠΊΠΈΠ΅ измСнСния Π² ΠΊΠΎΠ΄Π΅ Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ для Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ измСнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ) ΠΈ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ послСдствий ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

НаслСдованиС [ ]

НаслСдованиС β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ… Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования (наряду с инкапсуляциСй, ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ ΠΈ абстракциСй), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ класс Π½Π° основС ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ (Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ), ΠΏΡ€ΠΈ этом свойства ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса Π·Π°ΠΈΠΌΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹ΠΌ классом.

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, класс-наслСдник Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ класса (Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс). Π­Ρ‚ΠΎ позволяСт ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ класса-наслСдника Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса.

ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ наслСдованиС: [ ]

Класс, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ наслСдованиС, называСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ ΠΈΠ»ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ (Π°Π½Π³Π». base class). ΠšΠ»Π°ΡΡΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΈ ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°ΠΌΠΈ, наслСдниками ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌΠΈ классами (Π°Π½Π³Π». derived class).

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

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ наслСдованиС [ ]

ΠŸΡ€ΠΈ мноТСствСнном наслСдовании Ρƒ класса ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠ°. Π’ этом случаС класс наслСдуСт ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ всСх ΠΏΡ€Π΅Π΄ΠΊΠΎΠ². Достоинства Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π² большСй гибкости. ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ наслСдованиС Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² C++. Из Π΄Ρ€ΡƒΠ³ΠΈΡ… языков, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… эту Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Python ΠΈ Π­ΠΉΡ„Π΅Π»ΡŒ. ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ наслСдованиС поддСрТиваСтся Π² языкС UML.

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ наслСдованиС β€” ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ источник ошибок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΈΠ·-Π·Π° наличия ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΈΠΌΠ΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² ΠΏΡ€Π΅Π΄ΠΊΠ°Ρ…. Π’ языках, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ наслСдники C++ (Java, C# ΠΈ Π΄Ρ€.), ΠΎΡ‚ мноТСствСнного наслСдования Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ интСрфСйсов. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ всСгда ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· использования Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°. Однако, Ссли такая Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ всС-Ρ‚Π°ΠΊΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π°, Ρ‚ΠΎ, для Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² использования наслСдованных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ видимости β€” Β«::Β» β€” для Π²Ρ‹Π·ΠΎΠ²Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ родитСля.

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

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ соврСмСнных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языков программирования (C#, Java, Delphi ΠΈ Π΄Ρ€.) ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ класса-ΠΏΡ€Π΅Π΄ΠΊΠ° ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… интСрфСйсов ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ классом. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ позволяСт Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ мноТСствСнноС наслСдованиС β€” ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ интСрфСйсов Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ явно, Ρ‡Ρ‚ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ошибки ΠΏΡ€ΠΈ наслСдовании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… классов-ΠΏΡ€Π΅Π΄ΠΊΠΎΠ².

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ [ ]

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΜΠ·ΠΌ β€” Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ спСцификациСй ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ.

Π―Π·Ρ‹ΠΊ программирования ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ, Ссли классы с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ спСцификациСй ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, рСализация класса ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° Π² процСссС наслСдования[1].

ΠšΡ€Π°Ρ‚ΠΊΠΎ смысл ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ Ρ„Ρ€Π°Π·ΠΎΠΉ: «Один интСрфСйс, мноТСство Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉΒ».

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ… Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования (наряду с абстракциСй, инкапсуляциСй ΠΈ наслСдованиСм).

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ абстрактныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ коэффициСнт ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΊΠΎΠ΄Π°. ΠžΠ±Ρ‰ΠΈΠ΅ свойства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ Π² систСму, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ β€” интСрфСйс, класс. ΠžΠ±Ρ‰Π½ΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ внСшнСС ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

Π€ΠΎΡ€ΠΌΡ‹ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° [ ]

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

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ [ ]

Если ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ влияСт Π½Π° нашС восприятиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‚ΠΎ парамСтричСский ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ влияСт Π½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ родствСнных классов, откладывая объявлСниС Ρ‚ΠΈΠΏΠΎΠ² Π΄ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния. Для Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ написания ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° примСняСтся парамСтричСский ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ, ΠΏΡ€ΠΈ этом Ρ‚ΠΈΠΏ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹. [ ]

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

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Я нС знаю ООП

Π― Π½Π΅ ΡƒΠΌΠ΅ΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языках. НС научился. ПослС 5 Π»Π΅Ρ‚ ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΠ³ΠΎ программирования Π½Π° Java я всё Π΅Ρ‰Ρ‘ Π½Π΅ знаю, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΡƒΡŽ систСму Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ стилС. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π½Π΅ понимаю.

Π― пытался Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ, чСстно. Π― ΠΈΠ·ΡƒΡ‡Π°Π» ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹, Ρ‡ΠΈΡ‚Π°Π» ΠΊΠΎΠ΄ open source ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², пытался ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π² Π³ΠΎΠ»ΠΎΠ²Π΅ стройныС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, Π½ΠΎ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ понял ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ создания качСствСнных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΈΡ… понял, Π½ΠΎ Π½Π΅ я.

И Π²ΠΎΡ‚ нСсколько Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Ρƒ мСня Π½Π΅ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅.

Π― Π½Π΅ знаю, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ООП

Π‘Π΅Ρ€ΡŒΡ‘Π·Π½ΠΎ. МнС слоТно ΡΡ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ основныС ΠΈΠ΄Π΅ΠΈ ООП. Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· основных ΠΈΠ΄Π΅ΠΉ являСтся отсутствиС состояния. Π’ структурном β€” дСкомпозиция. Π’ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΌ β€” Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° Π² Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ. Π’ любой ΠΈΠ· этих ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌ Π΄ΠΎΠΌΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π½Π° 95% ΠΊΠΎΠ΄Π°, Π° язык спроСктирован Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΎΡ‰Ρ€ΡΡ‚ΡŒ ΠΈΡ… использованиС. Для ООП я Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ» Π½Π΅ знаю.

ΠŸΡ€ΠΈΠ½ΡΡ‚ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ строится Π½Π° 4 основных ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Ρ… (ΠΊΠΎΠ³Π΄Π° я Π±Ρ‹Π» ΠΌΠ°Π», ΠΈΡ… Π±Ρ‹Π»ΠΎ всСго 3, Π½ΠΎ вСдь Ρ‚ΠΎΠ³Π΄Π° ΠΈ Π΄Π΅Ρ€Π΅Π²ΡŒΡ Π±Ρ‹Π»ΠΈ большими). Π­Ρ‚ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹:

Абстракция β€” это ΠΌΠΎΡ‰Π½Π΅ΠΉΡˆΠ΅Π΅ срСдство программирования. ИмСнно Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ позволяСт Π½Π°ΠΌ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ большиС систСмы ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ Π½ΠΈΠΌΠΈ. Вряд Π»ΠΈ ΠΌΡ‹ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ подошли Π±Ρ‹ хотя Π±Ρ‹ Π±Π»ΠΈΠ·ΠΊΠΎ ΠΊ ΡΠ΅Π³ΠΎΠ΄Π½ΡΡˆΠ½Π΅ΠΌΡƒ ΡƒΡ€ΠΎΠ²Π½ΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Ссли Π±Ρ‹ Π½Π΅ Π±Ρ‹Π»ΠΈ Π²ΠΎΠΎΡ€ΡƒΠΆΠ΅Π½Ρ‹ Ρ‚Π°ΠΊΠΈΠΌ инструмСнтом. Однако ΠΊΠ°ΠΊ абстракция соотносится с ООП?

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

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, абстракции Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π±Ρ‹Π»ΠΈ всСгда, начиная с записСй Ады ЛавлСйс, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ принято ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π² истории программистом. Π‘ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ люди бСспСрСрывно создавали Π² своих ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… абстракции, Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ имСя для этого лишь ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠ΅ срСдства. Π’Π°ΠΊ, АбСльсон ΠΈ Бассман Π² своСй нСбСзызвСстной ΠΊΠ½ΠΈΠ³Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ систСму Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ комплСксных чисСл ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌΠΎΠ², имСя Π½Π° Π²ΠΎΠΎΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ связныС списки. Π’Π°ΠΊ ΠΊΠ°ΠΊΠΈΠ΅ ΠΆΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ срСдства абстрагирования нСсёт Π² сСбС ООП? ΠŸΠΎΠ½ΡΡ‚ΠΈΡ Π½Π΅ имСю. Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹? Π­Ρ‚ΠΎ ΡƒΠΌΠ΅Π΅Ρ‚ любой высокоуровнСвый язык. ОбъСдинСниС ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС? Для этого достаточно ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Випизация? Она Π±Ρ‹Π»Π° Π·Π°Π΄ΠΎΠ»Π³ΠΎ Π΄ΠΎ ООП. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ с систСмой Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ построСниС ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ абстракции Π½Π΅ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ зависит ΠΎΡ‚ срСдств языка, сколько ΠΎΡ‚ способностСй программиста.

Π“Π»Π°Π²Π½Ρ‹ΠΉ ΠΊΠΎΠ·Ρ‹Ρ€ΡŒ инкапсуляции Π² сокрытии Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΈΠΉ ΠΊΠΎΠ΄ Π²ΠΈΠ΄ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ интСрфСйс, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ развязываСт Ρ€ΡƒΠΊΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ. И это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΡ€ΡƒΡ‚ΠΎ. Но вопрос ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅ Π² Ρ‚ΠΎΠΌ, ΠΏΡ€ΠΈΡ‡Ρ‘ΠΌ Ρ‚ΡƒΡ‚ ООП? ВсС Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ сокрытиС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΡ Π½Π° C Π²Ρ‹ выдСляСтС интСрфСйс Π² header-Ρ„Π°ΠΉΠ»Ρ‹, Oberon позволяСт Π΄Π΅Π»Π°Ρ‚ΡŒ поля ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ для модуля, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, абстракция Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… языках строится просто посрСдствам ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ языки сами Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Π½Π°Ρ€ΡƒΡˆΠ°ΡŽΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ инкапсуляции, прСдоставляя доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Ρ‡Π΅Ρ€Π΅Π· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ β€” getters ΠΈ setters Π² Java, properties Π² C# ΠΈ Ρ‚.Π΄. (Π’ коммСнтариях выяснили, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² языках программирования Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ООП: data transfer objects ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π° пСрСнос Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ поэтому Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΌΠΈ сущностями ООП, ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, для Π½ΠΈΡ… Π½Π΅Ρ‚ нСобходимости ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ доступа Π»ΡƒΡ‡ΡˆΠ΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ для поддСрТания гибкости Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. Π’ΠΎΡ‚ Ρ‚Π°ΠΊ всё нСпросто.) Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ языки, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Python, Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ, Π° Ρ€Π°ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π° Ρ€Π°Π·ΡƒΠΌΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… этот ΠΊΠΎΠ΄.

НаслСдованиС β€” это ΠΎΠ΄Π½Π° ΠΈΠ· Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΡ… Π½ΠΎΠ²Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΡˆΠ»ΠΈ Π½Π° сцСну благодаря ООП. НСт, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ языки Π½Π΅ создали Π½ΠΎΠ²ΡƒΡŽ идСю β€” наслСдованиС Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π² любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ΅ β€” ΠΎΠ΄Π½Π°ΠΊΠΎ ООП Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π²Ρ‹Π²Π΅Π»ΠΎ эту ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ Π½Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ самого языка. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ ΠΈ ΠΏΠ»ΡŽΡΡ‹ наслСдования: ΠΊΠΎΠ³Π΄Π° вас ΠΏΠΎΡ‡Ρ‚ΠΈ устраиваСт ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ класс, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ° ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’ языках, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… мноТСствСнноС наслСдованиС, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ C++ ΠΈΠ»ΠΈ Scala (Π² послСднСй β€” Π·Π° счёт traits), появляСтся Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования β€” mixins, нСбольшиС классы, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Β«ΠΏΡ€ΠΈΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒΒ» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡƒ классу, Π½Π΅ копируя ΠΊΠΎΠ΄.

Π—Π½Π°Ρ‡ΠΈΡ‚, Π²ΠΎΡ‚ ΠΎΠ½ΠΎ β€” Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ выдСляСт ООП ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡƒ срСди Π΄Ρ€ΡƒΠ³ΠΈΡ…? Π₯мм… Ссли Ρ‚Π°ΠΊ, Ρ‚ΠΎ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΌΡ‹ Ρ‚Π°ΠΊ Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΅Π³ΠΎ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅? ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, я Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» ΠΏΡ€ΠΎ 95% ΠΊΠΎΠ΄Π°, ΠΏΠΎΠ΄Ρ‡ΠΈΠ½ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ Π΄ΠΎΠΌΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹? Π― вСдь Π½Π΅ ΡˆΡƒΡ‚ΠΈΠ». Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅ мСньшС 95% ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ нСизмСняСмыС Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±Π΅Π· side-эффСктов. Π’ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΌ практичСски вСсь ΠΊΠΎΠ΄ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ расфасован ΠΏΠΎ модулям. ΠŸΡ€Π΅Π²Π΅Ρ€ΠΆΠ΅Π½Ρ†Ρ‹ структурного программирования, слСдуя Π·Π°Π²Π΅Ρ‚Π°ΠΌ ДСйкстры, ΡΡ‚Π°Ρ€Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ всС части ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° нСбольшиС части. НаслСдованиС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Ρ€Π΅ΠΆΠ΅. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π² 10% ΠΊΠΎΠ΄Π°, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π² 50%, Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… случаях (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ наслСдовании ΠΎΡ‚ классов Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°) β€” Π² 70%, Π½ΠΎ Π½Π΅ большС. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ситуаций это просто Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, наслСдованиС опасно для Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π°. ΠΠ°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ опасно, Ρ‡Ρ‚ΠΎ Π‘Π°Π½Π΄Π° Π§Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… (казалось Π±Ρ‹, ΠΏΡ€ΠΎΠΏΠΎΠ²Π΅Π΄Π½ΠΈΠΊΠΈ ООП) Π² своСй ΠΊΠ½ΠΈΠ³Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ ΠΏΡ€ΠΈ возмоТности Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. НаслСдованиС Π² Ρ‚ΠΎΠΌ Π²ΠΈΠ΄Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΎ сущСствуСт Π² популярных Π½Ρ‹Π½Π΅ языках Π²Π΅Π΄Ρ‘Ρ‚ ΠΊ Ρ…Ρ€ΡƒΠΏΠΊΠΎΠΌΡƒ Π΄ΠΈΠ·Π°ΠΉΠ½Ρƒ. УнаслСдовавшись ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠ°, класс ΡƒΠΆΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ…. ИзмСнСниС ΠΏΡ€Π΅Π΄ΠΊΠ° Ρ‚Π°ΠΊ ΠΆΠ΅ становится опасным. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ private/protected, Π½ΠΎ ΠΈ ΠΎΠ½ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ нСслабых экстрасСнсорных способностСй для угадывания, ΠΊΠ°ΠΊ класс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ ΠΈ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ клиСнтский ΠΊΠΎΠ΄. НаслСдованиС Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ опасно ΠΈ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ (Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Spring ΠΈ EJB Π² Java) ΠΎΡ‚ΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ Π½ΠΈΡ…, пСрСходя Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅, Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ срСдства (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅). ΠŸΠΎΡΠ»Π΅Π΄ΡΡ‚Π²ΠΈΡ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ нСпрСдсказуСмы, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Guava) прописываСт своим классам ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, Π·Π°ΠΏΡ€Π΅Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ наслСдованиС, Π° Π² Π½ΠΎΠ²ΠΎΠΌ языкС Go Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ наслСдования.

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉ, ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ β€” это Π»ΡƒΡ‡ΡˆΠ΅Π΅, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Благодаря ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° Person ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ выглядит ΠΊΠ°ΠΊ Β«Π¨Π°Π½Π΄ΠΎΡ€ΠΊΠΈΠ½ Адам Π˜ΠΌΠΏΠΎΠ»ΠΈΡ‚ΠΎΠ²ΠΈΡ‡Β», Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° Point β€” ΠΊΠ°ΠΊ «[84.23 12.61]». ИмСнно ΠΎΠ½ позволяСт Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Β«Mat1 * Mat2Β» ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡŽ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… чисСл. Π‘Π΅Π· Π½Π΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Π±Ρ‹ ΠΈ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°, Π½Π΅ Π·Π°Π±ΠΎΡ‚ΡΡΡŒ ΠΎ Ρ‚ΠΎΠΌ, приходят ΠΎΠ½ΠΈ ΠΈΠ· сСти, Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ строки Π² памяти. Π’Π΅Π·Π΄Π΅, Π³Π΄Π΅ Π΅ΡΡ‚ΡŒ интСрфСйсы, подразумСваСтся ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ.

МнС ΠΏΡ€Π°Π²Π΄Π° нравится ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я Π΄Π°ΠΆΠ΅ Π½Π΅ стану Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… Π² мСйнстримовых языках. Π― Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠΌΠΎΠ»Ρ‡Ρƒ ΠΏΡ€ΠΎ ΡƒΠ·ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° диспСтчСризации Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ, ΠΈ ΠΏΡ€ΠΎ Ρ‚ΠΎ, ΠΊΠ°ΠΊ это ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹ Π±Ρ‹Ρ‚ΡŒ сдСлано. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ, Π° это ΡƒΠΆΠ΅ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ. Вопрос Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ: являСтся Π»ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Ρ‚Π΅ΠΌ самым ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠΌ, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠΌ ООП ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌ? Если Π±Ρ‹ Π²Ρ‹ спросили мСня (Π° Ρ€Π°Π· ΡƒΠΆ Π²Ρ‹ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ этот тСкст, Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ спросили), я Π±Ρ‹ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» Β«Π½Π΅Ρ‚Β». И ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° всё Π² Ρ‚Π΅Ρ… ΠΆΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°Ρ… использования Π² ΠΊΠΎΠ΄Π΅. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, интСрфСйсы ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Π°Ρ‰Π΅ наслСдования. Но сравнитС количСство строк ΠΊΠΎΠ΄Π°, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠ΅ ΠΈΠΌΠΈ, с количСством строк, написанных Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠΌ стилС β€” послСдних всСгда большС. Глядя Π½Π° языки, ΠΏΠΎΠΎΡ‰Ρ€ΡΡŽΡ‰ΠΈΠ΅ Ρ‚Π°ΠΊΠΎΠΉ ΡΡ‚ΠΈΠ»ΡŒ программирования, я Π½Π΅ ΠΌΠΎΠ³Ρƒ Π½Π°Π·Π²Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹ΠΌΠΈ. Π―Π·Ρ‹ΠΊΠΈ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° β€” Π΄Π°, Ρ‚Π°ΠΊ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ. Но Π½Π΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹Π΅ языки.

(Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, это ΠΌΠΎΡ‘ ΠΌΠ½Π΅Π½ΠΈΠ΅. Π’Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ ΡΠΎΠ³Π»Π°ΡΠΈΡ‚ΡŒΡΡ.)

Π˜Ρ‚Π°ΠΊ, абстракция, инкапсуляция, наслСдованиС ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ β€” всё это Π΅ΡΡ‚ΡŒ Π² ООП, Π½ΠΎ Π½ΠΈΡ‡Ρ‚ΠΎ ΠΈΠ· этого Π½Π΅ являСтся Π΅Π³ΠΎ Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΡ‹ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ. Π’ΠΎΠ³Π΄Π° Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ООП? Π•ΡΡ‚ΡŒ ΠΌΠ½Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΡΡƒΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования Π»Π΅ΠΆΠΈΡ‚ Π², собствСнно, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… (Π·Π²ΡƒΡ‡ΠΈΡ‚ Π²ΠΏΠΎΠ»Π½Π΅ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ) ΠΈ классах. ИмСнно идСя объСдинСния ΠΊΠΎΠ΄Π° ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΡ‹ΡΠ»ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ сущности Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π°. К этому мнСнию ΠΌΡ‹ Π΅Ρ‰Ρ‘ вСрнёмся, Π½ΠΎ для Π½Π°Ρ‡Π°Π»Π° расставим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π°Π΄ i.

Π§ΡŒΡ‘ ООП ΠΊΡ€ΡƒΡ‡Π΅?

Из ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ части Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ языки программирования ΠΌΠΎΠ³ΡƒΡ‚ сильно ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΏΠΎ способу Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования. Если Π²Π·ΡΡ‚ΡŒ ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ всСх Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ ООП Π²ΠΎ всСх языках, Ρ‚ΠΎ вСроятнСС всСго Π²Ρ‹ Π½Π΅ Π½Π°ΠΉΠ΄Ρ‘Ρ‚Π΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠ±Ρ‰Π΅ΠΉ для всСх Ρ‡Π΅Ρ€Ρ‚Ρ‹. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ этот Π·ΠΎΠΎΠΏΠ°Ρ€ΠΊ ΠΈ внСсти ΡΡΠ½ΠΎΡΡ‚ΡŒ Π² рассуТдСния, я ΠΎΡΡ‚Π°Π½ΠΎΠ²Π»ΡŽΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ β€” чисто ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ языки, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Java ΠΈ C#. Π’Π΅Ρ€ΠΌΠΈΠ½ «чисто ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉΒ» Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ язык Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹ ΠΈΠ»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΈΡ… Ρ‡Π΅Ρ€Π΅Π· всё Ρ‚ΠΎ ΠΆΠ΅ ООП. Python ΠΈΠ»ΠΈ Ruby, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅ Π±ΡƒΠ΄Ρƒ ΡΠ²Π»ΡΡ‚ΡŒΡΡ чистыми, Ρ‚.ΠΊ. Π²Ρ‹ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Π½ΠΈΡ… Π±Π΅Π· Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ объявлСния класса.

Π§Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΡΡƒΡ‚ΡŒ ООП Π² Java ΠΈ C#, пробСТимся ΠΏΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этой ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках.

Smalltalk. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ своих соврСмСнных ΠΊΠΎΠ»Π»Π΅Π³, этот язык ΠΈΠΌΠ΅Π» Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ использовал message-passing style для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ООП. ВмСсто Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ посылали Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ сообщСния, Π° Ссли ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ΠΌΠΎΠ³ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡˆΠ»ΠΎ, ΠΎΠ½ просто пСрСсылал сообщСниС ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Π΅Ρ‰Ρ‘.

Common Lisp. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ CL придСрТивался Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹. Π—Π°Ρ‚Π΅ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Ρ€Π΅ΡˆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ `(send obj ‘some-message)` β€” это слишком Π΄ΠΎΠ»Π³ΠΎ, ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π»ΠΈ Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ Π² Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° β€” `(some-method obj)`. На сСгодняшний дСнь Common Lisp ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·Π²ΠΈΡ‚ΡƒΡŽ систСму ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования (CLOS) с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ мноТСствСнного наслСдования, ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ мСтаклассов. ΠžΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‡Π΅Ρ€Ρ‚ΠΎΠΉ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ООП Π² CL крутится Π½Π΅ Π²ΠΎΠΊΡ€ΡƒΠ³ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π° Π²ΠΎΠΊΡ€ΡƒΠ³ ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Clojure. Clojure ΠΈΠΌΠ΅Π΅Ρ‚ Ρ†Π΅Π»Ρ‹Ρ… 2 систСмы ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования β€” ΠΎΠ΄Π½Ρƒ, ΡƒΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΎΡ‚ Java, ΠΈ Π²Ρ‚ΠΎΡ€ΡƒΡŽ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π½Π° ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΡ…ΠΎΠΆΡƒΡŽ Π½Π° CLOS.

R. Π­Ρ‚ΠΎΡ‚ язык для статистичСского Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ 2 систСмы ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования β€” S3 ΠΈ S4. ОбС унаслСдованы ΠΎΡ‚ языка S (Ρ‡Ρ‚ΠΎ Π½Π΅ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, учитывая, Ρ‡Ρ‚ΠΎ R β€” это open source рСализация коммСрчСского S). S4 ΠΏΠΎ большСй части соотвСствуСт рСализациям ООП Π² соврСмСнных мСйнстримовых языках. S3 являСтся Π±ΠΎΠ»Π΅Π΅ лСгковСсным Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ, элСмСнтарно Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ срСдствами самого языка: создаётся ΠΎΠ΄Π½Π° общая функция, Π΄ΠΈΡΠΏΠ΅Ρ‚Ρ‡Π΅Ρ€ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ запросы ΠΏΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ Β«classΒ» ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

JavaScript. По ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Smalltalk, хотя ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ синтаксис. ВмСсто наслСдования ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅: Ссли искомого свойства ΠΈΠ»ΠΈ Π²Ρ‹Π·Π²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² самом ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Π½Π΅Ρ‚, Ρ‚ΠΎ запрос пСрСдаётся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ-ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡƒ (свойство prototype всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² JavaScript). Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹ΠΌ являСтся Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² класса ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ, Π·Π°ΠΌΠ΅Π½ΠΈΠ² ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° (ΠΎΡ‡Π΅Π½ΡŒ красиво, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, выглядит Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° `.toBASE64` для класса строки).

Python. Π’ Ρ†Π΅Π»ΠΎΠΌ придСрТиваСтся Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΌΠ΅ΠΉΠ½cΡ‚Ρ€ΠΈΠΌΠΎΠ²Ρ‹Π΅ языки, Π½ΠΎ ΠΊΡ€ΠΎΠΌΠ΅ этого ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ поиска Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, ΠΊΠ°ΠΊ Π² JavaScript ΠΈΠ»ΠΈ Smalltalk.

Haskell. Π’ Haskell Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅Ρ‚ состояния, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, своСобразноС ООП Ρ‚Π°ΠΌ всё-Ρ‚Π°ΠΊΠΈ Π΅ΡΡ‚ΡŒ: Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… (types) ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ классам Ρ‚ΠΈΠΏΠΎΠ² (type classes). НапримСр, практичСски всС Ρ‚ΠΈΠΏΡ‹ Π² Haskell состоят Π² классС Eq (ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сравнСния 2-Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²), Π° всС числа Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² классах Num (ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ числами) ΠΈ Ord (ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ =, >). Π’ мСнстримовых языках Ρ‚ΠΈΠΏΠ°ΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ классы (Π΄Π°Π½Π½Ρ‹Ρ…), Π° классам Ρ‚ΠΈΠΏΠΎΠ² β€” интСрфСйсы.

Stateful ΠΈΠ»ΠΈ Stateless?

Но вСрнёмся ΠΊ Π±ΠΎΠ»Π΅Π΅ распространённым систСмам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования. Π§Π΅Π³ΠΎ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠΎΠ³ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‚Π°ΠΊ это ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ состояниСм. Π”ΠΎ изучСния ООП всё Π±Ρ‹Π»ΠΎ просто ΠΈ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ: Π΅ΡΡ‚ΡŒ структуры, хранящиС нСсколько связанных Π΄Π°Π½Π½Ρ‹Ρ…, Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ), ΠΈΡ… ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅. Π²Ρ‹Π³ΡƒΠ»ΡΡ‚ΡŒ(собаку), ΡΠ½ΡΡ‚ΡŒΡ(Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚, сумма). ΠŸΠΎΡ‚ΠΎΠΌ ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΈ это Π±Ρ‹Π»ΠΎ Ρ‚ΠΎΠΆΠ΅ Π½ΠΈΡ‡Π΅Π³ΠΎ (хотя Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ стало Π³ΠΎΡ€Π°Π·Π΄ΠΎ слоТнСй β€” моя собака Π²Ρ‹Π³ΡƒΠ»ΠΈΠ²Π°Π»Π° [ΠΊΠΎΠ³ΠΎ?], Π° Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ снимал дСньги [ΠΎΡ‚ΠΊΡƒΠ΄Π°?]). Π—Π°Ρ‚Π΅ΠΌ я ΡƒΠ·Π½Π°Π» ΠΏΡ€ΠΎ сокрытиС Π΄Π°Π½Π½Ρ‹Ρ…. Π― всё Π΅Ρ‰Ρ‘ ΠΌΠΎΠ³ Π²Ρ‹Π³ΡƒΠ»ΡΡ‚ΡŒ собаку, Π½ΠΎ Π²ΠΎΡ‚ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ состав Π΅Ρ‘ ΠΏΠΈΡ‰ΠΈ ΡƒΠΆΠ΅ Π½Π΅ ΠΌΠΎΠ³. ΠŸΠΈΡ‰Π° Π½Π΅ выполняла Π½ΠΈΠΊΠ°ΠΊΠΈΡ… дСйствий (Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΈΡ‰Π°.ΡΡŠΠ΅ΡΡ‚ΡŒ(собака), Π½ΠΎ я всё-Ρ‚Π°ΠΊΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ моя собака Π΅Π»Π° ΠΏΠΈΡ‰Ρƒ, Π° Π½Π΅ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚). ΠŸΠΈΡ‰Π° β€” это просто Π΄Π°Π½Π½Ρ‹Π΅, Π° ΠΌΠ½Π΅ (ΠΈ ΠΌΠΎΠ΅ΠΉ собакС) Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ просто ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½ΠΈΠΌ доступ. Всё просто. Но Π² Ρ€Π°ΠΌΠΊΠΈ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹ Π²Π»Π΅Π·Ρ‚ΡŒ Π±Ρ‹Π»ΠΎ ΡƒΠΆΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠ°ΠΊ Π² старыС дТинсы ΠΊΠΎΠ½Ρ†Π° 90-Ρ….

Ну Π»Π°Π΄Π½ΠΎ, Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ. ΠŸΠΎΠΉΠ΄Ρ‘ΠΌ Π½Π° этот малСнький самообман ΠΈ притворимся, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Ρƒ нас Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ скрыты. Π—Π°Ρ‚ΠΎ я Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ знаю, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ β€” это Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΡƒΠΆΠ΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΡ… ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅. Π― понял, ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊ Ρ‡Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

НС успСл я Π½Π°ΡΠ»Π°Π΄ΠΈΡ‚ΡŒΡΡ просвСтлСниСм, ΠΊΠ°ΠΊ ΡƒΠ²ΠΈΠ΄ΠΈΠ» Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°Ρ… слово stateless (Π³ΠΎΡ‚ΠΎΠ² ΠΏΠΎΠΊΠ»ΡΡΡ‚ΡŒΡΡ, ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΎ сияниСм, Π° Π½Π°Π΄ Π±ΡƒΠΊΠ²Π°ΠΌΠΈ t ΠΈ l висСл Π½ΠΈΠΌΠ±). ΠšΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π»ΠΎ чудСсный ΠΌΠΈΡ€ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния ΠΈ простой многопоточности Π±Π΅Π· нСобходимости ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠ½Π΅ сразу Π·Π°Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ ΠΏΡ€ΠΈΠΊΠΎΡΠ½ΡƒΡ‚ΡŒΡΡ ΠΊ этому чудСсному ΠΌΠΈΡ€Ρƒ. Однако это ΠΎΠ·Π½Π°Ρ‡Π°Π»ΠΎ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΎΡ‚ΠΊΠ°Π· ΠΎΡ‚ Π»ΡŽΠ±Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ» β€” Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π±Ρ‹Π»ΠΎ нСпонятно, слСдуСт Π»ΠΈ собакС самой сСбя Π²Ρ‹Π³ΡƒΠ»ΠΈΠ²Π°Ρ‚ΡŒ, ΠΈΠ»ΠΈ для этого Π½ΡƒΠΆΠ΅Π½ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π’Ρ‹Π³ΡƒΠ»ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€; Π½ΡƒΠΆΠ΅Π½ Π»ΠΈ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚, ΠΈΠ»ΠΈ со всСй Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ справится Π‘Π°Π½ΠΊ, Π° Ссли Ρ‚Π°ΠΊ, Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ½ ΡΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ дСньги статичСски ΠΈΠ»ΠΈ динамичСски ΠΈ Ρ‚.Π΄. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² использования возрасло ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ, ΠΈ всС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΌΠΎΠ³Π»ΠΈ привСсти ΠΊ нСобходимости ΡΠ΅Ρ€ΡŒΡ‘Π·Π½ΠΎΠ³ΠΎ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π°.

Π― Π΄ΠΎ сих ΠΏΠΎΡ€ Π½Π΅ знаю, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ слСдуСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ stateless, ΠΊΠΎΠ³Π΄Π° stateful, Π° ΠΊΠΎΠ³Π΄Π° просто ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. Иногда это ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Π½ΠΎ Ρ‡Π°Ρ‰Π΅ всСго Π½Π΅Ρ‚.

Випизация: статичСская ΠΈΠ»ΠΈ динамичСская?

Π•Ρ‰Π° ΠΎΠ΄Π½Π° Π²Π΅Ρ‰ΡŒ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ я Π½Π΅ ΠΌΠΎΠ³Ρƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊΠΈΡ… языков, ΠΊΠ°ΠΊ C# ΠΈ Java, это ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ½ΠΈ статичСски ΠΈΠ»ΠΈ динамичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ. НавСрноС Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ людСй воскликнСт Β«Π§Ρ‚ΠΎ Π·Π° Π³Π»ΡƒΠΏΠΎΡΡ‚ΡŒ! ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ статичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ! Π’ΠΈΠΏΡ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ Π²ΠΎ врСмя компиляции!Β». Но Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ всё Ρ‚Π°ΠΊ просто? ΠŸΡ€Π°Π²Π΄Π° Π»ΠΈ, Ρ‡Ρ‚ΠΎ программист, прописывая Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ‚ΠΈΠΏ X ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ Π² Π½Π΅Π³ΠΎ всСгда Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΈΠΏΠ° X? Π’Π΅Ρ€Π½ΠΎ β€” Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚, Ρ‚.ΠΊ. Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ X ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚ΠΈΠΏΠ° X ΠΈΠ»ΠΈ Π΅Π³ΠΎ наслСдника. Казалось Π±Ρ‹, Π½Ρƒ ΠΈ Ρ‡Ρ‚ΠΎ? НаслСдники класса X всё Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‡Ρ‚ΠΎ ΠΈ X. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, Π° Π²ΠΎΡ‚ Π»ΠΎΠ³ΠΈΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Π‘Π°ΠΌΡ‹ΠΉ распространённый случай, это ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс оказываСтся соптимизированным ΠΏΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π½ΡƒΠΆΠ΄Ρ‹, Ρ‡Π΅ΠΌ X, Π° наш ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° Ρ‚Ρƒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ (Ссли Π²Π°ΠΌ Ρ‚Π°ΠΊΠΎΠΉ сцСнарий каТСтся нСрСалистичным, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΊ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ€Π°Π·Π²ΠΈΡ‚ΠΎΠΉ open source Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ β€” Π»ΠΈΠ±ΠΎ Π²Ρ‹ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚Π΅ нСсколько нСдСль Π½Π° Ρ€Π°Π·Π±ΠΎΡ€ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π»ΠΈΠ±ΠΎ Π±ΡƒΠ΄Π΅Ρ‚Π΅ просто Π½Π°ΡƒΠ³Π°Π΄ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ с подходящСй сигнатурой). Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π° порядок. Π₯отя с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния компилятора всё ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ. ΠŸΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Scala, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ наслСдницСй Java, Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… мСстах ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, хотя это ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.

Другая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ null, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ практичСски вмСсто любого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² Java ΠΈ вмСсто любого Nullable ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² C#. null ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ сразу всСм Ρ‚ΠΈΠΏΠ°ΠΌ, ΠΈ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΌΡƒ. null Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈ ΠΏΠΎΠ»Π΅ΠΉ, Π½ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², поэтому любоС ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Π½Π΅ΠΌΡƒ (ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° null) ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкС. Π’Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ всС ΠΊ этому ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ, Π½ΠΎ для сравнСния Haskell (Π΄Π° ΠΈ Ρ‚Π° ΠΆΠ΅ Scala) Π·Π°ΡΡ‚Π°Π²Π»ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ (Maybe Π² Haskell, Option Π² Scala) для ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ null. Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΡ€ΠΎ Haskell часто говорят Β«ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Π½Ρ‘ΠΌ слоТно, Π½ΠΎ Ссли всё-Ρ‚Π°ΠΊΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ, Π·Π½Π°Ρ‡ΠΈΡ‚ скорСС всСго ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΒ».

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, мСйнстримовыС языки, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ динамичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠΌΠΈ свойствами, ΠΊΠ°ΠΊ простота интСрфСйсов ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€. Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² стилС Python ΠΈΠ»ΠΈ Lisp Ρ‚Π°ΠΊΠΆΠ΅ становится Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ.

Какая Ρ€Π°Π·Π½ΠΈΡ†Π°, ΠΊΠ°ΠΊ называСтся такая типизация, Ссли всС ΠΏΡ€Π°Π²ΠΈΠ»Π° всё Ρ€Π°Π²Π½ΠΎ извСстны? Π Π°Π·Π½ΠΈΡ†Π° Π² Ρ‚ΠΎΠΌ, с ΠΊΠ°ΠΊΠΎΠΉ стороны ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. БущСствуСт Π΄Π°Π²Π½ΠΈΠΉ спор, ΠΊΠ°ΠΊ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ систСму: Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠΎΠ² ΠΈ ΠΌΠ°Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈΠ»ΠΈ ΠΌΠ°Π»ΠΎ Ρ‚ΠΈΠΏΠΎΠ² ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ? ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Haskell, Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π² Lisp. Π’ соврСмСнных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языках ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ срСднСС. Π― Π½Π΅ Ρ…ΠΎΡ‡Ρƒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это ΠΏΠ»ΠΎΡ…ΠΎ β€” Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅ Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ свои ΠΏΠ»ΡŽΡΡ‹ (Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² Π½Π΅ стоит Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π·Π° Java ΠΈ C# стоят ΠΌΡƒΠ»ΡŒΡ‚ΠΈΡΠ·Ρ‹ΠΊΠΎΠ²Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹), Π½ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· приступая ΠΊ Π½ΠΎΠ²ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ я Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°ΡŽΡΡŒ, с Ρ‡Π΅Π³ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ проСктирования β€” с Ρ‚ΠΈΠΏΠΎΠ² ΠΈΠ»ΠΈ с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π°.

И Π΅Ρ‰Ρ‘.

Π― Π½Π΅ знаю, ΠΊΠ°ΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ. БчитаСтся, Ρ‡Ρ‚ΠΎ ООП позволяСт ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π°. Однако Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρƒ мСня Π΅ΡΡ‚ΡŒ собака (с двумя ΡƒΡˆΠ°ΠΌΠΈ, чСтырмя Π»Π°ΠΏΠ°ΠΌΠΈ ΠΈ ошСйником) ΠΈ счёт Π² Π±Π°Π½ΠΊΠ΅ (с ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ, ΠΊΠ»Π΅Ρ€ΠΊΠ°ΠΌΠΈ ΠΈ ΠΎΠ±Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π²ΠΎΠΌ), Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ β€” Π’Ρ‹Π³ΡƒΠ»ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€, БчётЀабрика… Π½Ρƒ, Π²Ρ‹ поняли. И Π΄Π΅Π»ΠΎ Π½Π΅ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΅ΡΡ‚ΡŒ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ классы, Π½Π΅ ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π°. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΊ управлСния измСняСтся. Π’Ρ‹Π³ΡƒΠ»ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ Π»ΠΈΡˆΠ°Π΅Ρ‚ мСня ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΡ ΠΎΡ‚ ΠΏΡ€ΠΎΠ³ΡƒΠ»ΠΊΠΈ с собакой, Π° дСньги я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ ΠΎΡ‚ Π±Π΅Π·Π΄ΡƒΡˆΠ½ΠΎΠ³ΠΎ Π‘Π°Π½ΠΊΠ‘Ρ‡Ρ‘Ρ‚Π° (эй, Π³Π΄Π΅ Ρ‚Π° милая Π΄Π΅Π²ΡƒΡˆΠΊΠ°, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ я мСнял дСньги Π½Π° ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ Π½Π΅Π΄Π΅Π»Π΅?).

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

Π― Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ знаю, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π». Π’ Python ΠΈΠ»ΠΈ C++, Ссли ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½Π° Π±Ρ‹Π»Π° малСнькая функция для прСобразования строки Π² число, я просто писал Π΅Ρ‘ Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ„Π°ΠΉΠ»Π°. Π’ Java ΠΈΠ»ΠΈ C# я Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½ Π²Ρ‹Π½ΠΎΡΠΈΡ‚ΡŒ Π΅Ρ‘ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ класс StringUtils. Π’ Π½Π΅Π΄ΠΎ-ОО-языках я ΠΌΠΎΠ³ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ad hoc ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΡƒ для Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Π΄Π²ΡƒΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (ΡΠ½ΡΡ‚ΡƒΡŽ сумму ΠΈ остаток Π½Π° счСту). Π’ ООП языках ΠΌΠ½Π΅ придётся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ класс Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. И для Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ (ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ мСня самого Ρ‡Π΅Ρ€Π΅Π· нСдСлю) этот класс Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ Π²Π°ΠΆΠ½Ρ‹ΠΌ ΠΈ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ систСмы. 150 Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΈ всС ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΈ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ β€” ΠΎ Π΄Π°, прозрачная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, прСкрасныС ΡƒΡ€ΠΎΠ²Π½ΠΈ абстракции.

Π― Π½Π΅ ΡƒΠΌΠ΅ΡŽ ΠΏΠΈΡΠ°Ρ‚ΡŒ эффСктивныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΌΠ°Π»ΠΎ памяти β€” ΠΈΠ½Π°Ρ‡Π΅ сборщик мусора Π±ΡƒΠ΄Π΅Ρ‚ постоянно Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Но Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языках приходится ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄ΡŽΠΆΠΈΠ½Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ HTTP запрос ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° URL, Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° HttpConnection, Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° Request… Π½Ρƒ, Π²Ρ‹ поняли. Π’ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ я Π±Ρ‹ просто Π²Ρ‹Π·Π²Π°Π» нСсколько ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, ΠΏΠ΅Ρ€Π΅Π΄Π°Π² ΠΈΠΌ ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ Π½Π° стСкС структуру. Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, Π² памяти Π±Ρ‹Π» Π±Ρ‹ создан всСго ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ β€” для хранСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Π’ ООП ΠΌΠ½Π΅ приходится Π·Π°ΡΠΎΡ€ΡΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ постоянно.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ООП β€” это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ красивая ΠΈ элСгантная ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, я просто нСдостаточно ΡƒΠΌΡ‘Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π΅Ρ‘. НавСрноС, Π΅ΡΡ‚ΡŒ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ, ΠΊΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΡ€Π°ΡΠΈΠ²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ языкС. Ну Ρ‡Ρ‚ΠΎ ΠΆ, ΠΌΠ½Π΅ остаётся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ·Π°Π²ΠΈΠ΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *