ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ это

Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Автор Dmitry dziuba Π·Π°Π΄Π°Π» вопрос Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π”Ρ€ΡƒΠ³ΠΈΠ΅ языки ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

Π§Π΅ΠΌ отличаСтся имплСмСнтация ΠΎΡ‚ наслСдования? =) ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π§Π΅ΠΌ отличаСтся имплСмСнтация ΠΎΡ‚ наслСдования? ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‚

ΠžΡ‚Π²Π΅Ρ‚ ΠΎΡ‚ Π˜Ρ€ΠΈΠ½Π° Π’[Π³ΡƒΡ€Ρƒ]
Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ: это рСализация ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Ρ‚Π΅. Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ фактичСски Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² классС. А наслСдованиС, это созданиС Π½ΠΎΠ²ΠΎΠ³ΠΎ класса Π½Π° основС старого, ΠΏΡ€ΠΈ этом рСализация ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ, ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса.
Но Ρ‡Π°Ρ‰Π΅, слово имплСмСнтация ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‚ для интСрфСйсов: это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ интСрфСйс, ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΈ свойства.

Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ (ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ
ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ слова «имплСмСнтация» извСстно Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ числу людСй, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ, ΠΏΠΎ сути, ΠΎΠ½ΠΎ являСтся ΡŽΡ€ΠΈΠ΄ΠΈΡ‡Π΅ΡΠΊΠΈΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠΌ. Однако всС Ρ‡Π°Ρ‰Π΅ ΠΎΠ½ΠΎ Π·Π²ΡƒΡ‡ΠΈΡ‚ Π² БМИ Π² связи с освСщСниСм Ρ‚Π΅Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹Ρ… событий. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ имплСмСнтация, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ интСрСсуСтся Ρ‚Π°ΠΊΠΈΠΌΠΈ новостями, Ρ…ΠΎΡ‡Π΅Ρ‚ Π³Π»ΡƒΠ±ΠΆΠ΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² Ρ‚Π΅ΠΌΠ΅.

ΠžΠ±Ρ‰Π΅Π΅ понятиС

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ слова «имплСмСнтация», для Π½Π°Ρ‡Π°Π»Π° Π΄Π°Π΄ΠΈΠΌ Π΅Π³ΠΎ ΠΎΠ±Ρ‰Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€Π°Π²Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ ΠΎΡ‚ английского ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ implementation, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅Π³ΠΎ Β«Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, осущСствлСниС». Под Π½ΠΈΠΌ понимаСтся процСсс Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π², взятых Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ страной Π½Π° внутригосударствСнном ΡƒΡ€ΠΎΠ²Π½Π΅.

ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. 2799695. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„ΠΎΡ‚ΠΎ. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ-2799695. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 2799695. Автор Dmitry dziuba Π·Π°Π΄Π°Π» вопрос Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π”Ρ€ΡƒΠ³ΠΈΠ΅ языки ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

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

Π’Ρ€ΠΈ способа

ΠŸΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ «имплСмСнтация», ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ способов Π΅Π΅ осущСствлСния.

К Ρ‚Π°ΠΊΠΈΠΌ способам относят:

ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. 2799697. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„ΠΎΡ‚ΠΎ. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ-2799697. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 2799697. Автор Dmitry dziuba Π·Π°Π΄Π°Π» вопрос Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π”Ρ€ΡƒΠ³ΠΈΠ΅ языки ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

ΠžΡΡƒΡ‰Π΅ΡΡ‚Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΡ€ΠΌ, установлСнных ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹ΠΌ ΠΏΡ€Π°Π²ΠΎΠΌ, обСспСчиваСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΎΠ²Ρ‹Ρ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ². Π‘Ρ€Π΅Π΄ΠΈ Π½ΠΈΡ… присутствуСт Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎ- ΠΈ Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ-ΠΏΡ€Π°Π²ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² внСдрСния Π½ΠΎΡ€ΠΌ. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ ΡƒΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ слова «имплСмСнтация», рассмотрим ΠΈΡ….

ΠœΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎ-ΠΏΡ€Π°Π²ΠΎΠ²ΠΎΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ

Он прСдставляСт собой комплСкс ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹Ρ… срСдств, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ входят:

ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. 2799696. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„ΠΎΡ‚ΠΎ. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ-2799696. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 2799696. Автор Dmitry dziuba Π·Π°Π΄Π°Π» вопрос Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π”Ρ€ΡƒΠ³ΠΈΠ΅ языки ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

Π’ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ изучСния вопроса ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ слова «имплСмСнтация» рассмотрим Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ.

ΠΠ°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ-ΠΏΡ€Π°Π²ΠΎΠ²ΠΎΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ

Π’ Π½Π΅Π³ΠΎ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ внутригосударствСнных срСдств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ·Π²Π°Π½Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π½ΠΎΡ€ΠΌ МП. К Π½ΠΈΠΌ относятся:

НС ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ (ΠΈ Π΅ΡΡ‚ΡŒ Π»ΠΈ ΠΎΠ½Π°) тонкая Π³Ρ€Π°Π½ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ связСй Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ классов UML:

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ UML ΠΊΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ этого вопроса я понимаю ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

β€” связь generalization Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ классами, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ класс (наслСдник) основываСтся Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ классС (Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅). Будя ΠΏΠΎ всСму, здСсь Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ классом (Ρ‚.Π΅. ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ экзСмпляры).

β€” связь realization Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ элСмСнтами Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ классов, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ класс Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, опрСдСляСмоС Π΄Ρ€ΡƒΠ³ΠΈΠΌ классом. Π‘ΠΊΠΎΡ€Π΅Π΅ всСго здСсь Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ повСдСния, опрСдСляСмого интСрфСйсом ΠΈΠ»ΠΈ абстрактным классом.

β€” связь implementation β€” это ΠΏΠΎΠ΄Ρ‚ΠΈΠΏ связи realization. Будя ΠΏΠΎ всСму, Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ½Ρ†Π΅ связи β€” ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ класс, Π° Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ β€” интСрфСйс (interface Π² Java, чисто Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ класс Π² C++).

Вопрос ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ: насколько Π²Π΅Ρ€Π½Π° моя Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²ΠΊΠ° спСцификации?
Вопрос Π²Ρ‚ΠΎΡ€ΠΎΠΉ: ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ realization ΠΏΠΎΠ΄Ρ‚ΠΈΠΏΠΎΠΌ связи generalization?
Вопрос Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ: Ссли язык ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ мноТСствСнноС наслСдованиС (C++ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€) ΠΈ класс наслСдуСтся ΠΎΡ‚ Π΄Π²ΡƒΡ… ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… классов β€” какая Π² Ρ‚Π°ΠΊΠΎΠΌ случаС связь ΠΌΠ΅ΠΆΠ΄Ρƒ наслСдником ΠΈ супСрклассами?

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

Вопрос Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ: ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ случаС наслСдованиС ΠΎΡ‚ абстрактного класса ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ связь generalization, Π° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ случаС β€” realization.

ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. a58783a944a78eeff710f8cdb343d62c. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„ΠΎΡ‚ΠΎ. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ-a58783a944a78eeff710f8cdb343d62c. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° a58783a944a78eeff710f8cdb343d62c. Автор Dmitry dziuba Π·Π°Π΄Π°Π» вопрос Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π”Ρ€ΡƒΠ³ΠΈΠ΅ языки ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

Π’Ρ€Π°ΠΊΡ‚ΠΎΠ²ΠΊΠ° Π½Π΅ совсСм Π²Π΅Ρ€Π½Π°, я сСйчас ΠΈΠ·Π»ΠΎΠΆΡƒ своС ΠΌΠ½Π΅Π½ΠΈΠ΅, Π° ΡƒΠΆ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ наши взгляды Π·Π°Π΄Π°Ρ‡Π° Π½Π΅ ΠΈΠ· простых)) Основная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ понятий Π² UML ΠΈ ООП.

Π’ Ρ†Π΅Π»ΠΎΠΌ ΠΏΠΎ опрСдСлСниям: Π‘ΠΎ стороны ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ класса ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚: интСрфСйс (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ состоит ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², свойств ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… языковых ΡˆΡ‚ΡƒΠΊ) ΠΈ абстракция (это Π½Π΅ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ подразумСваСтся ΠΏΡ€ΠΈ взаимодСйствии с Π΅Π³ΠΎ интСрфСйсом).

