Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΎΠΎΠΏ

ООП с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ (Ρ‡Π°ΡΡ‚ΡŒ 2)

Π’ΠΎΠ»Π΅ΡŽ ΡΡƒΠ΄ΡŒΠ±Ρ‹ ΠΌΠ½Π΅ приходится Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ спСцкурс ΠΏΠΎ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌ проСктирования Π² Π²ΡƒΠ·Π΅. БпСцкурс ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ, поэтому, студСнты ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ ΠΊΠΎ ΠΌΠ½Π΅ самыС Ρ€Π°Π·Π½Ρ‹Π΅. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΅ΡΡ‚ΡŒ срСди Π½ΠΈΡ… ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΡŽΡ‰ΠΈΠ΅ программисты. Но, ΠΊ соТалСнию, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΡΠΏΡ‹Ρ‚Ρ‹Π²Π°ΡŽΡ‚ затруднСния Π΄Π°ΠΆΠ΅ с ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ основных Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ² ООП.

Для этого я постарался Π½Π° Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΠΆΠΈΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ понятия ООП (класс, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, интСрфСйс, абстракция, инкапсуляция, наслСдованиС ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ).

ΠŸΠ΅Ρ€Π²Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ посвящСна классам, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ ΠΈ интСрфСйсам.
Вторая Ρ‡Π°ΡΡ‚ΡŒ, прСдставлСнная Π½ΠΈΠΆΠ΅, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ, ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΈ наслСдованиС

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

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

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

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ – это свойство систСмы, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ с Π½ΠΈΠΌΠΈ, Π² классС ΠΈ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈ
Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ Π½Π΅Ρ€Π°Π·Ρ€Ρ‹Π²Π½ΠΎ связана с понятиСм интСрфСйса класса. По сути, всё Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² интСрфСйс, инкапсулируСтся Π² классС.

Абстракция

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

АбстрагированиС – это способ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Ρ… характСристик ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈΠ· рассмотрСния Π½Π΅Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Π΅. БоотвСтствСнно, абстракция – это Π½Π°Π±ΠΎΡ€ всСх Ρ‚Π°ΠΊΠΈΡ… характСристик.

Если Π±Ρ‹ для модСлирования повСдСния автомобиля ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ химичСский состав краски ΠΊΡƒΠ·ΠΎΠ²Π° ΠΈ ΡƒΠ΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ‚Π΅ΠΏΠ»ΠΎΡ‘ΠΌΠΊΠΎΡΡ‚ΡŒ Π»Π°ΠΌΠΏΠΎΡ‡ΠΊΠΈ подсвСтки Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ², ΠΌΡ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π±Ρ‹ Π½Π΅ ΡƒΠ·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ NFS.

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

Π›ΡŽΠ±ΠΎΠ΅ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ воТдСнию Π½Π΅ ΠΈΠΌΠ΅Π»ΠΎ Π±Ρ‹ смысла, Ссли Π±Ρ‹ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, Π½Π°ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠΉΡΡ Π²ΠΎΠ΄ΠΈΡ‚ΡŒ, скаТСм, ВАЗ 2106 Π½Π΅ ΠΌΠΎΠ³ ΠΏΠΎΡ‚ΠΎΠΌ Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ВАЗ 2110 ΠΈΠ»ΠΈ BMW X3. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ смог Π±Ρ‹ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ пСдаль Π³Π°Π·Π° находится Π»Π΅Π²Π΅Π΅ ΠΏΠ΅Π΄Π°Π»ΠΈ Ρ‚ΠΎΡ€ΠΌΠΎΠ·Π°, Π° вмСсто руля – дТойстик.