Generalization. Когда Ρƒ классов совпадаСт ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, получаСтся ΠΌΠΎΠΆΠ½ΠΎ свСсти ΠΈΡ… интСрфСйсы ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΌΡƒ β€” ΠΎΠ±ΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° обобщСния ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ сходство Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ аспСкта повСдСния ΠΈ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ сходство интСрфСйса.

Realization. Когда Ρ‡Π°ΡΡ‚ΡŒ повСдСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° выносится Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ класс β€” это называСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠ΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Π½ΠΎ UML ΠΏΠΎΡ…ΠΎΠΆΠ΅ считаСт ΠΈΠ½Π°Ρ‡Π΅.

Implementation. Π’ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ UML это ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π½Π΅ΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π° составныС части. Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ этот Ρ‚Π΅Ρ€ΠΌΠΈΠ½ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ совсСм другоС…

ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. a58783a944a78eeff710f8cdb343d62c. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„ΠΎΡ‚ΠΎ. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ-a58783a944a78eeff710f8cdb343d62c. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° a58783a944a78eeff710f8cdb343d62c. Автор Dmitry dziuba Π·Π°Π΄Π°Π» вопрос Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π”Ρ€ΡƒΠ³ΠΈΠ΅ языки ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. 47e418e2aa17072364777060ccbb7e07. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„ΠΎΡ‚ΠΎ. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ-47e418e2aa17072364777060ccbb7e07. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 47e418e2aa17072364777060ccbb7e07. Автор Dmitry dziuba Π·Π°Π΄Π°Π» вопрос Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π”Ρ€ΡƒΠ³ΠΈΠ΅ языки ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ сходство интСрфСйса Π² Generalization Π·Π²ΡƒΡ‡ΠΈΡ‚ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π° Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡ‡Π΅Π½ΡŒ хочСтся Π² это Π²Π΅Ρ€ΠΈΡ‚ΡŒ. Но напрягаСт ΠΌΠΎΠΌΠ΅Π½Ρ‚, Ρ‡Ρ‚ΠΎ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Π² классах-наслСдниках ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ Π±Ρ‹Π»ΠΎ Ρƒ родитСля, Π° Π² ΠΊΠΎΠ΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ½ΠΈΠΆΠ°ΡŽΡ‰Π΅Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° (downcasting).

Implementation ΠΊΠ°ΠΊ дСкомпозиция ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π° ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΌΠ½Π΅ Ρ‚ΠΎΠΆΠ΅ нравится. Волько Π½Π΅ понял, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρƒ тСбя implementation Π² UML ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΠ΅Ρ‚ с implementation Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Если ΡΡƒΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎ синтаксису, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Java ΠΈΠ»ΠΈ PHP, Ρ‚ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ класс Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ интСрфСйс, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово implement. Один класс Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ мноТСство интСрфСйсов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, IComparable, IMovable ΠΈ > Π’ ΠΌΠ°Π½ΡƒΠ°Π»Π΅ IBM ΠΏΠΎ UML ΠΏΡ€ΠΎ связь implementation написано ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: The implementation relationship specifies that the realizing classifier must conform to the contract that the provided interface specifies. Π­Ρ‚ΠΎ выполняСтся by design Π²ΠΎ всСх языках программирования, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… интСрфСйсы Π² Ρ‚Π°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Java, PHP ΠΈΠ»ΠΈ C#.

Π’ Ρ‚ΠΎΠΌ ΠΆΠ΅ самом ΠΌΠ°Π½ΡƒΠ°Π»Π΅ ΠΏΡ€ΠΎ связь realization написано Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ: You can model the following situations using realization relationships:
A component is realized by a set of classifiers that provide its implementation. Π’ΠΎΡ‚ это ΡƒΠΆΠ΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ класс прСдоставляСт своим ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ, ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽΡΡ ΠΈΠ· сСрвисов классов, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ½ находится Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ realization плюс Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅Π³ΠΎ собствСнныС ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. ΠŸΡ€ΠΈ этом Π½Π΅ гарантируСтся, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ класс Π±ΡƒΠ΄Π΅Ρ‚ Π½Π° 100 % ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ интСрфСйсы классов, Ρ‡ΡŒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΎΠ½ прСдставляСт. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ Π½Π°ΠΌ realization ΠΏΡ€ΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π·Π° счСт дСлСгирования ΠΈ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ вовсС Π±Π΅Π· наслСдования Π² этом случаС. ΠŸΡ€ΠΈ этом внСшний Π²ΠΈΠ΄ связи (пунктирная линия с пустым Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠΌ Π½Π° ΠΊΠΎΠ½Ρ†Π΅) Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ отличаСтся ΠΎΡ‚ Π²ΠΈΠ΄Π° связи implementation ΠΈ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ связь generalization, Ρ‡Ρ‚ΠΎ мСня Π²Π²ΠΎΠ΄ΠΈΡ‚ Π² Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅. Π”Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΆΠ΅ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°Ρ… прСдставляСтся связью association (ΡΠΎΠ±ΠΈΡ€Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ для agregation ΠΈΠ»ΠΈ composition). Рискну ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ связь realization Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ вмСсто association ΠΏΡ€ΠΈ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π’Π‘Π• ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса, входящСго Π² связь с ΠΎΠ΄Π½ΠΎΠΉ стороны (service provider), ΠΈΠΌΠ΅ΡŽΡ‚ своС ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… класса Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ сторонС связи (Ρ‚.Π΅. ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π±ΠΈΠ΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅).

Ну ΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ ясСн для мСня вопрос, ΠΊΠ°ΠΊ слСдуСт ΠΏΠΎΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ сущСствуСт мноТСство Ρ€Π°Π·Π½ΠΎΡˆΠ΅Ρ€ΡΡ‚Π½Ρ‹Ρ… ΠΏΠΎ своСму Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ классов + ΠΎΠ΄ΠΈΠ½ интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· Π½ΠΈΡ… (Π½ΠΎ Π½Π΅ всС!) Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ рСализация эта Π² 99% случаСв Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π°. ΠŸΠΈΡΠ°Ρ‚ΡŒ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· классов Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ β€” Π°Π΄. ΠžΡ‚Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ всС эти класса систСмы ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класс MyObject implements IInterface, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ прСдставлСна рСализация интСрфСйса ΠΏΠΎ умолчания (Π°-ля C# ΠΈΠ»ΠΈ Java) β€” Π²Ρ€ΠΎΠ΄Π΅ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€. И ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ этом Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° классов UML?

ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. fee5700a74a246f93940ca294957994b. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„ΠΎΡ‚ΠΎ. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ-fee5700a74a246f93940ca294957994b. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° fee5700a74a246f93940ca294957994b. Автор Dmitry dziuba Π·Π°Π΄Π°Π» вопрос Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π”Ρ€ΡƒΠ³ΠΈΠ΅ языки ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

Π‘ΠΈΠ΅ Π΅ΡΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Π·Π°Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎβ€¦ Π½ΠΈΠΊΠΎΠ³Π΄Π° Ρ‚Π°ΠΊ Π³Π»ΡƒΠ±ΠΎΠΊΠΎ Π½Π΅ Ρ€Ρ‹Π», ΠΈ вот…
Π”Π°ΠΆΠ΅ ΠΏΠΎ-русски Β«realizationΒ» ΠΈ Β«implementationΒ» пСрСводятся ΠΊΠ°ΠΊ рСализация β€” это я Π²Ρ€ΠΎΠ΄Π΅ Π·Π½Π°Π», Π° Π² Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ раздСлСния Π½Π΅ встрСчал Π½ΠΈΠ³Π΄Π΅. Поиск Β«realizationΒ» Π² Π²ΠΈΠΊΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Ρ‚ΠΎΠΆΠ΅ Π½Π΅ Π΄Π΅Π», Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ настораТиваСт. А Π²ΠΎΡ‚ ΠΏΡ€ΠΎ implementation написано, Ρ‡Ρ‚ΠΎ это Π΅ΡΡ‚ΡŒ realization 🙂

Β«Implementation is the realization of an application, or execution of a plan, idea, model, design, specification, standard, algorithm, or policy.Β»

Π›Π°Π΄Π½ΠΎ, ΠΏΠΎΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ это ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅.
Π’ΠΎΠ³Π΄Π° ΠΈΠΌΠ΅Π΅ΠΌ, Ρ‡Ρ‚ΠΎ generalization β€” это просто наслСдованиС, Π½Π΅ Π²Π°ΠΆΠ½ΠΎ, ΠΎΡ‚ абстрактного класса ΠΈΠ»ΠΈ Π½Π΅Ρ‚.
Implementation β€” рСализация интСрфСйса (ΠΈΠ»ΠΈ чисто абстрактного класса).

Π˜Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ вопрос я Π½Π΅ знаю, Ρ‡Ρ‚ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Π½ΠΎ высказал своС ΠΌΠ½Π΅Π½ΠΈΠ΅.
По Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ β€” ΠΌΠΎΠΆΠ½ΠΎ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ (realized, implemnted) ΡƒΠΆΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² интСрфСйсС просто Π½Π΅ ΠΌΠΎΠ³ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ просто ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ это интСрфСйс.
По Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌΡƒ β€” Ρ‚ΡƒΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ просто нСсколько связСй, Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ссли рСализуСтся нСсколько интСрфСйсов β€” Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ нСсколько связСй Β«implementationΒ», Ρ‚ΠΎ ΠΆΠ΅ касаСтся ΠΈ generalization.
По Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΌΡƒ β€” Ссли власс Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ абстрактный ΠΈ сам Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ (Ρ‚.Π΅. Ρ‚ΠΎΠΆΠ΅ являСтся абстрактным), Ρ‚ΠΎ Ρ‚ΡƒΡ‚ просто Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (implementation, realization) β€” Ρ‚.Π΅. Ρ‚ΡƒΡ‚ чисто generalization. А Ссли Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ рСализуСтся β€” Ρ‚ΠΎ Ρ‚ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ implementation (realization).

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

Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Java β€” Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ extends ΠΈ implements Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…

ПослС ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования Π½Π° C++ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° Java Π±Ρ‹Π²Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎ. Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны прославлСнный сборщик мусора, Π° с Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ мноТСство ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ Π² ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°Ρ… ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ. Об ΠΎΠ΄Π½ΠΎΠΌ Ρ‚Π°ΠΊΠΎΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ я сСгодня расскаТу ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅.

Π Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ ΠΎ наслСдовании Π² Java. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ C++, Π³Π΄Π΅ наслСдованиС ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹Ρ‚ΡŒ мноТСствСнным, здСсь это Π½Π΅ совсСм Ρ‚Π°ΠΊ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΉ синтаксис Ρ‡Π΅Ρ€Π΅Π· Β«:Β» замСнился Π½Π° Ρ†Π΅Π»Ρ‹Ρ… Π΄Π²Π° ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слова: extends ΠΈ implements. Начну с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ.

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово extends Π² Java

ДСйствиС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова Π² точности совпадаСт с Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ, ΠΎΠ΄ΠΈΠ½ класс Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ, Ρ‡Ρ‚ΠΎ являСтся классичСским наслСдованиСм. ΠŸΡ€Π°Π²ΠΈΠ»Π° видимости ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΡΠΎΡ…Ρ€Π°Π½ΠΈΠ»ΠΈΡΡŒ: private доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² самом классС, protected Π² самом классС ΠΈ Π²ΠΎ всСх наслСдниках, ΠΊ public ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΈ полям ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ΠΊΡƒΠ΄Π° ΡƒΠ³ΠΎΠ΄Π½ΠΎ. Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ «сишного» наслСдования Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ класс. Π― сСйчас Π½Π΅ Π±ΡƒΠ΄Ρƒ Ρ€Π°ΡΡΡƒΠΆΠ΄Π°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, насколько это ΡƒΠ΄ΠΎΠ±Π½ΠΎ, скаТу Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Ρ‡Ρ‚ΠΎ со мноТСствСнным наслСдованиСм Π² C++ постоянно Ρ‚Π²ΠΎΡ€ΠΈΠ»Π°ΡΡŒ какая-Ρ‚ΠΎ каша.

НСбольшой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ наслСдования с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова extends. НапишСм класс Door, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ характСристики Π΄Π²Π΅Ρ€ΠΈ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ этого класса ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌ, ΠΊΠ°ΠΊ с «просто Π΄Π²Π΅Ρ€ΡŒΡŽΒ». Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны напишСм Π΅Ρ‰Π΅ Π΄Π²Π° класса: IronDoor ΠΈ WoodDoor, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ класс Door(== Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚ класса Door), Ρ‚.Π΅. добавят свои характСристики ΠΊ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ.

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово implements Π² Java

Π‘ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом implements связано Ρ‡ΡƒΡ‚ΡŒ большС хитростСй. Π‘Π»ΠΎΠ²ΠΎ Β«ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΒ» ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Β«Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒΒ», Π° Π² Ρ‚ΠΎΡ‚ самый ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ слово Β«Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒΒ», Π³Π΄Π΅-Ρ‚ΠΎ Π½Π΅Π΄Π°Π»Π΅ΠΊΠΎ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ интСрфСйсы. Π’Π°ΠΊ Π²ΠΎΡ‚ конструкция public class Door implements Openable ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ класс Π΄Π²Π΅Ρ€ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ интСрфСйс Β«ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉΡΡΒ». Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ класс Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ интСрфСйса. Главная Ρ„ΠΈΡˆΠΊΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ сколь ΡƒΠ³ΠΎΠ΄Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ интСрфСйсов.

Π—Π°Ρ‡Π΅ΠΌ это Π½ΡƒΠΆΠ½ΠΎ? Π‘Π°ΠΌΡ‹ΠΉ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π² Π³ΠΎΠ»ΠΎΠ²Ρƒ, Π΄Π²Π° интСрфСйса: Openable ΠΈ Closeble. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ open, ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ close Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ. Они ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π°ΡˆΡƒ Π΄Π²Π΅Ρ€ΡŒ Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ.

Π’ классах-ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°Ρ… Π΄Π²Π΅Ρ€ΠΈ(ТСлСзная ΠΈ дСрСвянная Π΄Π²Π΅Ρ€ΠΈ) Ρ‚ΠΎΠΆΠ΅ появятся ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ/Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π² классС Door. Но Π½ΠΈΠΊΡ‚ΠΎ Π½Π°ΠΌ Π½Π΅ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π˜Ρ‚Π°ΠΊ, Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ extends ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для наслСдования ΠΎΡ‚ класса Π² прямом смыслС этого слова, Π° implements позволяСт Β«Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс». На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд это каТСтся лишним, Π½Π΅ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΈ нСпонятным, Π½ΠΎ стоит ΠΏΠ°Ρ€Ρƒ Ρ€Π°Π· ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΈ всС встаСт Π½Π° свои мСста. На сСгодня Ρƒ мСня всС, спасибо Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!

10 ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ООП, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… стоит Π·Π½Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ программисту

ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Software Engineers. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„ΠΎΡ‚ΠΎ. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ-Software Engineers. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Software Engineers. Автор Dmitry dziuba Π·Π°Π΄Π°Π» вопрос Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π”Ρ€ΡƒΠ³ΠΈΠ΅ языки ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

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

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ СдинствСнной отвСтствСнности (SRP)

БоотвСтствуСт Π±ΡƒΠΊΠ²Π΅ S Π°ΠΊΡ€ΠΎΠ½ΠΈΠΌΠ° SOLID. Богласно этому ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ для измСнСния класса, ΠΈΠ»ΠΈ класс Π΄ΠΎΠ»ΠΆΠ΅Π½ всСгда ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

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

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ открытости/закрытости (OCP)

БоотвСтствуСт Π±ΡƒΠΊΠ²Π΅ O Π°ΠΊΡ€ΠΎΠ½ΠΈΠΌΠ° SOLID. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ: Β«ΠšΠ»Π°ΡΡΡ‹, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ (добавлСния Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ) ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ для ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈΒ». Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΠΌΡƒ-Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΡƒΠΆΠ΅ ΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΈ протСстированный ΠΊΠΎΠ΄, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΎΠ½ Π½Π΅ ломаСтся. Π’ этом ΠΈ состоит основноС прСимущСство Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° Π½Π° Java, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ этот ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ:

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ подстановки Π‘Π°Ρ€Π±Π°Ρ€Ρ‹ Лисков (LSP)

БоотвСтствуСт Π±ΡƒΠΊΠ²Π΅ L Π°ΠΊΡ€ΠΎΠ½ΠΈΠΌΠ° SOLID. Богласно этому ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ ΠΏΠΎΠ΄Ρ‚ΠΈΠΏΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ замСняСмыми для супСртипа. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ с супСрклассом, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ с Π΅Π³ΠΎ подклассами.

LSP тСсно связан с ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠΌ СдинствСнной отвСтствСнности ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠΌ раздСлСния интСрфСйса.

Если класс Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ большС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‡Π΅ΠΌ подкласс, Ρ‚ΠΎ послСдний ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ‚Π΅ΠΌ самым Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° Java:

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ раздСлСния интСрфСйса (ISP)

БоотвСтствуСт Π±ΡƒΠΊΠ²Π΅ I Π°ΠΊΡ€ΠΎΠ½ΠΈΠΌΠ° SOLID. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½.

Π’ основном это происходит, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ интСрфСйс содСрТит нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ, ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ Π½ΡƒΠΆΠ½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· Π½ΠΈΡ…, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ β€” Π½Π΅Ρ‚.

НаписаниС интСрфСйса β€” слоТная Π·Π°Π΄Π°Ρ‡Π°. Когда ΠΎΠ½ Π³ΠΎΡ‚ΠΎΠ², Π²Ρ‹ Π½Π΅ смоТСтС ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠΈΠ² всю Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ.

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

ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. 0 kALM7NtYyY7D40b4. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„ΠΎΡ‚ΠΎ. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ-0 kALM7NtYyY7D40b4. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 0 kALM7NtYyY7D40b4. Автор Dmitry dziuba Π·Π°Π΄Π°Π» вопрос Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π”Ρ€ΡƒΠ³ΠΈΠ΅ языки ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ инвСрсии зависимостСй (DIP)

БоотвСтствуСт Π±ΡƒΠΊΠ²Π΅ D Π°ΠΊΡ€ΠΎΠ½ΠΈΠΌΠ° SOLID. ΠŸΡ€Π΅Π»Π΅ΡΡ‚ΡŒ этого ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° проСктирования Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ любой класс Π»Π΅Π³ΠΊΠΎ тСстируСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ ΠΏΡ€ΠΎΡ‰Π΅ Π² обслуТивании, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½, Π° клиСнтский ΠΊΠΎΠ΄ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½ ΠΈΠΌ.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° Java, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ инвСрсии зависимости:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ ΠΊ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ входят Π² пятёрку SOLID, Π½ΠΎ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹.

DRY (Don’t Repeat Yourself)

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡΡ ΠΊΠ°ΠΊ Β«Π½Π΅ повторяйся» ΠΈ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΡ‚ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠΎ возмоТности ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ для ΠΎΠ±Ρ‰ΠΈΡ… Π²Π΅Ρ‰Π΅ΠΉ.

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

Но Π²Π°ΠΆΠ½ΠΎ Π½Π΅ Π·Π»ΠΎΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ этим ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠΌ. НапримСр, ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄ Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ OrderId ΠΈ SSN. Π˜Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ, ΠΈ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ функция выдаст Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π’ качСствС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² для ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Π½Π°Π±ΠΎΡ€ΠΎΠ² чисСл.

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰Π΅Π³ΠΎΡΡ ΠΊΠΎΠ΄Π°

БСрвисы ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ΡΡ. ΠŸΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ постоянныС измСнСния ΠΊΠΎΠ΄Π° ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ. ΠžΡ‚ΡΡŽΠ΄Π° слСдуСт Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ООП β€” инкапсуляция ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ с большой Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ этого ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° ООП Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ инкапсулированный ΠΊΠΎΠ΄ Π»Π΅Π³ΠΊΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ.

Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠΌΠ΅ΡŽΡ‚ спСцификатор private. Π—Π°Ρ‚Π΅ΠΌ шаг Π·Π° шагом ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚Π΅ доступ ΠΏΡ€ΠΈ нСобходимости (с private Π½Π° protected, с protected Π½Π° public).

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

ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ вмСсто наслСдования

БущСствуСт Π΄Π²Π° основных способа ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΊΠΎΠ΄Π°: наслСдованиС ΠΈ композиция. Оба ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ свои прСимущСства ΠΈ нСдостатки, Π½ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ рСкомСндуСтся ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ послСднСму, Ссли это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠžΠ±ΡƒΡΠ»ΠΎΠ²Π»Π΅Π½ΠΎ это Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ композиция Π³ΠΈΠ±Ρ‡Π΅ наслСдования.

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

Β«Effective JavaΒ» Π”ΠΆΠΎΡˆΡƒΠ° Π‘Π»ΠΎΡ…Π° Ρ‚Π°ΠΊΠΆΠ΅ совСтуСт ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ вмСсто наслСдования. Если Π²Ρ‹ всё Π΅Ρ‰Ρ‘ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ здСсь, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ композиция Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ наслСдованиС для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΊΠΎΠ΄Π° ΠΈ Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для интСрфСйса

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ слСдуСт ΠΏΠΎ возмоТности ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ для интСрфСйса, Π° Π½Π΅ для Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎ даст Π²Π°ΠΌ Π³ΠΈΠ±ΠΊΠΈΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с любой Π½ΠΎΠ²ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ интСрфСйса.

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ интСрфСйса для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΠ° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. НапримСр, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для хранСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° супСркласс, Π° Π½Π΅ подкласс.

Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΊΠ½ΠΈΠ³Π°Ρ… ΠΏΠΎ Java, Π² Ρ‚ΠΎΠΌ числС Π² Effective Java ΠΈ Head First design pattern.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для интСрфСйса Π² Java:

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ дСлСгирования

НС Π΄Π΅Π»Π°ΠΉΡ‚Π΅ всё ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π΄Π΅Π»Π΅Π³ΠΈΡ€ΡƒΠΉΡ‚Π΅ это Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ класс. ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ этого ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ equals() ΠΈ hashCode() Π² Java. Если Π½ΡƒΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π΄Π²Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, это дСйствиС поручаСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ классу вмСсто клиСнтского.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ прСимущСством этого ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° являСтся отсутствиС дублирования ΠΊΠΎΠ΄Π° ΠΈ довольно простоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ повСдСния. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ относится Ρ‚Π°ΠΊΠΆΠ΅ ΠΊ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ событий (событиС дСлСгируСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ).

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

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

Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ миксин Π½Π° ΠΏΠ»ΡŽΡΠ°Ρ…

Advanced: Π’Π΅ΠΌΠ° ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½ΠΎΠΉ слоТности ΠΈΠ»ΠΈ ваТная.

Π”ΠΎΠ±Ρ€ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ суток.

Написал ΡƒΠ΄ΠΎΠ±Π½ΡƒΡŽ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ миксин β€” Ρ€Π΅ΡˆΠΈΠ» Π²Ρ‹Π»ΠΎΠΆΠΈΡ‚ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠΌΡƒ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚.
БобствСнно Ρ…Π΅Π΄Π΅Ρ€: Mixines.h (ΠΏΠΎΠΊΠ° Π±Π΅Π· ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²).

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

Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² использования.

kas
Π― Ρ‚Π°ΠΊ понимаю Π½Π°ΠΌΠ΅ΠΊ Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ компиляции. Если Π΄Π° β€” Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ здСсь это Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Ρ‚. ΠΊ. Π² основном Ρ€Π°Π±ΠΎΡ‚Π° прСдполагаСтся с интСрфСйсом, Π° имплСмСнтация Π»Π΅Π³ΠΊΠΎ Π·Π° PIMPL Π² cpp скрываСтся.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Π² Π½ΠΎΠ²ΠΎΠΉ вСрсии Π½Π΅ Π½Π°Π΄ΠΎ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ миксины. Π½ΠΎ Π²ΠΈΠ΄ΠΈΠΌΠΎ ΠΎΠ½ΠΎ Π½ΠΈΠΊΠΎΠΌΡƒ Π½Π΅ интСрСсно. =

Paltr
Π§Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅ Ρ…ΠΎΡ‚ΡŒ, Ρ‚Π²ΠΎΠΉ миксин?

ΠšΡ€Π°ΠΉΠ½Π΅ полСзная, ИМΠ₯О, Π²Π΅Ρ‰ΡŒ Π½ΠΎ Π½Π° ΠΏΠ»ΡŽΡΠ°Ρ… Π΅Π΅ Π½Π΅Ρ‚.

ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΡ„ΠΈΡ‚Π° Π² ΡΡ‚ΡƒΠ΄ΠΈΡŽ. я Ρ‚Π°ΠΊ ΠΈ Π½Π΅ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π», Π³Π΄Π΅ это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ.

Suslik
МнС ΠΎΠ½ΠΎ сСйчас Π½Π°Π΄ΠΎ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Steering Behavior. Π‘Π°ΠΌΠΎΠ΅ ΠΎΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ всС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ пСрсонаТа Π² пятнадцати строках.
А Ρ‚Π°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ миксинам всСгда найдСтся β€” Π½Π΅ зря ΠΎΠ½ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌΠΈ языками Π½Π°Ρ‚ΠΈΠ²Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ =).