Всё Π΄Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ основныС элСмСнты управлСния автомобиля ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ дСйствия. Π’ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½Π°Π»Π΅Π²ΠΎ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ€ΡƒΠ»ΡŒ, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΌ Π³ΠΈΠ΄Ρ€ΠΎΡƒΡΠΈΠ»ΠΈΡ‚Π΅Π»ΡŒ ΠΈΠ»ΠΈ Π½Π΅Ρ‚.
Если Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ Π½Π°Π΄ΠΎ Π΄ΠΎΠ΅Ρ…Π°Ρ‚ΡŒ с Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄ΠΎ Π΄ΠΎΠΌΠ°, Ρ‚ΠΎ ΠΎΠ½ сядСт Π·Π° Ρ€ΡƒΠ»ΡŒ автомобиля ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ дСйствия, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΈΠΏ автомобиля ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚. По сути, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ интСрфСйс, Π° Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΡƒΡΡΡŒ ΠΎΡ‚ сущности автомобиля, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ с этим интСрфСйсом. Если Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŽ прСдстоит Π΅Ρ…Π°Ρ‚ΡŒ ΠΏΠΎ Π½Π΅ΠΌΠ΅Ρ†ΠΊΠΎΠΌΡƒ Π°Π²Ρ‚ΠΎΠ±Π°Π½Ρƒ, ΠΎΠ½, вСроятно Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚ быстрый Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ с Π½ΠΈΠ·ΠΊΠΎΠΉ посадкой, Π° Ссли прСдстоит Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΈΠ· ΠΎΡ‚Π΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°Ρ€Π°Π»ΡŒΠ½ΠΈΠΊΠ° Π² Π“ΠΎΡ€Π½ΠΎΠΌ АлтаС послС доТдя, скорСС всСго, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Π½ УАЗ с армСйскими мостами. Но, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, интСрфСйс останСтся ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ.

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ – это свойство систСмы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ интСрфСйсом Π±Π΅Π· ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΈΠΏΠ΅ ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ структурС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

НапримСр, Ссли Π²Ρ‹ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ„Π°ΠΉΠ»Π°, Ρ‚ΠΎ, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Π² классС, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ: byte[] readBytes( int n );
ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· сокСта. Π’ классС, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅ΠΌ сокСт, Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ readBytes. Достаточно Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π² вашСй систСмС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса, ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ достигнут.

ΠŸΡ€ΠΈ этом Π»ΠΎΠ³ΠΈΠΊΠ° систСмы ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π±ΡƒΠ΄ΡƒΡ‚ Π»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Ρ‹ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ ΠΏΠΎ сСти. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ абстрагируСмся ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ спСциализации получСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ интСрфСйса. ЕдинствСнноС Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ этом – Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠΌΠ΅Π» ΠΌΠ΅Ρ‚ΠΎΠ΄ readBytes.

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

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

Нам Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ†Π΅Π»Ρ‹ΠΉ ΠΌΠΎΠ΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ряд Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ: сСдан, унивСрсал ΠΈ ΠΌΠ°Π»ΠΎΠ»ΠΈΡ‚Ρ€Π°ΠΆΠ½Ρ‹ΠΉ хэтч-бэк. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ собираСмся ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ с нуля, Π°, взяв Π·Π° основу ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅, внСсём ряд конструктивных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. НапримСр, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π³ΠΈΠ΄Ρ€ΠΎΡƒΡΠΈΠ»ΠΈΡ‚Π΅Π»ΡŒ руля ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠΌ Π·Π°Π·ΠΎΡ€Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΡ€Ρ‹Π»ΡŒΡΠΌΠΈ ΠΈ ΠΊΡ€Ρ‹ΡˆΠΊΠΎΠΉ ΠΊΠ°ΠΏΠΎΡ‚Π°, поставим ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ‚ΡƒΠΌΠ°Π½Π½Ρ‹Π΅ Ρ„ΠΎΠ½Π°Ρ€ΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° Ρ„ΠΎΡ€ΠΌΠ° ΠΊΡƒΠ·ΠΎΠ²Π°.

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

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

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

ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ ΠΎΡ‚ старой ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ дСйствия, ΠΊΠ°ΠΊ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ‚ΡƒΠΌΠ°Π½ΠΎΠΊ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… просто Π½Π΅Ρ‚ Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ).

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

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π½Π° сайтС Π½ΡƒΠΆΠ½Ρ‹ Ρ‚Ρ€ΠΈ Π²ΠΈΠ΄Π° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ β€” новости, объявлСния ΠΈ ΡΡ‚Π°Ρ‚ΡŒΠΈ. Π’ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠΈ β€” Ρƒ всСх Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈ тСкст, Ρƒ новостСй ΠΈ объявлСний Π΅ΡΡ‚ΡŒ Π΄Π°Ρ‚Π°. Π’ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ ΠΎΠ½ΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ β€” Ρƒ статСй Π΅ΡΡ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€Ρ‹, Ρƒ новостСй β€” источники, Π° Ρƒ объявлСний β€” Π΄Π°Ρ‚Π°, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ΠΎ становится Π½Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ.