Paltr
> Π‘Π°ΠΌΠΎΠ΅ ΠΎΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ всС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ пСрсонаТа Π² пятнадцати строках
> ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ пСрсонаТа Π² пятнадцати строках
> ΠŸΠ―Π’ΠΠΠ”Π¦ΠΠ’Π˜ БВРОКАΠ₯

Π½Π΅, Π½Ρƒ ΠΏΡ€Π°Π²Π΄Π°, ΠΏΡ€ΠΈΠ²Π΅Π΄ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, интСрСсно ΠΆΠ΅. моТСшь ΠΈΠ· своСго Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ· физикоэнСргСтичСских ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ 🙂

Suslik
> ΠΏΠ°-Π±Π°Π°Π°ΠΌ! ΠΎΠ΄Π½Π° строка.
БмСшно.
Π― Ρ‚Π΅Π±Π΅ ΠΏΡ€ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ интСрфСйса, Ρ‚Ρ‹ ΠΌΠ½Π΅ кусок ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Steering Behavior. Π Π°Π·ΡƒΠΌΠ½ΠΎ.
НуТСн ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” смотри Π² ΠΈΠ½Π΅Ρ‚Π΅. Если Π½Π΅ найдСшь, Π² Ρ‡Π΅ΠΌ я сомнСваюсь, пиши β€” ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚.

Suslik
ΠšΠΎΡ€ΠΎΡ‡Π΅, это наслСдуСмый(Π² случаС с C++), Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€ΠΎΠ΄Π΅, ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π».
МоТно нСсколько Ρ€Π°Π·Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· Wiki. Допустим Π΅ΡΡ‚ΡŒ Β«ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒΒ» 🙂 с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ >, ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалста, Ρ‚ΠΎΠ³Π΄Π° Ρ‡Π΅ΠΌ это Π»ΡƒΡ‡ΡˆΠ΅ простого шаблонного наслСдования:
ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Π½ΠΈΡ‡Π΅ΠΌ. Π’.ΠΊ. ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ миксинов Π² C++ Π½Π΅Ρ‚ ΠΈ ΠΎΠ½ΠΎ эмулируСтся ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠΌ. Однако, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚Ρ‹ знаСшь(ΠΈ я Ρ‚ΠΎΠΆΠ΅ 🙂 ) ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΡˆΡ‚ΡƒΠΊΠΈ 😉

Π•Ρ‰Π΅ ΠΊΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ примСнСния, Ρ†ΠΈΡ‚Π°Ρ‚Π° ΠΈΠ· Wiki: Β«Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π·Π²Ρ‘Ρ€Π½ΡƒΡ‚ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Β«Boost operatorsΒ».Β»

Suslik
> ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ поТалста, Ρ‚ΠΎΠ³Π΄Π° Ρ‡Π΅ΠΌ это Π»ΡƒΡ‡ΡˆΠ΅ простого шаблонного наслСдования:
А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ запиши Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ интСрфСйса И Ρ‡Π΅Ρ€Π΅Π· 10 миксин (класс А). Π­Ρ‚ΠΎ ΡƒΠΆΠ΅ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ. А ΠΏΠΎΡ‚ΠΎΠΌ Π² ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ΅ΠΌΡΡ классС ΠΏΠΎΠ΄ΠΌΠ΅Π½ΠΈ ΠΎΠ΄Π½Ρƒ миксину для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ класс Π‘. Если подмСнишь β€” ΠΎΡ‚ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ всС Ρ€Π°Π²Π½ΠΎ останутся «куски» (Π΄Π°Π½Π½Ρ‹Π΅, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹). ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° β€” вновь Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ интСрфСйса И ΠΈ снова ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ 10 миксин Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈ этом Ρƒ класса А ΠΈ Π‘ этот Π½Π°Π±ΠΎΡ€ отличаСтся лишь Π½Π° ΠΎΠ΄Π½Ρƒ миксину. Π­Ρ‚ΠΎ ΠΈΠ· ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠ³ΠΎ.
Мой Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ нСдостатками Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚, Π΄Π° ΠΈ просто Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΈΠ±Ρ‡Π΅ ΠΈ ΡƒΠ΄ΠΎΠ±Π½Π΅ΠΉ.

Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ это

Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Автор Dmitry dziuba Π·Π°Π΄Π°Π» вопрос Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π”Ρ€ΡƒΠ³ΠΈΠ΅ языки ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

Π§Π΅ΠΌ отличаСтся имплСмСнтация ΠΎΡ‚ наслСдования? =) ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π§Π΅ΠΌ отличаСтся имплСмСнтация ΠΎΡ‚ наслСдования? ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‚