Π‘Π°ΠΌΡ‹Π΅ простыС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приходят Π² Π³ΠΎΠ»ΠΎΠ²Ρƒ β€” Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… класса ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ. Или Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ класс, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ всС свойства, присущиС всСм Ρ‚Ρ€Π΅ΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ, Π° Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΡƒΠΆΠ½Ρ‹Π΅. Но вСдь для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎ Π»ΠΎΠ³ΠΈΠΊΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. Π”Π΅Π»Π°Ρ‚ΡŒ нСсколько ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² (get_news, get_announcements, get_articles) β€” это ΡƒΠΆΠ΅ совсСм Π½Π΅Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎ. Π’ΡƒΡ‚ Π½Π°ΠΌ ΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ.

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

Π“Ρ€ΡƒΠ±ΠΎ говоря, это класс-шаблон. Он Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Ρ‚ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½Π° извСстна Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΆΠ΅ классы Π΅Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‚. Но, ΠΏΠΎΡ€Π° ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΎΡ‚ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΊ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. Π‘Ρ€Π°Π·Ρƒ ΠΎΠ³ΠΎΠ²ΠΎΡ€ΡŽΡΡŒ, рассматриваСтся ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с минимальной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ. ВсС объяснСния β€” Π² коммСнтариях Π² ΠΊΠΎΠ΄Π΅.

// Π° этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡŽ, Π½ΠΎ ΠΌΡ‹ Π½Π΅ Π·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ объявляСм Π΅Π³ΠΎ абстрактным
abstract public function do_print ();
>

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

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ созданию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ± использовании

Π‘ΡƒΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΠ±ΡŒΠ΅ΠΊΡ‚ΠΎΠ² Ρ€Π°Π·Π½Ρ‹Ρ… классов.

Π’ΠΎΡ‚ ΠΈ всС. Π›Π΅Π³ΠΊΠΈΠΌ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ€ΡƒΠΊΠΈ Π±Ρ€ΡŽΠΊΠΈ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π² элСгантныС ΡˆΠΎΡ€Ρ‚Ρ‹ :-).

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

НСмного Ρ‚Π΅ΠΎΡ€ΠΈΠΈ

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΎΠΎΠΏ

ООП – ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ° программирования, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ основными концСпциями ΡΠ²Π»ΡΡŽΡ‚ΡΡ понятия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ классов. Π’ Ρ†Π΅Π½Ρ‚Ρ€Π΅ ООП находится понятиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ β€” это ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‹Π»Π°Ρ‚ΡŒ сообщСния, ΠΈ которая ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π° Π½ΠΈΡ… Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ свои Π΄Π°Π½Π½Ρ‹Π΅. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ β€” это экзСмпляр класса. Π”Π°Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° скрыты ΠΎΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π‘ΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… называСтся инкапсуляциСй. НаличиС инкапсуляции достаточно для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΡΡ‚ΠΈ языка программирования, Π½ΠΎ Π΅Ρ‰Ρ‘ Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ориСнтированности β€” для этого трСбуСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ наслСдования. Но Π΄Π°ΠΆΠ΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ инкапсуляции ΠΈ наслСдования Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ язык программирования Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΌ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ООП. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ прСимущСства ООП ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° Π² языкС программирования Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ; Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ спСцификациСй ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ языком программирования, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±Ρ‹Π»ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ‹ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ориСнтированности, Π±Ρ‹Π»Π° Π‘ΠΈΠΌΡƒΠ»Π°. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚ своСго появлСния (Π² 1967 Π³ΠΎΠ΄Ρƒ), этот язык программирования ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» поистинС Ρ€Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΈΠ΄Π΅ΠΈ: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, классы, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Π΄Ρ€., ΠΎΠ΄Π½Π°ΠΊΠΎ это всё Π½Π΅ Π±Ρ‹Π»ΠΎ воспринято соврСмСнниками ΠΊΠ°ΠΊ Π½Π΅Ρ‡Ρ‚ΠΎ Π³Ρ€Π°Π½Π΄ΠΈΠΎΠ·Π½ΠΎΠ΅. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Π²ΠΈΡ‚Ρ‹ Аланом КэйСм ΠΈ Дэном Ингаллсом Π² языкС Smalltalk. ИмСнно ΠΎΠ½ стал ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΡˆΠΈΡ€ΠΎΠΊΠΎ распространённым ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ языком программирования. (C#, C++, Java, Ruby, PHP, Perl, Python). ООП Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΡ‹Π΅ систСмы (extensible systems). Π­Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· самых Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… достоинств ООП ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΎΡ‚ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² программирования. Π Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ (extensibility) ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ систСму ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΎΠ²Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π±Π΅Π· внСсСния Π² Π½Π΅Π΅ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½Π° этапС выполнСния. Smalltalk β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык программирования с динамичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Π² Xerox PARC Аланом КэйСм, Дэном Ингаллсом, Π’Π΅Π΄ΠΎΠΌ ΠšΡΠ³Π»Π΅Ρ€ΠΎΠΌ, АдСль Π“ΠΎΠ»Π΄Π±Π΅Ρ€Π³, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π² 1970-Ρ… Π³ΠΎΠ΄Π°Ρ…. Π―Π·Ρ‹ΠΊ Π±Ρ‹Π» прСдставлСн ΠΊΠ°ΠΊ Smalltalk-80. Smalltalk ΠΎΠΊΠ°Π·Π°Π» большоС влияниС Π½Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… языков, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ: Objective-C, Actor, Java, Groovy ΠΈ Ruby. МногиС ΠΈΠ΄Π΅ΠΈ 1980-Ρ… ΠΈ 1990-Ρ… ΠΏΠΎ написанию ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ появились Π² сообщСствС Smalltalk. К Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ отнСсти Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³, ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ проСктирования (ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ПО), ΠΊΠ°Ρ€Ρ‚Ρ‹ «класс β€” обязанности β€” взаимодСйствиС» ΠΈ ΡΠΊΡΡ‚Ρ€Π΅ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Ρ†Π΅Π»ΠΎΠΌ. Π‘ΠΈ β€” язык программирования, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Π² 1969β€”1973 Π³ΠΎΠ΄Π°Ρ… сотрудниками Bell Labs КСном Вомпсоном ΠΈ ДСннисом Π ΠΈΡ‚Ρ‡ΠΈ ΠΊΠ°ΠΊ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ языка Π‘ΠΈ. Благодаря близости ΠΏΠΎ скорости выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, написанных Π½Π° Π‘ΠΈ, ΠΊ языку ассСмблСра, этот язык ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ создании систСмного ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΈ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΊΡ€ΡƒΠ³Π° Π·Π°Π΄Π°Ρ‡. Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ ΠΎΠΊΠ°Π·Π°Π» сущСствСнноС влияниС Π½Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ индустрии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Π° Π΅Π³ΠΎ синтаксис стал основой для Ρ‚Π°ΠΊΠΈΡ… языков программирования ΠΊΠ°ΠΊ C++, C# ΠΈ Java.

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

Абстракция – это ΠΏΡ€ΠΈΠ΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ характСристик, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‡Ρ‘Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹, отличая ΠΎΡ‚ всСх Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Основная идСя состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ способ использования составных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Π²ΠΈΠ΄Π΅ Π±ΠΎΠ»Π΅Π΅ простых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ абстракция раздСляСт способ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ Π΅Ρ‘ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ высокого уровня с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня. (ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°Ρ…, Π½Π΅ упоминая ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ΠΈ сдСланы). Абстракция позволяСт Π·Π°Π΄Π΅ΠΈΜ†ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ, игнорируя Π΅Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΈ работая с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ дСталями Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… уровнях. ИмСя Π΄Π΅Π»ΠΎ с составным ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, Π²Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ Π΄Π΅Π»ΠΎ с абстракциСй. Если Π²Ρ‹ рассматриваСтС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠ°ΠΊ Β«Π΄ΠΎΠΌΒ», Π° Π½Π΅ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ стСкла, дрСвСсины ΠΈ Π³Π²ΠΎΠ·Π΄Π΅ΠΈΜ†, Π²Ρ‹ ΠΏΡ€ΠΈΠ±Π΅Π³Π°Π΅Ρ‚Π΅ ΠΊ абстракции. Если Π²Ρ‹ рассматриваСтС мноТСство Π΄ΠΎΠΌΠΎΠ² ΠΊΠ°ΠΊ Β«Π³ΠΎΡ€ΠΎΠ΄Β», Π²Ρ‹ ΠΏΡ€ΠΈΠ±Π΅Π³Π°Π΅Ρ‚Π΅ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΈΜ† абстракции. Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ классы ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой абстракции, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° ΠΎΠ±Ρ‰ΠΈΡ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°Ρ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классов ΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… классов ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ классом. Π£Π΄Π°Ρ‡Π½Ρ‹ΠΈΜ† интСрфСйс класса β€” это абстракция, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° интСрфСйсС, Π½Π΅ бСспокоясь ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°Ρ… Ρ€Π°Π±ΠΎΡ‚Ρ‹ класса. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ абстракции Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡˆΠ°Π³Ρƒ. Если Π±, открывая ΠΈΠ»ΠΈ закрывая Π΄Π²Π΅Ρ€ΡŒ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π²ΠΎΠ»ΠΎΠΊΠ½Π°ΠΌΠΈ дрСвСсины, ΠΌΠΎΠ»Π΅ΠΊΡƒΠ»Π°ΠΌΠΈ Π»Π°ΠΊΠ° ΠΈ стали, Π²Ρ‹ вряд Π»ΠΈ смогли Π±Ρ‹ Π²ΠΎΠΈΜ†Ρ‚ΠΈ Π² Π΄ΠΎΠΌ ΠΈΠ»ΠΈ Π²Ρ‹ΠΈΜ†Ρ‚ΠΈ ΠΈΠ· Π½Π΅Π³ΠΎ. Абстракция β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π³Π»Π°Π²Π½Ρ‹Ρ… способов Π±ΠΎΡ€ΡŒΠ±Ρ‹ со ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π°. Π‘Π»ΠΎΠΉ абстрагирования (ΠΈΠ»ΠΈ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции) β€” это способ ΡƒΠΉΡ‚ΠΈ ΠΎΡ‚ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ мноТСства Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΎΠΎΠΏ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΎΠΎΠΏ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΎΠΎΠΏ

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

Когда абстракция нас ΠΏΠΎΠΊΠΈΠ΄Π°Π΅Ρ‚, Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ инкапсуляция. Абстракция Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚: Β«Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΠΎΠ±Ρ‰Π΅ΠΈΜ† Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния». Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ добавляСт: Β«Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΠΈΠ½ΠΎΠΈΜ† Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния». ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ Π½Π°ΡˆΡƒ аналогию: инкапсуляция позволяСт Π²Π°ΠΌ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Π΄ΠΎΠΌ, Π½ΠΎ Π½Π΅ Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ΄ΠΎΠΈΜ†Ρ‚ΠΈ достаточно Π±Π»ΠΈΠ·ΠΊΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΈΠ· Ρ‡Π΅Π³ΠΎ сдСлана Π΄Π²Π΅Ρ€ΡŒ. Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ позволяСт Π²Π°ΠΌ Π·Π½Π°Ρ‚ΡŒ ΠΎ сущСствовании Π΄Π²Π΅Ρ€ΠΈ, ΠΎ Ρ‚ΠΎΠΌ, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Π° ΠΎΠ½Π° ΠΈΠ»ΠΈ Π·Π°ΠΏΠ΅Ρ€Ρ‚Π°, Π½ΠΎ ΠΏΡ€ΠΈ этом Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΈΠ· Ρ‡Π΅Π³ΠΎ ΠΎΠ½Π° сдСлана (ΠΈΠ· Π΄Π΅Ρ€Π΅Π²Π°, стСкловолокна, стали ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°), ΠΈ ΡƒΠΆ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ смоТСтС Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π²ΠΎΠ»ΠΎΠΊΠ½Π° дрСвСсины.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΎΠΎΠΏ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΎΠΎΠΏ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΎΠΎΠΏ

(Абстрактный класс Π±Π΅Π»Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ)

Как ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ мноТСствСнноС наслСдованиС?

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

Π”Ρ€ΡƒΠ³ΠΈΠ΅ понятия ООП

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€

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

ДСструктор

ВызываСтся ΠΏΡ€ΠΈ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Он ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для освобоТдСния памяти.

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄

Π’ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ (функция) класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ Π² классах-наслСдниках Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ конкрСтная рСализация ΠΌΠ΅Ρ‚ΠΎΠ΄Π° для Π²Ρ‹Π·ΠΎΠ²Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ Π²ΠΎ врСмя исполнСния. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, программисту Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌ Ρ‡Π΅Ρ€Π΅Π· Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹: достаточно лишь Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ классу ΠΈΠ»ΠΈ наслСднику класса, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ объявлСн. Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… ΠΏΡ€ΠΈΡ‘ΠΌΠΎΠ² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ°. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, Ρ‚Π°ΠΊ ΠΈ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ любого Π΅Π³ΠΎ класса-наслСдника. ΠŸΡ€ΠΈ этом Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс опрСдСляСт способ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈ Π»ΡŽΠ±Ρ‹Π΅ Π΅Π³ΠΎ наслСдники ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ этого способа. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языках программирования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Java, Π½Π΅Ρ‚ понятия Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π΄Π°Π½Π½ΠΎΠ΅ понятиС слСдуСт ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ лишь для языков, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΆΠ΅ (ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Python), всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ β€” Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ класс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ сущСствованиС. Π’Π°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π±Π΅Π· Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ «чистыми Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈΒ» (ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π°Π½Π³Π». pure virtual) ΠΈΠ»ΠΈ абстрактными. Класс, содСрТащий хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ‚ΠΎΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ абстрактным. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ класса ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ нСльзя (Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языках допускаСтся, Π½ΠΎ Π²Ρ‹Π·ΠΎΠ² абстрактного ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ ошибкС). НаслСдники абстрактного класса Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ для всСх Π΅Π³ΠΎ абстрактных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΈΠ½Π°Ρ‡Π΅ ΠΎΠ½ΠΈ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π±ΡƒΠ΄ΡƒΡ‚ абстрактными классами. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ класса, ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, создаётся Ρ‚Π°Π±Π»ΠΈΡ†Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ своСго класса. Для Π²Ρ‹Π·ΠΎΠ²Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ: ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° бСрётся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Π° ΠΈΠ· Π½Π΅Ρ‘, ΠΏΠΎ фиксированному ΡΠΌΠ΅Ρ‰Π΅Π½ΠΈΡŽ, β€” ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса. ΠŸΡ€ΠΈ использовании мноТСствСнного наслСдования ситуация нСсколько услоТняСтся Π·Π° счёт Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² становится Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ СдинствСнной обязанности (Single responsibility principle) ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ ΠΈ эта ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ инкапсулирована Π² класс. ВсС Π΅Π³ΠΎ сСрвисы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π° обСспСчСниС этой обязанности.

Π’ Ρ‡Π΅ΠΌ ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы ООП?

ΠžΠ±Ρ‰ΠΈΠ΅ полоТСния

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

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

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

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

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ООП с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Π½Π° C#. Π§Π°ΡΡ‚ΡŒ пСрвая. ВсС, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΎ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ΅

Π― ΠΌΠ½ΠΎΠ³ΠΎ писал Π½Π° смСТныС Ρ‚Π΅ΠΌΡ‹, Π²Ρ€ΠΎΠ΄Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ MVC, Entity Framework, ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° Β«Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉΒ» ΠΈ Ρ‚.ΠΏ. Моим ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ всСгда Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ΅ раскрытиС Ρ‚Π΅ΠΌΡ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŽ Π½Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π³ΡƒΠ³Π»ΠΈΡ‚ΡŒ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π΄Π΅Ρ‚Π°Π»ΠΈ. Π­Ρ‚ΠΎΡ‚ Ρ†ΠΈΠΊΠ» статСй ΠΎΠΏΠΈΡˆΠ΅Ρ‚ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ всС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ООП, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Однако эта ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ свой ΠΏΡƒΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ: ΠΎΠ½Π° написана ΠΈ для ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… программистов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡΠ²Π΅ΠΆΠΈΡ‚ΡŒ свои знания.

Π‘Ρ€Π°Π·Ρƒ скаТу, Π΄Π°Π»Π΅ΠΊΠΎ Π² Ρ‚Π΅ΠΎΡ€ΠΈΡŽ ΠΌΡ‹ Π²Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ β€” нас ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ спСцифичныС вопросы. Π“Π΄Π΅ это Π±ΡƒΠ΄Π΅Ρ‚ Π½ΡƒΠΆΠ½ΠΎ, я Π±ΡƒΠ΄Ρƒ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°Ρ‚ΡŒ повСствованиС ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° C#.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ООП ΠΈ Π² Ρ‡Ρ‘ΠΌ Π΅Π³ΠΎ ΠΏΠ»ΡŽΡΡ‹?

«ООП» Π·Π½Π°Ρ‡ΠΈΡ‚ Β«ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠžΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅Β». Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ написанию ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ основываСтся Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ…, Π° Π½Π΅ Π½Π° функциях ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ…. Π­Ρ‚Π° модСль ставит Π² Ρ†Π΅Π½Ρ‚Ρ€ внимания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π° Π½Π΅ дСйствия, Π΄Π°Π½Π½Ρ‹Π΅, Π° Π½Π΅ Π»ΠΎΠ³ΠΈΠΊΡƒ. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ β€” рСализация класса. ВсС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса ΠΏΠΎΡ…ΠΎΠΆΠΈ Π΄Ρ€ΡƒΠ³ Π½Π° Π΄Ρ€ΡƒΠ³Π°, Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ значСния. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, спСцифичныС для Π½ΠΈΡ….

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

Π§Ρ‚ΠΎ Π·Π° ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ООП?

БСйчас ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΏΠΎΠ·ΠΆΠ΅ рассмотрим Π² подробностях:

Π›Π°Π΄Π½ΠΎ, Ρ‚ΡƒΡ‚ ΠΌΡ‹ ΠΊΠΎΡΠ½ΡƒΠ»ΠΈΡΡŒ большого количСства Ρ‚Π΅ΠΎΡ€ΠΈΠΈ, настало врСмя Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ. Π― надСюсь, это Π±ΡƒΠ΄Π΅Ρ‚ интСрСсно.

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

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ всС сцСнарии использования ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ°, использованиС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΡ Π²ΠΎ врСмя написания ΠΊΠΎΠ΄Π°.

ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

Π’ Π³Π»Π°Π²Π½ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Program.cs Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ напишСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

И Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ это запустим, Π²Ρ‹Π²ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ:

DisplayOverload 100
DisplayOverload method overloading
DisplayOverload method overloading100

ΠœΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ компиляции:

Error: Type β€˜InheritanceAndPolymorphism.Overload’ already defines a member called β€˜DisplayOverload’ with the same parameter types

Π—Π΄Π΅ΡΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ, ΠΈ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это нСльзя.

…то Ρƒ нас это Π½Π΅ получится:

Error: Type β€˜InheritanceAndPolymorphism.Overload’ already defines a member called β€˜DisplayOverload’ with the same parameter types

Π—Π΄Π΅ΡΡŒ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΡ… Ρ†Π΅Π»ΠΎΠ΅ число Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, с Ρ‚ΠΎΠΉ лишь Ρ€Π°Π·Π½ΠΈΡ†Π΅ΠΉ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½ ΠΊΠ°ΠΊ статичСский.

Π’ΠΎ нас ΠΆΠ΄Ρ‘Ρ‚ Ρ€Π°Π·ΠΎΡ‡Π°Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅:

Error: Cannot define overloaded method β€˜DisplayOverload’ because it differs from another method only on ref and out

Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ: Π½Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ влияниС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Π³ΠΎ имя ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ (ΠΈΡ… Ρ‚ΠΈΠΏ, количСство). ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ доступа Π½Π΅ Π²Π»ΠΈΡΡŽΡ‚. Π”Π²ΡƒΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚.

Роль ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова params Π² ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ΅

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ… Ρ€Π°Π·Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ²:

Π‘ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ трСмя ΠΌΡ‹, Π²Ρ€ΠΎΠ΄Π΅, Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ взглянСм Π½Π° Ρ‡Π΅Ρ‚Π²Ρ‘Ρ€Ρ‚Ρ‹ΠΉ.

Π’ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π΄Π²Π΅ ошибки:

Error1: The parameter name β€˜a’ is a duplicate

Error2: A local variable named β€˜a’ cannot be declared in this scope because it would give a different meaning to β€˜a’, which is already used in a β€˜parent or current’ scope to denote something else

ΠžΡ‚ΡΡŽΠ΄Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ Π²Ρ‹Π²ΠΎΠ΄: ΠΈΠΌΠ΅Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ имя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, созданной Π² этом ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅.

Overload.cs

Program.cs

ΠœΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΎΠΎΠΏ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΎΠΎΠΏ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΎΠΎΠΏ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΎΠΎΠΏ

Overload.cs

Program.cs

Π­Ρ‚ΠΎ даст Π½Π°ΠΌ Ρ‚Π°ΠΊΠΎΠΉ Π²Ρ‹Π²ΠΎΠ΄:

Π’Π°ΠΆΠ½ΠΎ: это ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ послСднСму Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½ΠΈΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚:

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ запустится, ΠΈ такая синтаксичСская конструкция Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ n массивов строк. Вторая ΠΆΠ΅ выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ:

Error: The parameter array must be a single dimensional array

Overload.cs

Program.cs

Π’Ρ‹Π²ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ:

Π£ΠΆΠ΅ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ:

Error: The best overloaded method match for β€˜InheritanceAndPolymorphism.Overload.DisplayOverload(int, params string[])’ has some invalid arguments

Error:Argument 2: cannot convert from β€˜string[]’ to β€˜string’

Π”ΡƒΠΌΠ°ΡŽ, Ρ‚ΡƒΡ‚ всё понятно β€” ΠΈΠ»ΠΈ, ΠΈΠ»ΠΈ. Π‘ΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΈ ΠΎΠ΄Π½ΠΈΠΌ массивом нСльзя.

Overload.cs

Program.cs

ПослС Π΅Ρ‘ выполнСния ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π² консоли:

Π­Ρ‚ΠΎ происходит ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ синтаксисС массив пСрСдаётся ΠΏΠΎ ссылкС. Однако стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ выполнСния Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚

Π’Π΅Π΄ΡŒ ΠΈΠ· ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² C# автоматичСски Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ, Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ массив.

parameterArray
The two integers 200 300
parameterArray

Overload.cs

Program.cs

Π’ консоли ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ:

System.Int32 System.String System.Double
System.Object[] System.Object[] System.Int32 System.String System.Double

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

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

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

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