ΠžΡ‚Π²Π΅Ρ‚ ΠΎΡ‚ Π˜Ρ€ΠΈΠ½Π° Π’[Π³ΡƒΡ€Ρƒ]
Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ: это рСализация ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Ρ‚Π΅. Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ фактичСски Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² классС. А наслСдованиС, это созданиС Π½ΠΎΠ²ΠΎΠ³ΠΎ класса Π½Π° основС старого, ΠΏΡ€ΠΈ этом рСализация ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ, ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса.
Но Ρ‡Π°Ρ‰Π΅, слово имплСмСнтация ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‚ для интСрфСйсов: это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ интСрфСйс, ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΈ свойства.

Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ (ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ
ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ слова «имплСмСнтация» извСстно Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ числу людСй, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ, ΠΏΠΎ сути, ΠΎΠ½ΠΎ являСтся ΡŽΡ€ΠΈΠ΄ΠΈΡ‡Π΅ΡΠΊΠΈΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠΌ. Однако всС Ρ‡Π°Ρ‰Π΅ ΠΎΠ½ΠΎ Π·Π²ΡƒΡ‡ΠΈΡ‚ Π² БМИ Π² связи с освСщСниСм Ρ‚Π΅Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹Ρ… событий. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ имплСмСнтация, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ интСрСсуСтся Ρ‚Π°ΠΊΠΈΠΌΠΈ новостями, Ρ…ΠΎΡ‡Π΅Ρ‚ Π³Π»ΡƒΠ±ΠΆΠ΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² Ρ‚Π΅ΠΌΠ΅.

ΠžΠ±Ρ‰Π΅Π΅ понятиС

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ слова «имплСмСнтация», для Π½Π°Ρ‡Π°Π»Π° Π΄Π°Π΄ΠΈΠΌ Π΅Π³ΠΎ ΠΎΠ±Ρ‰Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€Π°Π²Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ ΠΎΡ‚ английского ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ implementation, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅Π³ΠΎ Β«Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, осущСствлСниС». Под Π½ΠΈΠΌ понимаСтся процСсс Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π², взятых Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ страной Π½Π° внутригосударствСнном ΡƒΡ€ΠΎΠ²Π½Π΅.

ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. 2799695. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„ΠΎΡ‚ΠΎ. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ-2799695. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 2799695. Автор Dmitry dziuba Π·Π°Π΄Π°Π» вопрос Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π”Ρ€ΡƒΠ³ΠΈΠ΅ языки ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

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

Π’Ρ€ΠΈ способа

ΠŸΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ «имплСмСнтация», ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ способов Π΅Π΅ осущСствлСния.

К Ρ‚Π°ΠΊΠΈΠΌ способам относят:

ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. 2799697. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„ΠΎΡ‚ΠΎ. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ-2799697. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 2799697. Автор Dmitry dziuba Π·Π°Π΄Π°Π» вопрос Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π”Ρ€ΡƒΠ³ΠΈΠ΅ языки ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

ΠžΡΡƒΡ‰Π΅ΡΡ‚Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΡ€ΠΌ, установлСнных ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹ΠΌ ΠΏΡ€Π°Π²ΠΎΠΌ, обСспСчиваСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΎΠ²Ρ‹Ρ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ². Π‘Ρ€Π΅Π΄ΠΈ Π½ΠΈΡ… присутствуСт Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎ- ΠΈ Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ-ΠΏΡ€Π°Π²ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² внСдрСния Π½ΠΎΡ€ΠΌ. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ ΡƒΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ слова «имплСмСнтация», рассмотрим ΠΈΡ….

ΠœΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎ-ΠΏΡ€Π°Π²ΠΎΠ²ΠΎΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ

Он прСдставляСт собой комплСкс ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹Ρ… срСдств, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ входят:

ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. 2799696. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„ΠΎΡ‚ΠΎ. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ-2799696. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 2799696. Автор Dmitry dziuba Π·Π°Π΄Π°Π» вопрос Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π”Ρ€ΡƒΠ³ΠΈΠ΅ языки ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

Π’ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ изучСния вопроса ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ слова «имплСмСнтация» рассмотрим Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ.

ΠΠ°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ-ΠΏΡ€Π°Π²ΠΎΠ²ΠΎΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ

Π’ Π½Π΅Π³ΠΎ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ внутригосударствСнных срСдств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ·Π²Π°Π½Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π½ΠΎΡ€ΠΌ МП. К Π½ΠΈΠΌ относятся:

НС ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ (ΠΈ Π΅ΡΡ‚ΡŒ Π»ΠΈ ΠΎΠ½Π°) тонкая Π³Ρ€Π°Π½ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ связСй Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ классов UML:

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ UML ΠΊΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ этого вопроса я понимаю ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

β€” связь generalization Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ классами, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ класс (наслСдник) основываСтся Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ классС (Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅). Будя ΠΏΠΎ всСму, здСсь Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ классом (Ρ‚.Π΅. ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ экзСмпляры).

β€” связь realization Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ элСмСнтами Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ классов, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ класс Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, опрСдСляСмоС Π΄Ρ€ΡƒΠ³ΠΈΠΌ классом. Π‘ΠΊΠΎΡ€Π΅Π΅ всСго здСсь Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ повСдСния, опрСдСляСмого интСрфСйсом ΠΈΠ»ΠΈ абстрактным классом.

β€” связь implementation β€” это ΠΏΠΎΠ΄Ρ‚ΠΈΠΏ связи realization. Будя ΠΏΠΎ всСму, Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ½Ρ†Π΅ связи β€” ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ класс, Π° Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ β€” интСрфСйс (interface Π² Java, чисто Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ класс Π² C++).

Вопрос ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ: насколько Π²Π΅Ρ€Π½Π° моя Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²ΠΊΠ° спСцификации?
Вопрос Π²Ρ‚ΠΎΡ€ΠΎΠΉ: ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ realization ΠΏΠΎΠ΄Ρ‚ΠΈΠΏΠΎΠΌ связи generalization?
Вопрос Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ: Ссли язык ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ мноТСствСнноС наслСдованиС (C++ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€) ΠΈ класс наслСдуСтся ΠΎΡ‚ Π΄Π²ΡƒΡ… ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… классов β€” какая Π² Ρ‚Π°ΠΊΠΎΠΌ случаС связь ΠΌΠ΅ΠΆΠ΄Ρƒ наслСдником ΠΈ супСрклассами?

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

Вопрос Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ: ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ случаС наслСдованиС ΠΎΡ‚ абстрактного класса ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ связь generalization, Π° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ случаС β€” realization.

ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. a58783a944a78eeff710f8cdb343d62c. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„ΠΎΡ‚ΠΎ. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ-a58783a944a78eeff710f8cdb343d62c. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° a58783a944a78eeff710f8cdb343d62c. Автор Dmitry dziuba Π·Π°Π΄Π°Π» вопрос Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π”Ρ€ΡƒΠ³ΠΈΠ΅ языки ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

Π’Ρ€Π°ΠΊΡ‚ΠΎΠ²ΠΊΠ° Π½Π΅ совсСм Π²Π΅Ρ€Π½Π°, я сСйчас ΠΈΠ·Π»ΠΎΠΆΡƒ своС ΠΌΠ½Π΅Π½ΠΈΠ΅, Π° ΡƒΠΆ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ наши взгляды Π·Π°Π΄Π°Ρ‡Π° Π½Π΅ ΠΈΠ· простых)) Основная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ понятий Π² UML ΠΈ ООП.

Π’ Ρ†Π΅Π»ΠΎΠΌ ΠΏΠΎ опрСдСлСниям: Π‘ΠΎ стороны ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ класса ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚: интСрфСйс (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ состоит ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², свойств ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… языковых ΡˆΡ‚ΡƒΠΊ) ΠΈ абстракция (это Π½Π΅ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ подразумСваСтся ΠΏΡ€ΠΈ взаимодСйствии с Π΅Π³ΠΎ интСрфСйсом).

Generalization. Когда Ρƒ классов совпадаСт ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, получаСтся ΠΌΠΎΠΆΠ½ΠΎ свСсти ΠΈΡ… интСрфСйсы ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΌΡƒ β€” ΠΎΠ±ΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ. Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° обобщСния ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ сходство Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ аспСкта повСдСния ΠΈ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ сходство интСрфСйса.

Realization. Когда Ρ‡Π°ΡΡ‚ΡŒ повСдСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° выносится Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ класс β€” это называСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠ΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Π½ΠΎ UML ΠΏΠΎΡ…ΠΎΠΆΠ΅ считаСт ΠΈΠ½Π°Ρ‡Π΅.

Implementation. Π’ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ UML это ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π½Π΅ΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π° составныС части. Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ этот Ρ‚Π΅Ρ€ΠΌΠΈΠ½ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ совсСм другоС…

ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. a58783a944a78eeff710f8cdb343d62c. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„ΠΎΡ‚ΠΎ. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ-a58783a944a78eeff710f8cdb343d62c. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° a58783a944a78eeff710f8cdb343d62c. Автор Dmitry dziuba Π·Π°Π΄Π°Π» вопрос Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π”Ρ€ΡƒΠ³ΠΈΠ΅ языки ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. 47e418e2aa17072364777060ccbb7e07. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„ΠΎΡ‚ΠΎ. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ-47e418e2aa17072364777060ccbb7e07. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 47e418e2aa17072364777060ccbb7e07. Автор Dmitry dziuba Π·Π°Π΄Π°Π» вопрос Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π”Ρ€ΡƒΠ³ΠΈΠ΅ языки ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ сходство интСрфСйса Π² Generalization Π·Π²ΡƒΡ‡ΠΈΡ‚ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π° Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡ‡Π΅Π½ΡŒ хочСтся Π² это Π²Π΅Ρ€ΠΈΡ‚ΡŒ. Но напрягаСт ΠΌΠΎΠΌΠ΅Π½Ρ‚, Ρ‡Ρ‚ΠΎ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Π² классах-наслСдниках ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ Π±Ρ‹Π»ΠΎ Ρƒ родитСля, Π° Π² ΠΊΠΎΠ΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ½ΠΈΠΆΠ°ΡŽΡ‰Π΅Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° (downcasting).

Implementation ΠΊΠ°ΠΊ дСкомпозиция ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π° ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΌΠ½Π΅ Ρ‚ΠΎΠΆΠ΅ нравится. Волько Π½Π΅ понял, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρƒ тСбя implementation Π² UML ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΠ΅Ρ‚ с implementation Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Если ΡΡƒΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎ синтаксису, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Java ΠΈΠ»ΠΈ PHP, Ρ‚ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ класс Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ интСрфСйс, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово implement. Один класс Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ мноТСство интСрфСйсов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, IComparable, IMovable ΠΈ > Π’ ΠΌΠ°Π½ΡƒΠ°Π»Π΅ IBM ΠΏΠΎ UML ΠΏΡ€ΠΎ связь implementation написано ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: The implementation relationship specifies that the realizing classifier must conform to the contract that the provided interface specifies. Π­Ρ‚ΠΎ выполняСтся by design Π²ΠΎ всСх языках программирования, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… интСрфСйсы Π² Ρ‚Π°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Java, PHP ΠΈΠ»ΠΈ C#.

Π’ Ρ‚ΠΎΠΌ ΠΆΠ΅ самом ΠΌΠ°Π½ΡƒΠ°Π»Π΅ ΠΏΡ€ΠΎ связь realization написано Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ: You can model the following situations using realization relationships:
A component is realized by a set of classifiers that provide its implementation. Π’ΠΎΡ‚ это ΡƒΠΆΠ΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ класс прСдоставляСт своим ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ, ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽΡΡ ΠΈΠ· сСрвисов классов, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ½ находится Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ realization плюс Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅Π³ΠΎ собствСнныС ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. ΠŸΡ€ΠΈ этом Π½Π΅ гарантируСтся, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ класс Π±ΡƒΠ΄Π΅Ρ‚ Π½Π° 100 % ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ интСрфСйсы классов, Ρ‡ΡŒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΎΠ½ прСдставляСт. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ Π½Π°ΠΌ realization ΠΏΡ€ΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π·Π° счСт дСлСгирования ΠΈ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ вовсС Π±Π΅Π· наслСдования Π² этом случаС. ΠŸΡ€ΠΈ этом внСшний Π²ΠΈΠ΄ связи (пунктирная линия с пустым Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠΌ Π½Π° ΠΊΠΎΠ½Ρ†Π΅) Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ отличаСтся ΠΎΡ‚ Π²ΠΈΠ΄Π° связи implementation ΠΈ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ связь generalization, Ρ‡Ρ‚ΠΎ мСня Π²Π²ΠΎΠ΄ΠΈΡ‚ Π² Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅. Π”Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΆΠ΅ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°Ρ… прСдставляСтся связью association (ΡΠΎΠ±ΠΈΡ€Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ для agregation ΠΈΠ»ΠΈ composition). Рискну ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ связь realization Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ вмСсто association ΠΏΡ€ΠΈ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π’Π‘Π• ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса, входящСго Π² связь с ΠΎΠ΄Π½ΠΎΠΉ стороны (service provider), ΠΈΠΌΠ΅ΡŽΡ‚ своС ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… класса Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ сторонС связи (Ρ‚.Π΅. ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π±ΠΈΠ΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅).

Ну ΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ ясСн для мСня вопрос, ΠΊΠ°ΠΊ слСдуСт ΠΏΠΎΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ сущСствуСт мноТСство Ρ€Π°Π·Π½ΠΎΡˆΠ΅Ρ€ΡΡ‚Π½Ρ‹Ρ… ΠΏΠΎ своСму Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ классов + ΠΎΠ΄ΠΈΠ½ интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· Π½ΠΈΡ… (Π½ΠΎ Π½Π΅ всС!) Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ рСализация эта Π² 99% случаСв Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π°. ΠŸΠΈΡΠ°Ρ‚ΡŒ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· классов Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ β€” Π°Π΄. ΠžΡ‚Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ всС эти класса систСмы ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класс MyObject implements IInterface, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ прСдставлСна рСализация интСрфСйса ΠΏΠΎ умолчания (Π°-ля C# ΠΈΠ»ΠΈ Java) β€” Π²Ρ€ΠΎΠ΄Π΅ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€. И ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ этом Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° классов UML?

ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. fee5700a74a246f93940ca294957994b. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„ΠΎΡ‚ΠΎ. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ-fee5700a74a246f93940ca294957994b. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° fee5700a74a246f93940ca294957994b. Автор Dmitry dziuba Π·Π°Π΄Π°Π» вопрос Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π”Ρ€ΡƒΠ³ΠΈΠ΅ языки ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

Π‘ΠΈΠ΅ Π΅ΡΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Π·Π°Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎβ€¦ Π½ΠΈΠΊΠΎΠ³Π΄Π° Ρ‚Π°ΠΊ Π³Π»ΡƒΠ±ΠΎΠΊΠΎ Π½Π΅ Ρ€Ρ‹Π», ΠΈ вот…
Π”Π°ΠΆΠ΅ ΠΏΠΎ-русски Β«realizationΒ» ΠΈ Β«implementationΒ» пСрСводятся ΠΊΠ°ΠΊ рСализация β€” это я Π²Ρ€ΠΎΠ΄Π΅ Π·Π½Π°Π», Π° Π² Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ раздСлСния Π½Π΅ встрСчал Π½ΠΈΠ³Π΄Π΅. Поиск Β«realizationΒ» Π² Π²ΠΈΠΊΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Ρ‚ΠΎΠΆΠ΅ Π½Π΅ Π΄Π΅Π», Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ настораТиваСт. А Π²ΠΎΡ‚ ΠΏΡ€ΠΎ implementation написано, Ρ‡Ρ‚ΠΎ это Π΅ΡΡ‚ΡŒ realization

Β«Implementation is the realization of an application, or execution of a plan, idea, model, design, specification, standard, algorithm, or policy.Β»

Π›Π°Π΄Π½ΠΎ, ΠΏΠΎΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ это ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅.
Π’ΠΎΠ³Π΄Π° ΠΈΠΌΠ΅Π΅ΠΌ, Ρ‡Ρ‚ΠΎ generalization β€” это просто наслСдованиС, Π½Π΅ Π²Π°ΠΆΠ½ΠΎ, ΠΎΡ‚ абстрактного класса ΠΈΠ»ΠΈ Π½Π΅Ρ‚.
Implementation β€” рСализация интСрфСйса (ΠΈΠ»ΠΈ чисто абстрактного класса).

Π˜Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ вопрос я Π½Π΅ знаю, Ρ‡Ρ‚ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Π½ΠΎ высказал своС ΠΌΠ½Π΅Π½ΠΈΠ΅.
По Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ β€” ΠΌΠΎΠΆΠ½ΠΎ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ (realized, implemnted) ΡƒΠΆΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² интСрфСйсС просто Π½Π΅ ΠΌΠΎΠ³ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ просто ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ это интСрфСйс.
По Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌΡƒ β€” Ρ‚ΡƒΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ просто нСсколько связСй, Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ссли рСализуСтся нСсколько интСрфСйсов β€” Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ нСсколько связСй Β«implementationΒ», Ρ‚ΠΎ ΠΆΠ΅ касаСтся ΠΈ generalization.
По Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΌΡƒ β€” Ссли власс Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ абстрактный ΠΈ сам Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ (Ρ‚.Π΅. Ρ‚ΠΎΠΆΠ΅ являСтся абстрактным), Ρ‚ΠΎ Ρ‚ΡƒΡ‚ просто Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (implementation, realization) β€” Ρ‚.Π΅. Ρ‚ΡƒΡ‚ чисто generalization. А Ссли Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ рСализуСтся β€” Ρ‚ΠΎ Ρ‚ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ implementation (realization).

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ Π² Java ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ΅

ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. content 274289042f65a03e5277229a218de31b. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„ΠΎΡ‚ΠΎ. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ-content 274289042f65a03e5277229a218de31b. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° content 274289042f65a03e5277229a218de31b. Автор Dmitry dziuba Π·Π°Π΄Π°Π» вопрос Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π”Ρ€ΡƒΠ³ΠΈΠ΅ языки ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

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

Новички часто ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚, Ρ‡Π΅ΠΌ интСрфСйс отличаСтся ΠΎΡ‚ абстрактного класса. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ Π² Java ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡ€ΡƒΡŽΡ‚ отсутствиС мноТСствСнного наслСдования классов. Π£ класса-ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ абстрактный класс-Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, Π° Π²ΠΎΡ‚ интСрфСйсов класс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ (ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ) сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Π½Π° Java ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ класс:

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

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ появились Π² Java 8. Π˜Ρ… ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ default. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это ΠΌΠ΅Ρ‚ΠΎΠ΄ say_goodbye, рСализация ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ прописана прямо Π² интСрфСйсС. Π”Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ использованию, Π½ΠΎ ΠΏΡ€ΠΈ нСобходимости ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π² ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΡ… интСрфСйс классах.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс Java

Если Ρƒ интСрфСйса Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ абстрактный ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс. Π•Π³ΠΎ принято ΠΏΠΎΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠ΅ΠΉ @FunctionalInterface, которая ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ компилятору, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ абстрактного ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² этом интСрфСйсС Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΎΠ± ошибкС. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Ρ… (default) ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρƒ интСрфСйса ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ мноТСство – Π² Ρ‚ΠΎΠΌ числС ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… классу java.lang.Object.

Как выглядит Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс Π½Π° Java:

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ интСрфСйсы появились Π² Java 8. Они обСспСчили ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ лямбда-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, использованиС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹ΠΌ ΠΈ понятным:

Π’ Ρ‚ΠΎΠΉ ΠΆΠ΅ вСрсии появились ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ встроСнных интСрфСйсов: java.util.function ΠΈ java.util.stream.

РСализация интСрфСйсов классами Java

Допустим, Π΅ΡΡ‚ΡŒ интСрфСйс Edible, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ классы Fruit, Vegetable, Fish. ЭкзСмпляры этих классов ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π² конструкторах: для Ρ„Ρ€ΡƒΠΊΡ‚ΠΎΠ² Π·Π°Π΄Π°Ρ‘ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈ сорт, для Ρ€Ρ‹Π±Ρ‹ – Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Ρ€Π°ΠΉΠΎΠ½ Π²Ρ‹Π»ΠΎΠ²Π° ΠΈ вСс ΠΏΠΎΡ€Ρ†ΠΈΠΈ Π² Π³Ρ€Π°ΠΌΠΌΠ°Ρ…. Но ссылки Π½Π° ΠΎΠ±Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ…Ρ€Π°Π½ΠΈΠΌ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° – Β«Π‘ΡŠΠ΅ΡΡ‚Π½ΠΎΠ΅Β».

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹ΡˆΠ΅ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΠΎΡΠ½ΠΎΠ²ΠΎΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ООП β€” ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ. ΠœΡ‹ раскрыли ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ явлСниС β€” ΡΡŠΠ΅Π΄ΠΎΠ±Π½ΠΎΡΡ‚ΡŒ β€” Ρ‡Π΅Ρ€Π΅Π· нСсколько классов, свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… частично ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ явлСния β€” это ΠΈ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ. Если Π½ΡƒΠΆΠ½ΠΎ, Ρ‚Π°ΠΊΡƒΡŽ систСму всСгда ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ ΠΈ ΡΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π’ нашСм случаС β€” Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ ΡΡŠΠ΅ΡΡ‚Π½ΠΎΠ³ΠΎ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΡ… приготовлСния.

Π’ Java ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π·:

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Π²Ρ‹Ρ€ΡƒΡ‡Π°Π΅Ρ‚ Π² ситуации, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈ создании ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΡ‹ Π½Π΅ Π·Π½Π°Π΅ΠΌ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠ°ΠΊΠΎΠ³ΠΎ класса Π΅ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ присвоСн.

ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. content 274289042f65a03e5277229a218de31b. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ„ΠΎΡ‚ΠΎ. ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ-content 274289042f65a03e5277229a218de31b. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° content 274289042f65a03e5277229a218de31b. Автор Dmitry dziuba Π·Π°Π΄Π°Π» вопрос Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π”Ρ€ΡƒΠ³ΠΈΠ΅ языки ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

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

Новички часто ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚, Ρ‡Π΅ΠΌ интСрфСйс отличаСтся ΠΎΡ‚ абстрактного класса. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ Π² Java ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡ€ΡƒΡŽΡ‚ отсутствиС мноТСствСнного наслСдования классов. Π£ класса-ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ абстрактный класс-Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, Π° Π²ΠΎΡ‚ интСрфСйсов класс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ (ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ) сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Π½Π° Java ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ класс:

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

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ появились Π² Java 8. Π˜Ρ… ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ default. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это ΠΌΠ΅Ρ‚ΠΎΠ΄ say_goodbye, рСализация ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ прописана прямо Π² интСрфСйсС. Π”Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ использованию, Π½ΠΎ ΠΏΡ€ΠΈ нСобходимости ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π² ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΡ… интСрфСйс классах.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс Java

Если Ρƒ интСрфСйса Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ абстрактный ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс. Π•Π³ΠΎ принято ΠΏΠΎΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠ΅ΠΉ @FunctionalInterface, которая ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ компилятору, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ абстрактного ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² этом интСрфСйсС Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΎΠ± ошибкС. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Ρ… (default) ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρƒ интСрфСйса ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ мноТСство – Π² Ρ‚ΠΎΠΌ числС ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… классу java.lang.Object.

Как выглядит Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс Π½Π° Java:

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ интСрфСйсы появились Π² Java 8. Они обСспСчили ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ лямбда-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, использованиС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹ΠΌ ΠΈ понятным:

Π’ Ρ‚ΠΎΠΉ ΠΆΠ΅ вСрсии появились ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ встроСнных интСрфСйсов: java.util.function ΠΈ java.util.stream.

РСализация интСрфСйсов классами Java

Допустим, Π΅ΡΡ‚ΡŒ интСрфСйс Edible, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ классы Fruit, Vegetable, Fish. ЭкзСмпляры этих классов ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π² конструкторах: для Ρ„Ρ€ΡƒΠΊΡ‚ΠΎΠ² Π·Π°Π΄Π°Ρ‘ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈ сорт, для Ρ€Ρ‹Π±Ρ‹ – Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Ρ€Π°ΠΉΠΎΠ½ Π²Ρ‹Π»ΠΎΠ²Π° ΠΈ вСс ΠΏΠΎΡ€Ρ†ΠΈΠΈ Π² Π³Ρ€Π°ΠΌΠΌΠ°Ρ…. Но ссылки Π½Π° ΠΎΠ±Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ…Ρ€Π°Π½ΠΈΠΌ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° – Β«Π‘ΡŠΠ΅ΡΡ‚Π½ΠΎΠ΅Β».

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹ΡˆΠ΅ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΠΎΡΠ½ΠΎΠ²ΠΎΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ООП β€” ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ. ΠœΡ‹ раскрыли ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ явлСниС β€” ΡΡŠΠ΅Π΄ΠΎΠ±Π½ΠΎΡΡ‚ΡŒ β€” Ρ‡Π΅Ρ€Π΅Π· нСсколько классов, свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… частично ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ явлСния β€” это ΠΈ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ. Если Π½ΡƒΠΆΠ½ΠΎ, Ρ‚Π°ΠΊΡƒΡŽ систСму всСгда ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ ΠΈ ΡΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π’ нашСм случаС β€” Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ ΡΡŠΠ΅ΡΡ‚Π½ΠΎΠ³ΠΎ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΡ… приготовлСния.

Π’ Java ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π·:

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Π²Ρ‹Ρ€ΡƒΡ‡Π°Π΅Ρ‚ Π² ситуации, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈ создании ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΡ‹ Π½Π΅ Π·Π½Π°Π΅ΠΌ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠ°ΠΊΠΎΠ³ΠΎ класса Π΅ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ присвоСн.

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

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

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