Π Π°Π·Π½ΠΎΠ΅

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования: НОУ ИНВУИВ | ЛСкция | ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования β€” БтудопСдия

ООП являСтся Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΠΌ ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΌ этапом (послС структурного ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ про­граммирования) Π² процСссС развития структурного ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°. Π‘ΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π² сСрС­динС 70-Ρ… Π³ΠΎΠ΄ΠΎΠ² большиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ систСмы ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Π² Ρ€Π°ΠΌΒ­ΠΊΠ°Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ стиля использованиС структурного ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π½Π΅ Π΄Π°Π΅Ρ‚ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ эффСкта. По ΠΌΠ΅Ρ€Π΅ увСличСния числа ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π² создаваСмых ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… систСмах число ошибок, связанных с Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ использовани­См ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ взаимосвязСй ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ, стало Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ расти. Π‘Ρ€ΠΎΠΊΠΈ Π²Π²ΠΎΠ΄Π° Π² ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚Π°Ρ†ΠΈΡŽ этих систСм постоянно ΡΡ€Ρ‹Π²Π°Π»ΠΈΡΡŒ. Π£ΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ число ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ошибок ΠΈ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΈΡ… ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ³Π»Π° ΠΏΠΎΠ·Π²ΠΎΒ­Π»ΠΈΡ‚ΡŒ алгоритмичСская дСкомпозиция, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰Π°ΡΡΡ Π½Π° «СстСствСнныС» элС­мСнты (ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹) пространства Ρ€Π΅ΡˆΠ°Π΅ΠΌΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ. Π’ этом случаС Π½Π° этапС кодирования ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Π»ΠΎΡΡŒ сопоставлСниС программистских кон­струкций с ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ.

Π’Π°ΠΊΡƒΡŽ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ про­странства Ρ€Π΅ΡˆΠ°Π΅ΠΌΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области. Для описания Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΒ­Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ синтСза Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½Ρ‹Π΅ языковыС срСдства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ построСны Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Ρ….

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ понятиСм ООП являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ»ΠΈ класс Π² C++, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΒ­ΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ с Π΄Π²ΡƒΡ… ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области: класс соотвСт­ствуСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ этой области. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ программирования, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅ΠΉ это соотвСтствиС: «класс» Π² ООП — это опрСдСлСнная программная структура, которая ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ трСмя ваТнСй­шими свойствами:



— инкапсуляции;

— наслСдования;

— ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ°.

Π­Ρ‚ΠΈ свойства ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ программистом, Π° ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Β­Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ языком программирования (транслятором, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΌ это язык). Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ°Ρ‚ΡŒ структуру ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ классы.

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для модСлирования (отобраТСния) понятий ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области Π² Π²ΠΈΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… Π΅Π΄ΠΈΠ½ΠΈΡ†, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰ΠΈΡ… Π² сСбС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (состояниС ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области.

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


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

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

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

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ свойств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ ( «содСрТаниС Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅Β») прСдставляСт собой объСдинСниС ΠΈ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ, Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… эти Π΄Π°Π½Π½Ρ‹Π΅. Π’ совокупности ΠΎΠ½ΠΈ ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ свойства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π’ C++ Π΄Π°Π½Π½Ρ‹Π΅ класса ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ элСмСнтами Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ полями,Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΈΠ»ΠΈ элСмСнтами-функциями.

Доступ ΠΊ полям ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· имя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ ΡΠΎΠΎΡ‚Β­Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π²Ρ‹Π±ΠΎΡ€Π° Β«.Β» ΠΈ Β«->Β». Π­Ρ‚ΠΎ позволяСт Π² максимальной стСпСни ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ содСрТаниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΎΡ‚ внСш­нСго окруТСния, Ρ‚. Π΅. ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΈ наглядно ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ доступ ΠΊ элСмСнтам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π·Π°ΠΌΠ΅Π½Π° ΠΈΠ»ΠΈ модификация ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², инкапсулиро­ванных Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π΅ Π²Π»Π΅Ρ‡Π΅Ρ‚ Π·Π° собой ΠΏΠ»ΠΎΡ…ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… послСд­ствий для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Ρ†Π΅Π»ΠΎΠΌ. ΠŸΡ€ΠΈ нСобходимости указания ΠΈΠΌΠ΅Π½ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² Ρ‚Π΅Π»Π΅ описания этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² C++ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ слово this,, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° являСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ синонимом ΠΈΠΌΠ΅Π½ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Π° инкапсуляция ? ΠžΡ‚Π²Π΅Ρ‚ прост, ΠΌΡ‹ — люди. А Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ свойствСнно ΠΎΡˆΠΈΠ±Π°Ρ‚ΡŒΡΡ. Никто Π½Π΅ застрахован ΠΎΡ‚ ошибок. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΡ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ, ΠΌΡ‹, ΠΊΠ°ΠΊ Π±Ρ‹, Π²ΠΎΠ·Π²ΠΎΠ΄ΠΈΠΌ ΠΊΡ€Π΅ΠΏΠΎΡΡ‚ΡŒ, которая Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, ΠΎΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ошибок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΈ прямом доступС ΠΊ этим Π΄Π°Π½Π½Ρ‹ΠΌ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ этого ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° ΠΎΡ‡Π΅Π½ΡŒ часто ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ошибки Π² ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. А это Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ процСсс поиска ΠΈ исправлСния этих ошибок.

МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ инкапсуляция ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ ΠΏΠΎΠ΄ собой скрытиС Π΄Π°Π½Π½Ρ‹Ρ… (data hiding), Ρ‡Ρ‚ΠΎ позволяСт Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ эти Π΄Π°Π½Π½Ρ‹Π΅.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ‚ΠΎΡ‡Π½ΠΎ опрСдСляСт ΡΡƒΡ‚ΡŒ инкапсуляции:

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ состояния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° скрыты ΠΎΡ‚ внСшнСго ΠΌΠΈΡ€Π°. ИзмСнСниС состояния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°(Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…) Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π’ΠžΠ›Π¬ΠšΠž с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²(ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ).

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΆΠ΅ это Ρ‚Π°ΠΊ Π²Π°ΠΆΠ½ΠΎ? Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ позволяСт Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ состояния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΎΡ‚ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΡ… использования.

Π­Ρ‚ΠΎ сущСствСнно ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ввСдСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² нСдопустимоС состояниС ΠΈ нСсанкционированноС Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ постулата рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρƒ Вас Π½Π΅ заводится машина ΠΈ Π’Ρ‹, ΡƒΠ²Ρ‹, Π½Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊ ΠΈ ΠΏΠ»ΠΎΡ…ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ Π² ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…. Π’Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΏΠΎΡ‚ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ Π²Ρ‹Π΄Π΅Ρ€Π³ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ шланги, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Ρ‚.Π΄. Π₯ΠΎΡ€ΠΎΡˆΠΎ, Ссли Π’Ρ‹ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ, Π³Π΄Π΅ ΠΈ ΠΊΠ°ΠΊ Π²Ρ‹Π΄Π΅Ρ€Π³ΠΈΠ²Π°Π»ΠΈ ΠΈ ΠΎΡ‚ΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Π»ΠΈ. А Ссли Π½Π΅Ρ‚? Или Ρƒ Вас стрСлка уровня Ρ‚ΠΎΠΏΠ»ΠΈΠ²Π° стоит Π½Π° Π½ΡƒΠ»Π΅, Π° Π’Ρ‹ считаСтС, Ρ‡Ρ‚ΠΎ Ρƒ Вас ΠΏΠΎΠ»Π½ΠΎ Ρ‚ΠΎΠΏΠ»ΠΈΠ²Π° ΠΈ ΠΏΠΎΠ»Π΅Π·Π΅Ρ‚Π΅ со спичками Π²Π½ΡƒΡ‚Ρ€ΡŒ Π±Π΅Π½Π·ΠΎΠ±Π°ΠΊΠ° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Ρ‚ΠΎΠΏΠ»ΠΈΠ²Π°. КакиС послСдствия Вас ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ? Π’ Π»ΡƒΡ‡ΡˆΠ΅ΠΌ случаС Π’Ρ‹ ΠΈ Π’Π°ΡˆΠ° машина останутся ΠΆΠΈΠ²Ρ‹, Ссли Π’Π°ΠΌ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ²Π΅Π·Π΅Ρ‚. Аналогично ΠΈ с нашими ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ слоТными, Π° Π’Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π² Π½ΠΈΡ… ΠΏΠΎΠ΄ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ, Π½Π΅ прСдставляя ΠΈΡ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ.

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡ‡ΠΈΠ½ΠΈΡ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Ρƒ Π½Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈΠ² сСбС ΠΈ самой машинС Π²Ρ€Π΅Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠ³Π»Π°ΡΠΈΡ‚ΡŒ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎ-слСсарСй, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ разбираСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ части Π’Π°ΡˆΠ΅ΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹. Если Π’Ρ‹ скаТСтС, Ρ‡Ρ‚ΠΎ Ρƒ Вас Π½Π΅ Π³ΠΎΡ€ΠΈΡ‚ Π»Π°ΠΌΠΏΠΎΡ‡ΠΊΠ° подсвСтки Π² салонС, Ρ‚ΠΎ Π·Π°ΠΌΠ΅Π½Ρƒ Π»Π°ΠΌΠΏΠΎΡ‡ΠΊΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Ρ‚ спСциалист ΠΏΠΎ ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΡŽ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ. Аналогично ΠΈ Π² нашСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅. Π•ΡΡ‚ΡŒ «ΠΌΠ°ΡΡ‚Π΅Ρ€Π°» — ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ «ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ся» Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… областях, Π½ΠΎ свою ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΎΠ½ΠΈ Π·Π½Π°ΡŽΡ‚. А самоС Π³Π»Π°Π²Π½ΠΎΠ΅, ΠΎΠ½ΠΈ Π·Π½Π°ΡŽΡ‚ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ состояниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈΡ‚ΡŒ Π΅Π³ΠΎ. ΠžΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΉ постулат ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΆΠΈΡ‚Π΅ΠΉΡΠΊΡƒΡŽ ΠΌΡƒΠ΄Ρ€ΠΎΡΡ‚ΡŒ: Π½Π΅ знаСшь, Π½Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅ΡˆΡŒ ΠΊΠ°ΠΊ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ — попроси это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, ΠΊΡ‚ΠΎ Π·Π½Π°Π΅Ρ‚ ΠΊΠ°ΠΊ это ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. К соТалСнию, всС ΠΌΡ‹ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡˆΠ°Π³Ρƒ ΠΏΡ€Π΅Π½Π΅Π±Ρ€Π΅Π³Π°Π΅ΠΌ этим ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ. Π’ ООП ΠΌΡ‹ это ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ опрСдСляСм ΠΊΠ°ΠΊ Π·Π°ΠΊΠΎΠ½: «ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅Ρ‚ Π΄ΠΈΠ»Π΅Ρ‚Π°Π½Ρ‚ΠΎΠ². Волько спСциалисты ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠ°ΠΊ-Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ состояниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.» Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ этот ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π½ΠΎΠ²ΠΎΡΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

ИмСнованиС классов, элСмСнтов Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ большоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ООП. Названия Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π»ΠΈΠ±ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с названиями, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΌΠΈΡΡ Π² ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области, Π»ΠΈΠ±ΠΎ ясно ΠΎΡ‚Ρ€Π°ΠΆΠ°Ρ‚ΡŒ смысл ΠΈΠ»ΠΈ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ) ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌΠΎΠ³ΠΎ класса, поля ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. ΠŸΡ€ΠΈ этом Π½Π΅ слСдуСт Π±ΠΎΡΡ‚ΡŒΡΡ Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π½ — Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ Π½Π° написаниС окупятся ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ ΠΈ сопровоТдСнии ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°. ВСкст ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ становится понятным Π±Π΅Π· особых ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΒ­Π΅Π². Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ срСдством доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ являСтся описаниС элСмСнтов классов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ спСцификаторов private, protected ΠΈ public, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ‚Ρ€ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… уровня доступа ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ класса: частныС, Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ ΠΈ общСдоступный.

Для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ доступа ΠΊ элСмСнтам Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ private ΠΈΠ»ΠΈ protected, Π² классС ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ public ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ досту­па ΠΊ собствСнным ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΌ элСмСнтам Π΄Π°Π½Π½Ρ‹Ρ….

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² классС ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ друТСствСнныС (friend) ΠΈΠ»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ (virtual). Иногда встрСчаСтся объявлСниС ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Ρ… (overload) Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π“ΠΈΠ±ΠΊΠΎΠ΅ Ρ€Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ доступа позволяСт ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ (Π±Π΅ΡΠΊΠΎΠ½Ρ‚Β­Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅) искаТСния свойств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ нСсанкционированноС использованиС свойств классов.

Π₯ΠΎΡ€ΠΎΡˆΠΈΠΌ стилСм Π² ООП считаСтся организация доступа ΠΊ элСмСнтам Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π±Π΅Π· использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания. Π­Ρ‚ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ являтся Π΄ΠΎΠ³ΠΌΠΎΠΉ, Π½ΠΎ случаи ΠΎΡ‚Ρ…ΠΎΠ΄Π° ΠΎΡ‚ Π½Π΅Π³ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΠ±Π΄ΡƒΠΌΠ°Π½Ρ‹.

НаслСдованиС свойств.

НаслСдованиС Π΅ΡΡ‚ΡŒ свойство классов ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Ρ‚ΡŒ своих ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ² ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΒ­Π²Π°Ρ‚ΡŒ свойства (элСмСнты Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹) своих Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ. Класс-ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ автоматичСски наслСдуСт ΠΎΡ‚ родитСля всС элСмСнты Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ элСмСнты Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Π΄Π°ΠΆΠ΅ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ (ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Β­Π²Π°Ρ‚ΡŒ, ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ) ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ родитСля ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (Π΄ΠΎΠΏΠΎΠ»Π½ΡΡ‚ΡŒ) ΠΈΡ….

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

ΠŸΡ‹Ρ‚Π°ΡΡΡŒ провСсти ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΠΎΠ²Ρ‹Ρ… ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΌΡ‹ Π·Π°Π΄Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ вопросы: Π’ Ρ‡Π΅ΠΌ сходство этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ класса? Π’ Ρ‡Π΅ΠΌ различия? ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ класс ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΈ характСристик, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Π³ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚. ΠœΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ с

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

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

НаслСдованиС Π² ООП позволяСт Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ°Ρ‚ΡŒ родствСнныС ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области. Если класс Π’ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ всСми свойствами клас­са А ΠΈ Π΅Ρ‰Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свойства, Ρ‚ΠΎ класс А называСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ (Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ), Π° класс Π’ называСтся наслСдником класса А. Π’ C++ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠ΅ (с ΠΎΠ΄Π½ΠΈΠΌ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ) ΠΈ мноТСствСнноС (с нСсколькими родитСлями) наслСдованиС.

РодствСнныС ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ свойств классов, ΠΌΠΎΒ­Π³ΡƒΡ‚ ΠΎΡ‚Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ наслСдования, Π½ΠΎ ΠΈ ΠΏΡƒΡ‚Π΅ΠΌ инкапсуляции Π² классС Π² качСствС элСмСнтов Π΄Π°Π½Π½Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… классов.

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

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ родствСнных классов: ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π½Π° экранС -> ЦвСтная Ρ‚ΠΎΡ‡ΠΊΠ° -> ΠŸΡ€ΡΒ­ΠΌΠ°Ρ -> ΠŸΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ. Π—Π΄Π΅ΡΡŒ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ стрСлки ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ порядок наслСдования свойств классов.

ΠŸΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ (Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ) класса Π² описании класса Π² Π‘++ трСбуСтся ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово public. Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ этого ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ свободный доступ ΠΊΠΎ всСм ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ класса, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ описаны Π² самом ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ классС. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ ΠΆΠ΅ случаС, ΠΌΡ‹ Π½Π΅ смоТСм ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ описания наслСдования классов Π½Π° Π‘++:

class A

{

. . . . .

}

class B : public A

{

. . . . .

}

Π― Π½Π΅ знаю ООП / Π₯Π°Π±Ρ€

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

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

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

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

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

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

  • Абстракция
  • Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ
  • НаслСдованиС
  • ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ

Π‘ΠΌΠ°Ρ…ΠΈΠ²Π°Π΅Ρ‚ Π½Π° свод ΠΏΡ€Π°Π²ΠΈΠ», Π½Π΅ Ρ‚Π°ΠΊ Π»ΠΈ? Π—Π½Π°Ρ‡ΠΈΡ‚ Π²ΠΎΡ‚ ΠΎΠ½ΠΎ, Ρ‚Π΅ самыС ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π² 95% случаСв? Π₯ΠΌΠΌ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим ΠΏΠΎΠ±Π»ΠΈΠΆΠ΅.

Абстракция

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Stateful ΠΈΠ»ΠΈ Stateless?

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

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

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

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

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

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

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

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

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

И Π΅Ρ‰Ρ‘…

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

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

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

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

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

ΠšΠΎΡ€ΠΎΡ‚ΠΊΠΎ ΠΎΠ± истории ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования / Π₯Π°Π±Ρ€

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

Если Π²Π°ΠΌ интСрСсно ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ язык Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±Ρ‹Π» ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ООП-языком Π½Π° свСтС, ΠΌΠΎΠ³ΡƒΡ‚ Π»ΠΈ Java ΠΈ C# Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ чистыми ООП-языками, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ½ΠΈΠΊΠ½ΡƒΡ‚ΡŒΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ дСталями, ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°ΡŽ вас ΠΏΠΎΠ΄ кат…

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΎΠ± истории ООП ΠΈΠ· Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ:

Β«Π’Π΅Ρ€ΠΌΠΈΠ½Ρ‹ Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-Β» ΠΈ Β«ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉΒ» Π² соврСмСнном смыслС этих слов появились Π² MIT Π² ΠΊΠΎΠ½Ρ†Π΅ 1950 Π½Π°Ρ‡Π°Π»Π΅ 1960 Π³ΠΎΠ΄ΠΎΠ². Π’ срСдС спСциалистов ΠΏΠΎ искусствСнному ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚Ρƒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Β» ΠΌΠΎΠ³ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΊ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ элСмСнтам (Π°Ρ‚ΠΎΠΌΡ‹ Lisp) со свойствами (Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ). Алан Кэй ΠΏΠΎΠ·ΠΆΠ΅ писал, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ устройства Лиспа ΠΎΠΊΠ°Π·Π°Π»ΠΎ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠ΅ влияниС Π½Π° Π΅Π³ΠΎ ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΠ΅ Π² 1966 Π³. Π”Ρ€ΡƒΠ³ΠΈΠΌ Ρ€Π°Π½Π½ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ООП Π² MIT Π±Ρ‹Π» Sketchpad созданный Иваном Π‘Π°Π·Π΅Ρ€Π»Π΅Π½Π΄ΠΎΠΌ Π² 1960-61. Π’ глоссарии ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π² 1963 Π³. тСхничСского ΠΎΡ‚Ρ‡Π΅Ρ‚Π°, основанного Π½Π° Π΅Π³ΠΎ диссСртации ΠΎ Sketchpad, Π‘Π°Π·Π΅Ρ€Π»Π΅Π½Π΄ опрСдСляСт понятия Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Β» ΠΈ «экзСмпляр» с ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠ΅ΠΉ классов Π½Π° основС «мастСра» ΠΈΠ»ΠΈ «опрСдСлСния», хотя всС эти Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ ΠΎΡ‚Π½ΠΎΡΠΈΠ»ΠΈΡΡŒ ΠΊ графичСскому ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² [Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅, Π² Sketchpad Π±Ρ‹Π»ΠΎ основноС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π½Π° основС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡΡ‚Ρ€ΠΎΠΈΠ»ΠΈΡΡŒ ΠΊΠΎΠΏΠΈΠΈ. ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ основного – ΠΊΠΎΠΏΠΈΠΈ Ρ‚ΠΎΠΆΠ΅ мСнялись. ΠŸΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€.].

Π’ Ρ€Π°Π½Π½Π΅ΠΉ MIT-вСрсии ALGOL AED-0 структуры Π΄Π°Π½Π½Ρ‹Ρ… («плСксы» Π½Π° Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π΅ Алгола) Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π±Ρ‹Π»ΠΈ связаны с ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ впослСдствии Π±Ρ‹Π»ΠΈ Π½Π°Π·Π²Π°Π½Ρ‹ сообщСниями, ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΈΠ»ΠΈ функциями-Ρ‡Π»Π΅Π½Π°ΠΌΠΈ.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠ°ΠΊ Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ появились Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π² 1960-Ρ… Π² Simula 67, ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ вСрсии Simula I, языка программирования, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° дискрСтно-событийноС ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Авторы Simula β€” ОлС-Π™ΠΎΡ…Π°Π½ Π”Π°Π»ΡŒ ΠΈ ΠšΡ€ΠΈΡΡ‚Π΅Π½ ΠΡŽΠ³ΠΎΡ€Π΄ ΠΈΠ· НорвСТского ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ Ρ†Π΅Π½Ρ‚Ρ€Π° Π² Осло. Simula Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»Π°ΡΡŒ ΠΏΠΎΠ΄ влияниСм SIMSCRIPT ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π§Π°Ρ€Π»ΡŒΠ·ΠΎΠΌ Π₯ΠΎΠ°Ρ€ΠΎΠΌ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠ΅ΠΉ записСй-классов. Simula Π²ΠΊΠ»ΡŽΡ‡Π°Π»Π° Π² сСбя понятиС классов ΠΈ экзСмпляров (ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²), Π° Ρ‚Π°ΠΊΠΆΠ΅ подклассов, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², сопрограмм ΠΈ дискрСтно-событийноС ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ собствСнной ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹ программирования. Π’ языкС использовался автоматичСский сборщик мусора, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½ Ρ€Π°Π½Π΅Π΅ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ языка Lisp. Simula использовалась Ρ‚ΠΎΠ³Π΄Π° прСимущСствСнно для физичСского модСлирования. ИдСи Simula ΠΎΠΊΠ°Π·Π°Π»ΠΈ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠ΅ влияниС Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΠ΅ языки, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Smalltalk, Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Lisp (CLOS), Object Pascal, ΠΈ C++.

Π―Π·Ρ‹ΠΊ Smalltalk, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Xerox PARC Аланом КэСм (Alan Kay) ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΡƒΡ‡Π΅Π½Ρ‹ΠΌΠΈ, фактичСски навязывал использованиС Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²Β» ΠΈ «сообщСний» ΠΊΠ°ΠΊ базиса для вычислСний. Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»Π΅ΠΉ Smalltalk вдохновляли Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ΄Π΅ΠΈ Simula, Π½ΠΎ Smalltalk разрабатывался ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ динамичная систСма, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ классы ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ динамичСски, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ статичСски ΠΊΠ°ΠΊ Π² Simula. Smalltalk ΠΈ ООП с Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±Ρ‹Π»ΠΈ прСдставлСны ΡˆΠΈΡ€ΠΎΠΊΠΎΠΉ Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π² ΠΆΡƒΡ€Π½Π°Π»Π΅ Byte magazine Π² августС 1981.

Π’ 1970-Ρ… Smalltalk Кэя сподвиг сообщСство Lisp Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ Π² язык ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ прСдставлСны Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Lisp ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

ЭкспСримСнты с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ Lisp Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ ΠΊ созданию Common Lisp Object System (CLOS, части ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ стандартизованного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ языка, ANSI Common Lisp), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ€Π³Π°Π½ΠΈΡ‡Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π» Π² сСбя ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅, Ρ‚Π°ΠΊ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ позволял Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ сСбя с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Meta-object protocol. Π’ 1980 Π±Ρ‹Π»ΠΎ нСсколько ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ Π΄ΠΈΠ·Π°ΠΉΠ½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ процСссоров, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π»ΠΈ Π±Ρ‹ Π² сСбя Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π² памяти, Π½ΠΎ всС ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ Π±Π΅Π·ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ привСсти Intel iAPX 432 ΠΈ Linn Smart Rekursiv.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π°Π·Π²ΠΈΠ»ΠΎΡΡŒ Π² Π΄ΠΎΠΌΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡŽ программирования Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈ сСрСдинС 1990 Π³ΠΎΠ΄ΠΎΠ², ΠΊΠΎΠ³Π΄Π° стали ΡˆΠΈΡ€ΠΎΠΊΠΎ доступны ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Π΅Π΅ языки программирования, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Visual FoxPro 3.0, C++, ΠΈ Delphi. Π”ΠΎΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ этой систСмы ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»ΠΎΡΡŒ ростом популярности графичСских интСрфСйсов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°Π»ΠΈΡΡŒ Π½Π° Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°Ρ… ООП. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ тСсной связи ΠΌΠ΅ΠΆΠ΄Ρƒ динамичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ GUI ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ языка программирования ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ посмотрСв Π½Π° Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Cocoa Π½Π° Mac OS X, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» написан Π½Π° Objective-C, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΈ ΠΊ Π‘, основанном Π½Π° Smalltalk с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ динамичСских сообщСний. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ООП повлияли Π½Π° ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ событийно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования (хотя, эта концСпция Π½Π΅ ограничиваСтся ΠΎΠ΄Π½ΠΈΠΌ ООП). НСкоторыС Π΄Π°ΠΆΠ΅ Π΄ΡƒΠΌΠ°Π»ΠΈ, Ρ‡Ρ‚ΠΎ каТущаяся ΠΈΠ»ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ связь с графичСскими интСрфСйсами – это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ вынСсло ООП Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π½ΠΈΠΉ ΠΏΠ»Π°Π½ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ.

Π’ ETH ZΓΌrich, Никлаус Π’ΠΈΡ€Ρ‚ ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ Ρ‚ΠΎΠΆΠ΅ исслСдовали Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹, ΠΊΠ°ΠΊ абстрация Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, хотя эти ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΡˆΠΈΡ€ΠΎΠΊΠΎ использовались ΠΈ Π² 60-Ρ… ΠΈ Ρ€Π°Π½Π΅Π΅. Modula-2 Π²Ρ‹ΡˆΠ΅Π΄ΡˆΠ°Ρ Π² 1978 Π²ΠΊΠ»ΡŽΡ‡Π°Π»Π° ΠΎΠ±Π° эти ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°, Π° Π΅Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Oberon ΠΈΠΌΠ΅Π» собствСнный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΎΠ±ΡŠΠΊΡ‚Π½ΠΎ-ориСнтированности, классам ΠΈ ΠΏΡ€ΠΎΡ‡Π΅ΠΌΡƒ, Π½Π΅ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ Π½Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Smalltalk ΠΈ совсСм Π½Π΅ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ Π½Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ C++.

ВозмоТности ООП добавлялись Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ языки Ρ‚ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ada, BASIC, Fortran, Pascal ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. Π˜Ρ… Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² языки, ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π½Π΅ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π²ΡˆΠΈΠ΅ΡΡ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ООП часто ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ с ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΊΠΎΠ΄Π°.

ПозднСС стали ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ языки, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ Π²Ρ€ΠΎΠ΄Π΅ Python ΠΈ Ruby. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉ, самыми коммСрчСски ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ языками ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ Visual Basic.NET, C# ΠΈ Java. И .NET ΠΈ Java Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ прСвосходство ООП.Β»

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ нСбольшой части ΡΡ‚Π°Ρ‚ΡŒΠΈ «Как Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΎΡΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅Β» Π·Π° авторством ОлС-Π™ΠΎΡ…Π°Π½Π° Даля ΠΈ ΠšΡ€ΠΈΡΡ‚Π΅Π½Π° ΠΡŽΠ³ΠΎΡ€Π΄Π°.

Β«SIMULA I (1962-65) ΠΈ Simula 67 (1967) β€” Π΄Π²Π° ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языка программирования. Simula 67 Π²ΠΊΠ»ΡŽΡ‡Π°Π»Π° Π² сСбя Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования: классы ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, подклассы (наслСдованиС), Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, бСзопасныС ссылки ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ внСсти Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… структур, описанных ΠΎΠ±Ρ‰ΠΈΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ класса (прСфиксныС Π±Π»ΠΎΠΊΠΈ).

Алан Кэй ΠΈΠ· Xerox PARC использовал Simula ΠΊΠ°ΠΊ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ для Π΅Π³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Smalltalk (ΠΏΠ΅Ρ€Π²Ρ‹Ρ… вСрсий языка Π² 1970-Ρ…), Ρ€Π°ΡΡˆΠΈΡ€ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ исполнСния. Π‘ΡŒΠ΅Ρ€Π½ Бтраусструпп Π½Π°Ρ‡Π°Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ C++ (Π² 1980-Ρ…) by привнСся основныС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Simula Π² Π‘.Β»

Π’Π΅ΠΏΠ΅Ρ€ΡŒ нСбольшоС ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, получаСтся, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ООП языком Π±Ρ‹Π»Π° Simula. Но ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ «чистым» ООП языком Π±Ρ‹Π» ΠΈΠΌΠ΅Π½Π½ΠΎ Smalltalk. «Чистым» ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ООП язык, всС Ρ‚ΠΈΠΏΡ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠ»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ прСдставлСнными классами. Π’ этом смыслС Java чистым ООП языком стала Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² вСрсии 5, ΠΊΠΎΠ³Π΄Π° появилась Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Autoboxing. C#, Ссли я ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ понимаю, Π±Ρ‹Π» чистым ООП языком с самого Π½Π°Ρ‡Π°Π»Π°. ΠŸΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ Π² коммСнтариях ΠΏΠΎΠ»ΠΎΠΌΠ°Ρ‚ΡŒ копья Π½Π° Ρ‚Π΅ΠΌΡ‹ Π²Ρ€ΠΎΠ΄Π΅ «А Π² C# Π΅ΡΡ‚ΡŒ нСуправляСмыС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСны ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈΒ», «А Π²ΠΎΠΎΠ±Ρ‰Π΅ чистым ООП языком ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Smalltalk, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ прСдставлСно всС, Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ Π±Π»ΠΎΠΊΠΎΠ² самой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Ρƒ ΠΈΠ»ΠΈ, Π² ΠΊΡ€Π°ΠΉΠ½Π΅ΠΌ случаС, RubyΒ» ΠΈ «Чистый – Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ. Ишь Ρ‡Π΅Π³ΠΎ ΡƒΠ΄ΡƒΠΌΠ°Π»ΠΈ, int ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ!Β»

НСкотороС врСмя Π½Π°Π·Π°Π΄ ΠΎΠ΄ΠΈΠ½ странный Ρ…Π°Π±Ρ€Π°ΡŽΠ·Π΅Ρ€ заявил Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², Ρ‡Ρ‚ΠΎ ООП ΠΈΠ·ΠΎΠ±Ρ€Π΅Π» Алан Кэй, Ρ‡Ρ‚ΠΎ Π² чистом ООП Π½Π΅Ρ‚ наслСдования, Ρ‡Ρ‚ΠΎ Java ΠΈ C# ΠΏΠΎ мнСнию Π°Π²Ρ‚ΠΎΡ€Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° «ООП» Алана Кэя ООП языками Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈ Ρ‡Ρ‚ΠΎ Гослинг с Π›ΠΈΠΏΠΏΠ΅Ρ€Ρ‚ΠΎΠΌ ΠΈΠΌΠ΅ΡŽΡ‚β€¦ гм… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅Π²Π΅Ρ€Π½ΠΎ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½Π½Ρ‹Π΅ ΠΈΠΌΠΈ языки ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ.

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

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ – ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°, Π½Π°ΡƒΡ‡Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ разрабатывался Π½Π΅ Π² Π²Π°ΠΊΡƒΡƒΠΌΠ΅, Π° большой Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ ΡƒΡ‡Π΅Π½Ρ‹Ρ…. Π’ΠΊΠ»Π°Π΄ Кэя Π² ООП Π½Π΅ΠΎΡ†Π΅Π½ΠΈΠΌ, Π½ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ООП – Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π΅Π³ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ нСсправСдливо ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΡƒΡ‡Π΅Π½Ρ‹ΠΌ, Ρ€Π°Π±ΠΎΡ‚Π°Π²ΡˆΠΈΠΌ ΠΊΠ°ΠΊ вмСстС с Π½ΠΈΠΌ, Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. Кэй Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ», β€œI didn’t like the way Simula I or Simula 67 did inheritance (though I thought Nygaard and Dahl were just tremendous thinkers and designers). So I decided to leave out inheritance as a built-in feature until I understood it better.” Как Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, монополия Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½ΠΈΠ΅ ООП ΠΈΠΌ Π½Π΅ заявлялась.

Π“ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² ООП Π½Π΅Ρ‚ наслСдования (ΠΈ всяких ΠΏΡ€ΠΎΡ‡ΠΈΡ… соврСмСнных ΡˆΡ‚ΡƒΡ‡Π΅ΠΊ) ΠΈ Ρ‡Ρ‚ΠΎ Ρ‚Π΅, ΠΊΡ‚ΠΎ Π΅Π³ΠΎ Ρ‚ΡƒΠ΄Π° привнСс ΠΈΠ·Π²Ρ€Π°Ρ‚ΠΈΠ»ΠΈ смысл ΠΈ ΡΡƒΡ‚ΡŒ ООП, это всС Ρ€Π°Π²Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ гСомСтрия ЛобачСвского ΠΈΠ·Π²Ρ€Π°Ρ‚ΠΈΠ»Π° Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΡŽ, ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½Π½ΡƒΡŽ Π•Π²ΠΊΠ»ΠΈΠ΄ΠΎΠΌ ΠΈ Π΅Π΅ срочно Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ Π² Β«ΡˆΠ°Ρ€ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΡŽΒ» ΠΈΠ»ΠΈ Β«Π³ΠΈΠΏΠ΅Ρ€Π±ΠΎΠ»ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΡŽΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ грязныС Ρ€ΡƒΠΊΠΈ Π½Π΅ΠΎΡ„ΠΈΡ‚ΠΎΠ² Π½Π΅ смСли ΠΊΠ°ΡΠ°Ρ‚ΡŒΡΡ святого. ГСомСтрия Π ΠΈΠΌΠ°Π½Π° – Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ‚ΠΎΠ³Π΄Π° ΠΎΡ‚ сатаны, Π° Π±ΠΎΠ·ΠΎΠ½Π½ΡƒΡŽ ΡΡ‚Ρ€ΡƒΠ½Π½ΡƒΡŽ Ρ‚Π΅ΠΎΡ€ΠΈΡŽ нСльзя ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚ΡŒ Π² унивСрситСтах ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ это Π½Π΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ описывал ГабриэлС Π’Π΅Π½Π΅Ρ†ΠΈΠ°Π½ΠΎ ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ.

Если Π²Ρ‹ Π½Π΅ согласны, ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°ΡŽ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Π΄ΠΈΡΠΊΡƒΡΡΠΈΡŽ Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ….

ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅: основныС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠΎΠΏ

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

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ развития ООП Π±Π΅Ρ€Π΅Ρ‚ своС Π½Π°Ρ‡Π°Π»ΠΎ Π² ΠΊΠΎΠ½Ρ†Π΅ 60-Ρ… Π³ΠΎΠ΄ΠΎΠ². ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ языком Π±Ρ‹Π» язык программирования Simula, созданный Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΌ Ρ†Π΅Π½Ρ‚Ρ€Π΅ Π² НорвСгии. Π―Π·Ρ‹ΠΊ прСдназначался для модСлирования ситуаций Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π°. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ Simula Π±Ρ‹Π»ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, написанная Π½Π° языкС, Π±Ρ‹Π»Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ программирования. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠΌΠ΅Π»ΠΈ инструкции, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, ΠΈ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°Π»ΠΈΡΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ; ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ опрСдСляли ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ процСссС модСлирования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π²Π΅Π» сСбя согласно своСму стандартному повСдСнию ΠΈ, Π² случаС нСобходимости, измСнял Π΄Π°Π½Π½Ρ‹Π΅ для отраТСния влияния Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π΅ΠΌΡƒ дСйствия.

БСгодня сущСствуСт достаточноС количСство ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языков программирования, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярными ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π² настоящСС врСмя ΡΠ²Π»ΡΡŽΡ‚ΡΡ C++, Delphi, Java, Visual Basic, Flash. Но, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ языки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ принято ΠΏΡ€ΠΈΡ‡ΠΈΡΠ»ΡΡ‚ΡŒ ΠΊ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠΉ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ΅, Ρ‚ΠΎΠΆΠ΅ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ свойствами ООП, имСя Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. Π’Π°ΠΊ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² C β€” это большой Ρ€Π°Π·Π΄Π΅Π» программирования Π½Π° Π΄Π°Π½Π½ΠΎΠΌ языкС, Ρ‚ΠΎ ΠΆΠ΅ самоС касаСтся ООП Π² python ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… структурных языках.

Говоря ΠΎΠ± ООП, часто всплываСт Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ β€” Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Оно Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ прСдоставляСт ΡˆΠΈΡ€ΠΎΠΊΠΈΠ΅ возмоТности использования ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ классы ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².
Бобытия. Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… срСдах Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° характСристика (ΠΏΠΎΠΌΠΈΠΌΠΎ инкапсуляции, ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° ΠΈ наслСдования) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° – событиС. Бобытиями Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ называСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… сообщСний (ΠΈΠ»ΠΈ событий), ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Ρ… ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Windows ΠΈΠ»ΠΈ самой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π΅Π½ для всСх ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² срСды, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ события, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ Π² процСссС выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. По сути, событиС β€” это Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ дСйствиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‰Π΅Π»Ρ‡ΠΎΠΊ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠΌΡ‹ΡˆΠΈ, Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠ΅ курсора ΠΌΡ‹ΡˆΠΈ Π½Π° ΠΏΡƒΠ½ΠΊΡ‚ мСню, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ ΠΈ Ρ‚.ΠΏ. ΠžΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΡΡ‚ΡŒ выполнСния Ρ‚Π΅Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… дСйствий опрСдСляСтся ΠΊΠ°ΠΊ Ρ€Π°Π· Ρ‚Π°ΠΊΠΈ событиями, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠΌΠΈ Π² систСмС, ΠΈ Ρ€Π΅Π°ΠΊΡ†ΠΈΠ΅ΠΉ Π½Π° Π½ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².
ΠšΠ»Π°ΡΡΡ‹ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² ООП β€” Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ понятия. ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ класса Π² ООП – это Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… (Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Real ΠΈΠ»ΠΈ String), Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ – ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ экзСмпляр класса (Π΅Π³ΠΎ копия), хранящийся Π² памяти ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΊΠ°ΠΊ пСрСмСнная ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ°.
Класс являСтся структурным Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. Класс Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ описаниС ΠΏΠΎΠ»Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с этими полями Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΠ΅Ρ‚ΠΎΠ΄ ООП – это ΠΈ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ классам.
ΠšΠ»Π°ΡΡΡ‹ ΠΈΠΌΠ΅ΡŽΡ‚ поля (ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… запись β€” record), свойства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° поля, Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ описатСли, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ записи ΠΈ считывания Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ β€” ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ ΠΈ свойств класса.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ООП

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

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ наслСдования ООП ΠΈ подклассы

ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π½Π° основС классов, ΠΏΡ€ΠΈ это ΠΎΠ½ΠΈ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ этих классов. Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ классы ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π½Π° основС Π΄Ρ€ΡƒΠ³ΠΈΡ… классов (Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ), Ρ‚ΠΎΠ³Π΄Π° Ρ‚Π°ΠΊΠΈΠ΅ классы Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ подклассами (ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΈ). ΠŸΠΎΠ΄ΠΊΠ»Π°ΡΡΡ‹ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ всС свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ для подкласса ΠΈΠ»ΠΈ класса-ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅, свои собствСнныС, свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса-родитСля. ИзмСнСниС свойств ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса отслСТиваСтся Π² подклассах, созданных Π½Π° основС этого класса, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ…, созданных Π½Π° основС подклассов. Π’ этом ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ наслСдованиС ООП.

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

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

На сайтС прСдставлСна частичная тСория ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… ΠΈ ООП ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡. ООП ΡƒΡ€ΠΎΠΊΠΈ сайта ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ выполнСния поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ. На основС выполнСния Π΄Π°Π½Π½Ρ‹Ρ… Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚ учащийся смоТСт Π² дальнСйшСм ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ.
Π–Π΅Π»Π°Π΅ΠΌ Π’Π°ΠΌ Π»Π΅Π³ΠΊΠΎΠ³ΠΎ ΠΈ интСрСсного изучСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования!

НОУ ИНВУИВ | ЛСкция | ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ

Аннотация: ЛСкция посвящСна Ρ€ΠΎΠ»ΠΈ ΠΈ мСсту ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π² ΠΎΠ±Ρ‰Π΅ΠΉ классификации,
Π΅Π³ΠΎ достоинствам ΠΈ нСдостаткам, Π½Π΅Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования.

Рассмотрим особСнности ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π² сравнСнии с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ. Напомним, Ρ‡Ρ‚ΠΎ классификация ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π±Ρ‹Π»Π° построСна Π½Π°ΠΌΠΈ Π²ΠΎ Π²ΡΡ‚ΡƒΠΏΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ.

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

ΠŸΡ€ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° прСдставляСт собой описаниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΈΡ… свойств (ΠΈΠ»ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ), совокупностСй (ΠΈΠ»ΠΈ классов ), ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ, способов ΠΈΡ… взаимодСйствия ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ (ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ).

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

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ тСорСтичСски интСрСсным ΠΈ практичСски Π²Π°ΠΆΠ½Ρ‹ΠΌ свойством ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° являСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΡŽΡ‚ ΠΈΡ… взаимодСйствиС Π² ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области.

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

ИспользованиС Ρ€Π°Π½Π΅Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ²Π°ΠΌΠΈ программистов) Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² позволяСт Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ ΠΏΡ€ΠΈ производствС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Π² особСнности, Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠ³ΠΎ.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, классы ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹ΠΌΠΈ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΌ ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ.

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

НаиболСС извСстным ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ языка программирования являСтся язык C++, Ρ€Π°Π·Π²ΠΈΠ²ΡˆΠΈΠΉΡΡ ΠΈΠ· ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ языка Π‘. Π•Π³ΠΎ прямым ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠΌ ΠΈ логичСским ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ΠΌ являСтся язык Π‘#, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ изучаСтся Π² Π΄Π°Π½Π½ΠΎΠΌ курсС.
Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языков программирования: Visual Basic, Java, Eiffel, Oberon.

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

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

Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Π² практичСских ΠΈ ΡƒΡ‡Π΅Π±Π½Ρ‹Ρ… курсах ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‡Π΅Ρ‚ΠΊΠΎΠ³ΠΎ матСматичСского основания для формирования достаточно ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΈ ясного прСдставлСния ΠΎΠ± основах ООП. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ³ΠΎ курса Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ ΠΈΠ·ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ части курса Ρ€Π°Π·Π΄Π΅Π»Ρ‹ computer science (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π»Π°ΠΌΠ±Π΄Π°-исчислСниС ΠΈ комбинаторная Π»ΠΎΠ³ΠΈΠΊΠ°) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… понятий ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования. Π’ частности, понятиС абстракции – основной ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π»Π°ΠΌΠ±Π΄Π°-исчислСния – для нас являСтся ΡƒΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΌ.

Поясним качСствСнно Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ООП. НаслСдованиС ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ опСрирования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ основано Π½Π° ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ. Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ «ΡΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅» свойств ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° . ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ, ΠΊΠ°ΠΊ ΠΈ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, понимаСтся ΠΊΠ°ΠΊ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

Рассмотрим Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΊΠ°ΠΊ абстракция.

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

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

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

Как ΠΌΡ‹ ΡƒΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΈ, концСпция абстракции Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΠΎ модСлируСтся посрСдством Π»Π°ΠΌΠ±Π΄Π°-исчислСния. Π’ΠΎΡ‡Π½Π΅Π΅ говоря, опСрация абстракции Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ являСтся модСлью ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ понятия ООП.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ — это… Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄?

Π“Π»Π°Π²Π½Ρ‹Π΅ понятия ΠΈ разновидности

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

НаличиС инкапсуляции достаточно для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΡΡ‚ΠΈ языка программирования, Π½ΠΎ Π΅Ρ‰Ρ‘ Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ориСнтированности β€” для этого трСбуСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ наслСдования.

Но Π΄Π°ΠΆΠ΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ инкапсуляции ΠΈ наслСдования Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ язык программирования Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΌ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ООП. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ прСимущСства ООП ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° Π² языкС программирования Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ.

Π―Π·Ρ‹ΠΊ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ°, ΠΏΠΎΠ»ΠΎΠΆΠΈΠ² Π½Π°Ρ‡Π°Π»ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‰Π΅ΠΌΡƒΡΡ ΠΏΠΎΠ΄Π²ΠΈΠ΄ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ понятия

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

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

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ООП ΠΈ Π΅Π³ΠΎ основныС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ

БлоТности опрСдСлСния

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

Π’ΠΈΠΌΠΎΡ‚ΠΈ Π‘Π°Π΄Π΄ ΠΏΠΈΡˆΠ΅Ρ‚[1]:

Π ΠΎΠ΄ΠΆΠ΅Ρ€ Кинг Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ настаивал, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΠΊΠΎΡ‚ являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ. ΠšΡ€ΠΎΠΌΠ΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ… своих достоинств, ΠΊΠΎΡ‚ дСмонстрируСт Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° сообщСния, Π½Π°Π΄Π΅Π»Ρ‘Π½ унаслСдованными рСакциями ΠΈ управляСт своим, Π²ΠΏΠΎΠ»Π½Π΅ нСзависимым, Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ состояниСм.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ООП

По мнСнию Алана КСя, создатСля языка Smalltalk, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Β«ΠΎΡ‚Ρ†ΠΎΠ²-основатСлСй» ООП, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π½Π°Π±ΠΎΡ€Π΅ основных ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² (цитируСтся ΠΏΠΎ Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ Π’. Π‘Π°Π΄Π΄Π°[1]).

  1. Всё являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ.
  2. ВычислСния ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ΡΡ ΠΏΡƒΡ‚Ρ‘ΠΌ взаимодСйствия (ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ) ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ дСйствиС. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚, посылая ΠΈ получая сообщСния. Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ β€” это запрос Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ дСйствия, Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ дСйствия.
  3. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ, которая состоит ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².
  4. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ являСтся прСдставитСлСм (экзСмпляром) класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΎΠ±Ρ‰ΠΈΠ΅ свойства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².
  5. Π’ классС задаётся ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’Π΅ΠΌ самым всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ экзСмплярами ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса, ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ дСйствия.
  6. ΠšΠ»Π°ΡΡΡ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² Π΅Π΄ΠΈΠ½ΡƒΡŽ Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΡƒΡŽ структуру с ΠΎΠ±Ρ‰ΠΈΠΌ ΠΊΠΎΡ€Π½Π΅ΠΌ, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠ΅ΠΉ наслСдования. ΠŸΠ°ΠΌΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, связанноС с экзСмплярами ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ класса, автоматичСски доступны Π»ΡŽΠ±ΠΎΠΌΡƒ классу, располоТСнному Π½ΠΈΠΆΠ΅ Π² иСрархичСском Π΄Π΅Ρ€Π΅Π²Π΅.

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

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

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ

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

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

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

Однако ΠΎΠ±Ρ‰Π½ΠΎΡΡ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΡƒΡŽ сторону β€” «полноцСнная» ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° сообщСний Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов, Ρ‡Ρ‚ΠΎ Π½Π΅ всСгда ΡƒΠ΄ΠΎΠ±Π½ΠΎ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ Π½Ρ‹Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языков программирования ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ концСпция Β«ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° сообщСния ΠΊΠ°ΠΊ Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Β» β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ доступныС ΠΈΠ·Π²Π½Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈ обСспСчиваСтся взаимодСйствиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠΌ количСствС языков программирования, Π² Ρ‚ΠΎΠΌ числС C++, Object Pascal, Oberon-2. Π’ настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространённым Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языках

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

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

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

Поля Π΄Π°Π½Π½Ρ‹Ρ…
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ всС, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅), Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠ΅ Π΅Π³ΠΎ состояниС (свойства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области). Иногда поля Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ свойствами ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Π°. ЀизичСски поля ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой значСния (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, константы), ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ классу.
ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹Β 
ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, связанныС с классом. Они ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½Π°Π΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ.

ΠšΠ»Π°ΡΡΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. Класс-ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ всС поля ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса-родитСля, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΡ… собствСнными Π»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ языков программирования ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΎΠ΅ наслСдованиС (класс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ класс-Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ), Π½ΠΎ Π² C++ допускаСтся мноТСствСнноС наслСдованиС — ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ класса ΠΎΡ‚ Π΄Π²ΡƒΡ… ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ классов-Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ. ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ наслСдованиС ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ Ρ†Π΅Π»Ρ‹ΠΉ ряд ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΊΠ°ΠΊ логичСских, Ρ‚Π°ΠΊ ΠΈ чисто Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ½Π½Ρ‹Ρ…, поэтому Π² ΠΏΠΎΠ»Π½ΠΎΠΌ ΠΎΠ±ΡŠΡ‘ΠΌΠ΅ Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½Π΅ распространСна. ВмСсто этого Π² 1990-Π΅ Π³ΠΎΠ΄Ρ‹ появилось ΠΈ стало Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ языки понятиС интСрфСйса. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΒ β€” это класс Π±Π΅Π· ΠΏΠΎΠ»Π΅ΠΉ ΠΈ Π±Π΅Π· Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Если Π½Π΅ΠΊΠΈΠΉ класс наслСдуСт (ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ говорят, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚) интСрфСйс, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС входящиС Π² Π½Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. ИспользованиС интСрфСйсов прСдоставляСт ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Π΅ΡˆΡ‘Π²ΡƒΡŽ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρƒ мноТСствСнному наслСдованию.

ВзаимодСйствиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠΌ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв обСспСчиваСтся Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΈΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°.

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ обСспСчиваСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ срСдствами

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ доступа 
ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ чисто Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌΠΈ Π»ΠΎΠ³ΠΈΠΊΡƒ функционирования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‚Π°ΠΊ ΠΈ внСшними, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΡΠΊΡ€Ρ‹Ρ‚ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΏΡ€ΠΈ доступности ΠΈΠ·Π²Π½Π΅ Π²Ρ‚ΠΎΡ€Ρ‹Ρ…. Для этого Π² языки вводятся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ синтаксичСскиС конструкции, явно Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‡Π»Π΅Π½Π° класса. Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ это ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ public, protected ΠΈ private, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠ΅, соотвСтствСнно, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ Ρ‡Π»Π΅Π½Ρ‹ класса, Ρ‡Π»Π΅Π½Ρ‹ класса, доступныС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· классов-ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ² ΠΈ скрытыС, доступныС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ класса. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π°Ρ Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Π° ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ ΠΈΡ… Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ смысл Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… языках.
ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ доступа 
Поля класса, Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ доступны ΠΈΠ·Π²Π½Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚Π°ΠΊΠΎΠΉ доступ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Π±Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ состояниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ поля ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ скрытыми (Π»ΠΈΠ±ΠΎ язык Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ Π½Π΅ позволяСт ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ полям класса ΠΈΠ·Π²Π½Π΅), Π° для доступа ΠΊ находящимся Π² полях Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ доступа. Π’Π°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π»ΠΈΠ±ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ поля, Π»ΠΈΠ±ΠΎ производят запись Π² это ΠΏΠΎΠ»Π΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ значСния. ΠŸΡ€ΠΈ записи ΠΌΠ΅Ρ‚ΠΎΠ΄ доступа ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ записываСмого значСния ΠΈ, ΠΏΡ€ΠΈ нСобходимости, произвСсти Π΄Ρ€ΡƒΠ³ΠΈΠ΅ манипуляции с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌΠΈ (Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ согласованными). ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ доступа Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π΅Ρ‰Ρ‘ аксСссорами (ΠΎΡ‚ Π°Π½Π³Π». accessΒ β€” доступ), Π° ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈΒ β€” Π³Π΅Ρ‚Ρ‚Π΅Ρ€Π°ΠΌΠΈ (Π°Π½Π³Π». getΒ β€” Ρ‡Ρ‚Π΅Π½ΠΈΠ΅) ΠΈ сСттСрами (Π°Π½Π³Π». setΒ β€” запись).
Бвойства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Β 
ПсСвдополя, доступныС для чтСния ΠΈ/ΠΈΠ»ΠΈ записи. Бвойства внСшнС выглядят ΠΊΠ°ΠΊ поля ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ доступным полям (с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ), ΠΎΠ΄Π½Π°ΠΊΠΎ фактичСски ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π½ΠΈΠΌ происходит Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² доступа. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, свойства ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Β«ΡƒΠΌΠ½Ρ‹Π΅Β» поля Π΄Π°Π½Π½Ρ‹Ρ…, ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ доступ ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊΠ°ΠΊΠΈΠΌΠΈ-Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ дСйствиями (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° сопровоТдаСтся Π΅Π³ΠΎ пСрСрисовкой Π½Π° Π½ΠΎΠ²ΠΎΠΌ мСстС). Бвойства, ΠΏΠΎ сути — Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ синтаксичСский сахар, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚, Π° лишь ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² доступа. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π°Ρ языковая рСализация свойств ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠΉ. НапримСр, Π² C# объявлСниС свойства нСпосрСдствСнно содСрТит ΠΊΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² доступа, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вызываСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со свойствами, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² доступа, доступных для нСпосрСдствСнного Π²Ρ‹Π·ΠΎΠ²Π°. Π’ Delphi объявлСниС свойства содСрТит лишь ΠΈΠΌΠ΅Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² доступа, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ полю. Π‘Π°ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ доступа ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ трСбованиями ΠΊ сигнатурС.

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ рСализуСтся ΠΏΡƒΡ‚Ρ‘ΠΌ ввСдСния Π² язык ΠΏΡ€Π°Π²ΠΈΠ», согласно ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° «класс» ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ присвоСн ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ любого класса-ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ° Π΅Ρ‘ класса.

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² Ρ†Π΅Π»ΠΎΠΌ

ООП ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… комплСксов, Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ программистов (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, достаточно большой). ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ систСмы Π² Ρ†Π΅Π»ΠΎΠΌ, созданиС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΈ ΠΈΡ… объСдинСниС Π² ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΏΡ€ΠΈ этом часто выполняСтся Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ людьми, ΠΈ Π½Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ спСциалиста, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π½Π°Π» Π±Ρ‹ ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ всё.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ основываСтся Π½Π° описании структуры ΠΈ повСдСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ систСмы, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, фактичСски, Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π½Π° Π΄Π²Π° основных вопроса:

  • Из ΠΊΠ°ΠΊΠΈΡ… частСй состоит систСма.
  • Π’ Ρ‡Ρ‘ΠΌ состоит ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· частСй.

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

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

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

РодствСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

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

ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, сохранив Ρ‡Π°ΡΡ‚ΡŒ Ρ‡Π΅Ρ€Ρ‚ ООП, ΠΎΡ‚ΠΊΠ°Π·Π°Π»ΠΎΡΡŒ ΠΎΡ‚ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… понятий β€” класса ΠΈ наслСдования.

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

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

Π“Ρ€Π°Π΄ΠΈ Π‘ΡƒΡ‡ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚[2] Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹, приводящиС ΠΊ сниТСнию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈΠ·-Π·Π° использования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… срСдств:

ДинамичСскоС связываниС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².Β 
ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½ΠΎΠ³ΠΎ повСдСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ нСобходимости ΡΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ) Π½Π΅ Π½Π° этапС компиляции, Π° Π² процСссС исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π° Ρ‡Ρ‚ΠΎ тратится Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя. ΠŸΡ€ΠΈ этом Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ динамичСскоС связываниС трСбуСтся Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ для 20Β % Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², Π½ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ООП-языки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π΅Π³ΠΎ постоянно.
Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π³Π»ΡƒΠ±ΠΈΠ½Π° абстракции.Β 
ООП-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° часто ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ созданию «многослойных» ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π³Π΄Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ дСйствия сводится ΠΊ мноТСству ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня. Π’ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ происходит ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΎΠ² ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Ρ‡Ρ‚ΠΎ, СстСствСнно, сказываСтся Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.
НаслСдованиС Β«Ρ€Π°Π·ΠΌΡ‹Π²Π°Π΅Ρ‚Β» ΠΊΠΎΠ΄.Β 
Код, относящийся ΠΊ Β«ΠΎΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌΒ» классам ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ наслСдования (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ нСпосрСдствСнно) β€” находится Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² самих этих классах, Π½ΠΎ ΠΈ Π² ΠΈΡ… классах-ΠΏΡ€Π΅Π΄ΠΊΠ°Ρ…. ΠžΡ‚Π½ΠΎΡΡΡ‰ΠΈΠ΅ΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ классу ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ фактичСски ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… классах. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π΄Π²ΡƒΠΌ нСприятным ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°ΠΌ:
  • БниТаСтся ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ трансляции, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΡƒ приходится ΠΏΠΎΠ΄Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ описания всСх классов ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ.
  • БниТаСтся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² систСмС со страничной ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ β€” ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса физичСски находятся Π² Ρ€Π°Π·Π½Ρ‹Ρ… мСстах ΠΊΠΎΠ΄Π°, Π΄Π°Π»Π΅ΠΊΠΎ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΊ унаслСдованным ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ, систСма Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ частыС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ страниц.
Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ сниТаСт ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ.Β 
Π—Π°ΠΏΡ€Π΅Ρ‚ Π½Π° прямой доступ ΠΊ полям класса ΠΈΠ·Π²Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ нСобходимости создания ΠΈ использования ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² доступа. И написаниС, ΠΈ компиляция, ΠΈ исполнСниС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² доступа сопряТСно с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ расходами.
ДинамичСскоС созданиС ΠΈ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².Β 
ДинамичСски создаваСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΊΡƒΡ‡Π΅, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Π½Π΅Π΅ эффСктивно, Ρ‡Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΈΡ… Π½Π° стСкС ΠΈ, Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅, статичСскоС Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти ΠΏΠΎΠ΄ Π½ΠΈΡ… Π½Π° этапС компиляции.

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

ΠšΡ€ΠΈΡ‚ΠΈΠΊΠ° ООП

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

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ΅ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅:

  • ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для случаСв, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΆΠ½Ρ‹ быстродСйствиС ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ рСсурсы, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ большСго Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.
  • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ΅ β€” ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΆΠ½Π° ΡƒΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Π΅Π³ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ высказывания Π² адрСс ООП:

  • ИсслСдованиС Thomas E. Potok, Mladen Vouk ΠΈ Andy Rindos [1] ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ отсутствиС Π·Π½Π°Ρ‡ΠΈΠΌΠΎΠΉ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ Π² продуктивности Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΌΠ΅ΠΆΠ΄Ρƒ ООП ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ.
  • ΠšΡ€ΠΈΡΡ‚ΠΎΡ„Π΅Ρ€ Дэйт ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сравнСния ООП ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΠΈΠ· Π·Π° отсутствия строгого ΠΈ ΠΎΠ±Ρ‰Π΅ΠΏΡ€ΠΈΠ·Π½Π°Π½Π½ΠΎΠ³ΠΎ опрСдСлСния ООП (C. J. Date, Introduction to Database Systems, 6th-ed., Page 650)
  • АлСксандр Π‘Ρ‚Π΅ΠΏΠ°Π½ΠΎΠ², Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· своих ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π» Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ООП «мСтодологичСски Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΒ» ΠΈ Ρ‡Ρ‚ΠΎ «… ООП практичСски такая ΠΆΠ΅ мистификация ΠΊΠ°ΠΊ ΠΈ искусствСнный интСллСкт…» ([2]).
  • Π€Ρ€Π΅Π΄Π΅Ρ€ΠΈΠΊ Брукс (Frederick P. Brooks, Jr.) Π² своСй ΡΡ‚Π°Ρ‚ΡŒΠ΅ Β«No Silver Bullet. Essence and Accidents of Software EngineeringΒ» (Computer Magazine; April 1987) ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ слоТной Ρ‡Π°ΡΡ‚ΡŒΡŽ создания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния являСтся « … спСцификация, Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΈ тСстированиС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… конструкций, Π° ΠΎΡ‚Π½ΡŽΠ΄ΡŒ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ этих ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… конструкций…». ООП (наряду с Ρ‚Π°ΠΊΠΈΠΌΠΈ тСхнологиями ΠΊΠ°ΠΊ искусствСнный ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚, вСрификация ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, автоматичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, графичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, экспСртныС систСмы ΠΈ Π΄Ρ€), ΠΏΠΎ Π΅Π³ΠΎ мнСнию, Π½Π΅ являСтся «сСрСбряной ΠΏΡƒΠ»Π΅ΠΉΒ», которая ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… систСм. По Π΅Π³ΠΎ мнСнию Β«β€¦ΠžΠžΠŸ позволяСт ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠ²Π½Π΅ΡΡ‘Π½Π½ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΈΠ·Π°ΠΉΠ½Π°. Π”ΠΈΠ·Π°ΠΉΠ½ остаётся слоТным ΠΏΠΎ своСй природС…». ([3])
  • ЭдсгСр ДСйкстра ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»: «… Ρ‚ΠΎ ΠΎ Ρ‡Ρ‘ΠΌ общСство Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв просит β€” это Π·ΠΌΠ΅ΠΈΠ½ΠΎΠ΅ масло. ЕстСствСнно, β€žΠ·ΠΌΠ΅ΠΈΠ½ΠΎΠ΅ ΠΌΠ°ΡΠ»ΠΎβ€œ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΈΠΌΠ΅Π½Π°, ΠΈΠ½Π°Ρ‡Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΄Π°Ρ‚ΡŒ: β€žΠ‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΈ Π”ΠΈΠ·Π°ΠΉΠ½β€œ, β€žΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΡβ€œ, β€žΠœΠΎΠ΄Π΅Π»ΠΈ Π·Ρ€Π΅Π»ΠΎΡΡ‚ΠΈβ€œ, β€žΠ£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΡΠΈΡΡ‚Π΅ΠΌΡ‹β€œ (Management Information Systems), β€žΠ˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ срСды ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²β€œ, β€žΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒβ€œ, β€žΠ Π΅ΠΈΠ½ΠΆΠΈΠ½ΠΈΡ€ΠΈΠ½Π³ бизнСс-ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΠ²β€œβ€¦Β» β€” EWD 1175: The strengths of the academic enterprise
  • Никлаус Π’ΠΈΡ€Ρ‚ считаСт, Ρ‡Ρ‚ΠΎ ООП β€” Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Π°Ρ надстройка Π½Π°Π΄ структурным ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, ΠΈ ΠΏΡ€Π΅ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π΅Ρ‘ значимости, Π²Ρ‹Ρ€Π°ΠΆΠ°ΡŽΡ‰Π΅Π΅ΡΡ, Π² Ρ‚ΠΎΠΌ числС, Π²ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Π² языки программирования всё Π½ΠΎΠ²Ρ‹Ρ… ΠΌΠΎΠ΄Π½Ρ‹Ρ… Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ…Β» срСдств, Π²Ρ€Π΅Π΄ΠΈΡ‚ качСству Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.
  • ΠŸΠ°Ρ‚Ρ€ΠΈΠΊ КиллСлиа Π² своСй ΠΊΠ½ΠΈΠ³Π΅ «Вюнинг Π²Π΅Π±-сСрвСра» писал: «… ООП прСдоставляСт Π²Π°ΠΌ мноТСство способов Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ …»

Если ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ критичСскиС высказывания Π² адрСс ООП, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ нСсколько аспСктов ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ.

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

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ языки

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

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ синтаксичСских срСдств:

  • ОбъявлСниС классов с полями (Π΄Π°Π½Π½Ρ‹ΠΌΠΈ β€” Ρ‡Π»Π΅Π½Π°ΠΌΠΈ класса) ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ (функциями β€” Ρ‡Π»Π΅Π½Π°ΠΌΠΈ класса).
  • ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ класса (наслСдования) β€” ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ класса ΠΎΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ с автоматичСским Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ всСх особСнностСй Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ класса-ΠΏΡ€Π΅Π΄ΠΊΠ° Π² состав класса-ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ООП-языков ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΎΠ΅ наслСдованиС.
  • БрСдства Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ структуры классов ΠΎΡ‚ нСсанкционированного использования ΠΈΠ·Π²Π½Π΅. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ доступа ΠΊ полям ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ, Ρ‚ΠΈΠΏΠ° public, private, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ protected, ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.
  • ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ экзСмпляры Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… классов.
  • ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ экзСмпляров классов Π·Π° счёт использования Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ООП-языках всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ классов ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ.

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

  • ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹, дСструкторы, Ρ„ΠΈΠ½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹.
  • Бвойства (аксСссоры).
  • Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ‚ΠΎΡ€Ρ‹.
  • Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ β€” ΠΊΠ°ΠΊ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° мноТСствСнному наслСдованию.
  • ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² для классов.

Π§Π°ΡΡ‚ΡŒ языков (ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… «чисто ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΌΠΈΒ») Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ построСна Π²ΠΎΠΊΡ€ΡƒΠ³ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… срСдств β€” Π² Π½ΠΈΡ… Π»ΡŽΠ±Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π° нСбольшим числом ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π² Π²ΠΈΠ΄Π΅ встроСнных скалярных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…) ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, любой ΠΊΠΎΠ΄ β€” ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ класса ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ использовались Π±Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… языков β€” Java ΠΈΠ»ΠΈ Ruby. Π”Ρ€ΡƒΠ³ΠΈΠ΅ языки (ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Β«Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹Π΅Β») Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ООП-подсистСму Π² исходно ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ язык. Π’ Π½ΠΈΡ… сущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΌ срСдствам. ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ β€” C++ ΠΈ Delphi Pascal.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

  1. ↑ 1 2 Π‘Π°Π΄Π΄ Π’. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² дСйствии / ΠŸΠ΅Ρ€Π΅Π². с Π°Π½Π³Π». β€” БПб.: ΠŸΠΈΡ‚Π΅Ρ€, 1997. ISBN 5-88782-270-8
  2. ↑ Π“Ρ€Π°Π΄ΠΈ Π‘ΡƒΡ‡. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° C++. 2-Π΅ ΠΈΠ·Π΄. / ΠŸΠ΅Ρ€. с Π°Π½Π³Π». β€” М.:»Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ Π‘ΠΈΠ½ΠΎΠΌ», БПб:»ΠΠ΅Π²ΡΠΊΠΈΠΉ Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚», 1998 Π³. ISBN 5-7989-0067-3, ISBN 5-7940-0017-1, стр. 276β€”278

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°

  • Иан ГрэхСм ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° = Object-Oriented Methods: Principles & Practice. β€” 3-Π΅ ΠΈΠ·Π΄. β€” М.: Β«Π’ΠΈΠ»ΡŒΡΠΌΡΒ», 2004. β€” Π‘.Β 880. β€” ISBN 0-201-61913-X
  • Антони БинтСс Освой ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π° 21 дСнь = Sams Teach Yourself Object-Oriented Programming in 21 Days. β€” М.: Β«Π’ΠΈΠ»ΡŒΡΠΌΡΒ», 2002. β€” Π‘.Β 672. β€” ISBN 0-672-32109-2

Бсылки

НОУ ИНВУИВ | ЛСкция | ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ

Аннотация: ЛСкция посвящСна Ρ€ΠΎΠ»ΠΈ ΠΈ мСсту ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π² ΠΎΠ±Ρ‰Π΅ΠΉ классификации,
Π΅Π³ΠΎ достоинствам ΠΈ нСдостаткам, Π½Π΅Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования.

Рассмотрим особСнности ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π² сравнСнии с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ. Напомним, Ρ‡Ρ‚ΠΎ классификация ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π±Ρ‹Π»Π° построСна Π½Π°ΠΌΠΈ Π²ΠΎ Π²ΡΡ‚ΡƒΠΏΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ.

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

ΠŸΡ€ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° прСдставляСт собой описаниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΈΡ… свойств (ΠΈΠ»ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ), совокупностСй (ΠΈΠ»ΠΈ классов ), ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ, способов ΠΈΡ… взаимодСйствия ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ (ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ).

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

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ тСорСтичСски интСрСсным ΠΈ практичСски Π²Π°ΠΆΠ½Ρ‹ΠΌ свойством ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° являСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΡŽΡ‚ ΠΈΡ… взаимодСйствиС Π² ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области.

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

ИспользованиС Ρ€Π°Π½Π΅Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ²Π°ΠΌΠΈ программистов) Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² позволяСт Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ ΠΏΡ€ΠΈ производствС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Π² особСнности, Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠ³ΠΎ.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, классы ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹ΠΌΠΈ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΌ ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ.

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

НаиболСС извСстным ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ языка программирования являСтся язык C++, Ρ€Π°Π·Π²ΠΈΠ²ΡˆΠΈΠΉΡΡ ΠΈΠ· ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ языка Π‘. Π•Π³ΠΎ прямым ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠΌ ΠΈ логичСским ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ΠΌ являСтся язык Π‘#, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ изучаСтся Π² Π΄Π°Π½Π½ΠΎΠΌ курсС.
Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языков программирования: Visual Basic, Java, Eiffel, Oberon.

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

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

Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Π² практичСских ΠΈ ΡƒΡ‡Π΅Π±Π½Ρ‹Ρ… курсах ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‡Π΅Ρ‚ΠΊΠΎΠ³ΠΎ матСматичСского основания для формирования достаточно ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΈ ясного прСдставлСния ΠΎΠ± основах ООП. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ³ΠΎ курса Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ ΠΈΠ·ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ части курса Ρ€Π°Π·Π΄Π΅Π»Ρ‹ computer science (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π»Π°ΠΌΠ±Π΄Π°-исчислСниС ΠΈ комбинаторная Π»ΠΎΠ³ΠΈΠΊΠ°) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… понятий ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования. Π’ частности, понятиС абстракции – основной ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π»Π°ΠΌΠ±Π΄Π°-исчислСния – для нас являСтся ΡƒΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΌ.

Поясним качСствСнно Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ООП. НаслСдованиС ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ опСрирования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ основано Π½Π° ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ. Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ «ΡΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅» свойств ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° . ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ, ΠΊΠ°ΠΊ ΠΈ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, понимаСтся ΠΊΠ°ΠΊ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

Рассмотрим Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΊΠ°ΠΊ абстракция.

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

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

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

Как ΠΌΡ‹ ΡƒΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΈ, концСпция абстракции Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΠΎ модСлируСтся посрСдством Π»Π°ΠΌΠ±Π΄Π°-исчислСния. Π’ΠΎΡ‡Π½Π΅Π΅ говоря, опСрация абстракции Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ являСтся модСлью ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ понятия ООП.

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования (Руководства ΠΏΠΎ Java β„’> Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ языка Java)

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

Если Π²Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Ρ€Π°Π½ΡŒΡˆΠ΅ Π½Π΅ использовали ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык программирования, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ нСсколько основных ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π²Ρ‹ смоТСтС Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ΄.Π­Ρ‚ΠΎΡ‚ ΡƒΡ€ΠΎΠΊ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ вас с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, классами, наслСдованиСм, интСрфСйсами ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ. КаТдоС обсуТдСниС фокусируСтся Π½Π° Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ эти ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ соотносятся с Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠΈΡ€ΠΎΠΌ, ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ прСдоставляя Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² синтаксис языка программирования Java.

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

Класс — это ΠΏΠ»Π°Π½ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ опрСдСляСтся класс, ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ состояниС ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π°. Он Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ фокусируСтся Π½Π° основах, показывая, ΠΊΠ°ΠΊ Π΄Π°ΠΆΠ΅ простой класс ΠΌΠΎΠΆΠ΅Ρ‚ чисто ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ состояниС ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.

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

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ — это ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ классом ΠΈ внСшним ΠΌΠΈΡ€ΠΎΠΌ. Когда класс Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ интСрфСйс, ΠΎΠ½ ΠΎΠ±Π΅Ρ‰Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΠΎΠ΅ этим интСрфСйсом. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ опрСдСляСтся простой интСрфСйс ΠΈ ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‚ΡΡ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ измСнСния для любого класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚.

ΠŸΠ°ΠΊΠ΅Ρ‚ — это пространство ΠΈΠΌΠ΅Π½ для логичСской ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ классов ΠΈ интСрфСйсов. Π Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ большими ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ. Π­Ρ‚ΠΎΡ‚ Ρ€Π°Π·Π΄Π΅Π» ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚, ΠΏΠΎΡ‡Π΅ΠΌΡƒ это ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΈ Π·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ вас с интСрфСйсом ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ программирования (API), прСдоставляСмым ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ Java.

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

.

ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования | 101 ВычислСния

ΠšΠ»Π°ΡΡΡ‹ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

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

Класс состоит ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° состояний (ΠΎΠ½ ΠΆΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΈΠ»ΠΈ свойств ) ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΉ (a.k.a. ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ).

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ — это экзСмпляр класса . Атрибуты ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, хранящиСся с использованиСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… для хранСния Π΄Π°Π½Π½Ρ‹Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ / ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

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

Π£ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° классов Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ конструктором . Π­Ρ‚ΠΎ функция, которая автоматичСски вызываСтся, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ создаСтся / создаСтся ΠΈΠ· класса.Он Π² основном ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° / ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Superhero Class

Superhero Class

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим класс класса Superhero .
Атрибуты супСргСроя:

  • имя (строка)
  • superpower (строка)
  • сила (Ρ†Π΅Π»ΠΎΠ΅ число)

Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² супСргСроя:

  • init () — это конструктор , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ супСргСроя, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ создан.
  • Ρ…ΠΎΠ΄ΡŒΠ±Π° ()
  • ΠΏΡ€ΠΎΠ±Π΅Π³ ()
  • ΠΏΡ€Ρ‹ΠΆΠΎΠΊ ()

На Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ справа прСдставлСн класс Superhero с Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ конструктор Π½Π° этой Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ прСдполагаСтся, Ρ‡Ρ‚ΠΎ всС классы ΠΈΠΌΠ΅ΡŽΡ‚ конструктор. (Π’ Python конструктором класса являСтся функция __init __ () .)

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ экзСмпляров ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ· класса супСргСроСв

Π’ нашСй Π²ΠΈΠ΄Π΅ΠΎΠΈΠ³Ρ€Π΅ Π±ΡƒΠ΄Π΅Ρ‚ 3 супСргСроя: Π§Π΅Π»ΠΎΠ²Π΅ΠΊ-ΠΏΠ°ΡƒΠΊ, Π‘ΡƒΠΏΠ΅Ρ€ΠΌΠ΅Π½ ΠΈ БэтмСн.Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ создадим 3 ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ· нашСго класса Superhero .

Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ-ΠΏΠ°ΡƒΠΊ = Π½ΠΎΠ²Ρ‹ΠΉ супСргСрой (Β«Π§Π΅Π»ΠΎΠ²Π΅ΠΊ-ΠΏΠ°ΡƒΠΊΒ», «НаручныС стрСлки, ΡΡ‚Ρ€Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠ°ΡƒΡ‚ΠΈΠ½ΠΎΠΉΒ», 10)
БэтмСн = Π½ΠΎΠ²Ρ‹ΠΉ супСргСрой («БэтмСн», «НочноС Π²ΠΈΠ΄Π΅Π½ΠΈΠ΅Β», 10)
superman = new Superhero (Β«Π‘ΡƒΠΏΠ΅Ρ€ΠΌΠ΅Π½Β», Β«ΠœΠΎΠΆΠ΅Ρ‚ Π»Π΅Ρ‚Π°Ρ‚ΡŒΒ», 20)

Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ-ΠΏΠ°ΡƒΠΊ = Π½ΠΎΠ²Ρ‹ΠΉ супСргСрой (Β«Π§Π΅Π»ΠΎΠ²Π΅ΠΊ-ΠΏΠ°ΡƒΠΊΒ», «НаручныС стрСлки для ΡΡ‚Ρ€Π΅Π»ΡŒΠ±Ρ‹ ΠΈΠ· ΠΏΠ°ΡƒΡ‚ΠΈΠ½Ρ‹Β», 10)

БэтмСн = Π½ΠΎΠ²Ρ‹ΠΉ супСргСрой («БэтмСн», «НочноС Π²ΠΈΠ΄Π΅Π½ΠΈΠ΅Β», 10)

супСрмСн = Π½ΠΎΠ²Ρ‹ΠΉ супСргСрой ( Β«Π‘ΡƒΠΏΠ΅Ρ€ΠΌΠ΅Π½Β», Β«ΠœΠΎΠΆΠ΅Ρ‚ Π»Π΅Ρ‚Π°Ρ‚ΡŒΒ», 20)

БоглашСниС ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ…

ΠŸΡ€ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ класса начинаСтся с Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ Π±ΡƒΠΊΠ²Ρ‹ e.Π³. Π‘ΡƒΠΏΠ΅Ρ€Π³Π΅Ρ€ΠΎΠΉ .
Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° начинаСтся со строчной Π±ΡƒΠΊΠ²Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ-ΠΏΠ°ΡƒΠΊ .

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

МоТно ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ классы Π² мастСр-классы ΠΈ подклассы, создав связь ΠΌΠ΅ΠΆΠ΄Ρƒ классами, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ наслСдованиСм. Π­Ρ‚ΠΎ обСспСчиваСт способ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ классов ΠΈ обСспСчиваСт эффСктивный способ Π±ΠΎΠ»Π΅Π΅ эффСктивной ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° слоТной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

НапримСр, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² (ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ²), Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ DVD, ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ Mp3.

Класс ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°

Код Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ основан Π½Π° использовании класса ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠŸΡ€Π΅Π΄ΠΌΠ΅Ρ‚ . Π­Ρ‚ΠΎΡ‚ класс Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ всС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту:

  • Атрибуты: Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅, описаниС, Ρ†Π΅Π½Π°
  • ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹: viewFullDescription (), addToShoppingBasket (), removeFromShoppingBasket ()

ΠŸΠΎΠ΄ΠΊΠ»Π°ΡΡΡ‹ Π·Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌΠΈ.НапримСр:

    Класс MP3:

    • Атрибуты: Ρ…ΡƒΠ΄ΠΎΠΆΠ½ΠΈΠΊ, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ
    • ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹: play (), download ()

    DVD Класс:

    • Атрибуты: сСртификат, срок дСйствия, Π°ΠΊΡ‚Π΅Ρ€Ρ‹
    • ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹: viewTrailer ()

    ΠšΠ½ΠΈΠΆΠ½Ρ‹ΠΉ класс:

    • Атрибуты: Π°Π²Ρ‚ΠΎΡ€, ΠΆΠ°Π½Ρ€, количСство страниц
    • ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹: previewContent ()

ΠŸΠΎΠ΄ΠΊΠ»Π°ΡΡΡ‹ MP3, DVD ΠΈ Book Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса (Item), ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅ Π·Π΅Π»Π΅Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ.

    Класс MP3:

    • Атрибуты: Π½Π°Π·Π²Π°Π½ΠΈΠ΅, описаниС, Ρ†Π΅Π½Π°, ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ
    • ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹: viewFullDescription (), addToShoppingBasket (), removeFromShoppingBasket (), play (), download ()

    DVD Класс:

    • Атрибуты: имя, описаниС, Ρ†Π΅Π½Π°, сСртификат, срок дСйствия, участники
    • ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹: viewFullDescription (), addToShoppingBasket (), removeFromShoppingBasket (), viewTrailer ()

    ΠšΠ½ΠΈΠΆΠ½Ρ‹ΠΉ класс:

    • Атрибуты: имя, описаниС, Ρ†Π΅Π½Π°, Π°Π²Ρ‚ΠΎΡ€, ΠΆΠ°Π½Ρ€, Π½ΠΎΠΌΠ΅Ρ€ Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹
    • ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹: viewFullDescription (), addToShoppingBasket (), removeFromShoppingBasket (), previewContent ()
Π‘Ρ…Π΅ΠΌΠ° классов

УнаслСдованныС свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ подкласса Π½Π΅ , Π° Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ классов, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ понятно, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ унаслСдованы ΠΎΡ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса:

ВСрминология

Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс Ρ‚Π°ΠΊΠΆΠ΅ называСтся мастСр-класс ΠΈΠ»ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс .
Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс Ρ‚Π°ΠΊΠΆΠ΅ называСтся подклассом ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ классом .

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

Класс ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ Π΄Π²ΡƒΡ… ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… классов . Π’ этом случаС ΠΎΠ½ унаслСдуСт свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ всСх Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… классов.

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

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

Частный vs.ΠžΠ±Ρ‰Π΅ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΉ

ΠŸΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ private ΠΈΠ»ΠΈ public .

Доступ ΠΊ частному Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ ΠΈΠ»ΠΈ частному ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса. К Π½ΠΈΠΌ нСльзя ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ прямой доступ ΠΈΠ·Π²Π½Π΅ класса.

Доступ ΠΊ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ ΠΈΠ»ΠΈ общСдоступному ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ· любого мСста (ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса ΠΈΠ»ΠΈ ΠΈΠ·Π²Π½Π΅ класса).

НапримСр, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим класс Car со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ:

Π’ нашСй Π³ΠΎΠ½ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ³Ρ€Π΅ ΠΌΡ‹ Π±Ρ‹ создали экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° playerCar ΠΈΠ· этого класса Car .

playerCar = Π½ΠΎΠ²Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ («Мини», Β«ΠšΡƒΠΏΠ΅Ρ€Β»)

playerCar = new Car («Мини», Β«ΠšΡƒΠΏΠ΅Ρ€Β»)

Если всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ свойства ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ общСдоступныС, ΠΌΡ‹ смоТСм ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½ΠΈΠΌ доступ ΠΈΠ· любого мСста ΠΊΠΎΠ΄Π°. Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€

playerCar.speed = 70
playerCar.fuelLevel = 45
playerCar.accelerate (5) # ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π½Π° 5 миль Π² час
playerCar.drive (10) # ΠΏΡ€ΠΎΠ΅Ρ…Π°Ρ‚ΡŒ 10 миль
ΠŸΠ•Π§ΠΠ’Π¬ («Π’Π°Ρˆ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Ρ‚ΠΎΠΏΠ»ΠΈΠ²Π°:»
ΠŸΠ•Π§ΠΠ’Π¬ playerCar.fuelLevel

playerCar.speed = 70

playerCar.fuelLevel = 45

playerCar.accelerate (5) # ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π½Π° 5 миль Π² час

playerCar.drive (10) # ΠΏΡ€ΠΎΠ΅Ρ…Π°Ρ‚ΡŒ 10 миль

PRINT («Π’Π°Ρˆ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Ρ‚ΠΎΠΏΠ»ΠΈΠ²Π°: «

ΠŸΠ•Π§ΠΠ’Π¬ playerCar.fuelLevel

Однако считаСтся Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ Β«ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒΒ» Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ свойства ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΡ‚ «внСшнСго ΠΌΠΈΡ€Π°Β», дСлая ΠΈΡ… частными.Π’ этом случаС ΠΊ этим частным свойствам ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ нСльзя ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΈΠ·Π²Π½Π΅ класса.

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

playerCar.speed = 70
playerCar.fuelLevel = 45
ΠŸΠ•Π§ΠΠ’Π¬ playerCar.fuelLevel

playerCar.speed = 70

playerCar.fuelLevel = 45

ΠŸΠ•Π§ΠΠ’Π¬ playerCar.fuelLevel

ΠœΡ‹ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ содСрТимоС fuelLevel ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ автомобиля Π² ΠΊΠΎΠ΄Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² fillUp (), accelerate (), slowDown () ΠΈ drive () автомобиля.

playerCar.fillUp (45) # Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ 45 Π»ΠΈΡ‚Ρ€ΠΎΠ² Π±Π΅Π½Π·ΠΈΠ½Π° Π² Π±Π°ΠΊ
playerCar.accelerate (50) # ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π½Π° 50 миль Π² час
playerCar.drive (10) # ΠΏΡ€ΠΎΠ΅Ρ…Π°Ρ‚ΡŒ 10 миль

playerCar.fillUp (45) # Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ 45 Π»ΠΈΡ‚Ρ€ΠΎΠ² Π±Π΅Π½Π·ΠΈΠ½Π° Π² Π±Π°ΠΊ

playerCar.accelerate (50) # ΡƒΠ²Π΅Π»ΠΈΡ‡ΡŒΡ‚Π΅ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π½Π° 50 миль Π² час

playerCar.drive (10) # ΠΏΡ€ΠΎΠ΅Ρ…Π°Ρ‚ΡŒ 10 миль

Π“Π΅Ρ‚Ρ‚Π΅Ρ€Ρ‹ ΠΈ сСттСры

ΠžΡ‡Π΅Π½ΡŒ часто свойства класса ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ частных свойств , поэтому ΠΊ Π½ΠΈΠΌ нСльзя ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ·Π²Π½Π΅ класса. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ общСдоступныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ , Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Π³Π΅Ρ‚Ρ‚Π΅Ρ€Π°ΠΌΠΈ ΠΈ сСттСрами ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ для доступа / чтСния (Π³Π΅Ρ‚Ρ‚Π΅Ρ€Ρ‹) ΠΊ содСрТимому частного свойства ΠΈ для пСрСзаписи (сСттСры) содСрТимого частного свойства.

НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ fuelLevel ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΈΠ³Ρ€ΠΎΠΊΠ°, ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ общСдоступный ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ getFuelLevel () ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для информирования ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΎ Ρ‚ΠΎΠΌ, сколько Π±Π΅Π½Π·ΠΈΠ½Π° ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Π² Π΅Π³ΠΎ Π±Π°ΠΊΠ΅.

ΠŸΠ•Π§ΠΠ’Π¬ Β«Π’Π°Ρˆ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Ρ‚ΠΎΠΏΠ»ΠΈΠ²Π°:Β»
ΠŸΠ•Π§ΠΠ’Π¬ player.getFuelLevel ()

ΠŸΠ•Π§ΠΠ’Π¬ Β«Π’Π°Ρˆ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Ρ‚ΠΎΠΏΠ»ΠΈΠ²Π°:Β»

ΠŸΠ•Π§ΠΠ’Π¬ player.getFuelLevel ()

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ сСттСр для этого свойства, Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π΄Π°Ρ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠΊΡƒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ свой Ρ‚Π°Π½ΠΊ Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ значСния ΠΈΠ»ΠΈ ΠΎΠΏΡƒΡΡ‚ΠΎΡˆΠΈΡ‚ΡŒ Π΅Π³ΠΎ.Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€

player.setFuelLevel (0) # ΠžΠΏΠΎΡ€ΠΎΠΆΠ½Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΏΠ»ΠΈΠ²Π½ΠΎΠ³ΠΎ Π±Π°ΠΊΠ°

player.setFuelLevel (0) # ΠžΠΏΠΎΡ€ΠΎΠΆΠ½Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΏΠ»ΠΈΠ²Π½ΠΎΠ³ΠΎ Π±Π°ΠΊΠ°

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ использованиС установщиков Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для прСдотвращСния прямого доступа ΠΊ свойству ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… установщика.

НапримСр, Ссли fuelLevel являСтся общСдоступным свойством, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ принят, Π΄Π°ΠΆΠ΅ Ссли Π² Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ 999 Π»ΠΈΡ‚Ρ€ΠΎΠ² Π±Π΅Π½Π·ΠΈΠ½Π° (999> tankCapacity)!

playerCar.fuelLevel = 999

playerCar.fuelLevel = 999

Π‘Π΄Π΅Π»Π°Π² свойство fuelLevel Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΈ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ setFuelLevel () (установщик), ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ΄Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° setFuelLevel () ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ validatiom , ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ нСльзя ΠΎΠ±ΠΎΠΉΡ‚ΠΈ , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ являСтся ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ числом, мСньшим ΠΈΠ»ΠΈ Ρ€Π°Π²Π½Ρ‹ΠΌ tankCapacity.Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€

ЀУНКЦИЯ setFuelLevel (количСство)
Π•Π‘Π›Π˜ количСство <0 ВО fuelLevel = 0 Π˜ΠΠΠ§Π• Π•Π‘Π›Π˜ количСство> Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ Π±Π°ΠΊΠ° ВО
fuelLevel = Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ Π±Π°ΠΊΠ°
ELSE
fuelLevel = количСство
ΠšΠžΠΠ•Π¦ Π•Π‘Π›Π˜
ΠšΠžΠΠ•Π§ΠΠΠ― ЀУНКЦИЯ

FUNCTION setFuelLevel (количСство)

IF количСство <0 THEN

fuelLevel = 0

ELSE IF количСство> tankCapacity THEN

fuelLevel = tankCapacity

ELSE

fuelCevel = количСство

END IF

END 900

Установщик ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован Π² нашСм ΠΊΠΎΠ΄Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

playerCar.setFuelLevel (45) # ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Ρ‚ΠΎΠΏΠ»ΠΈΠ²Π° Π΄ΠΎ 45 Π»ΠΈΡ‚Ρ€ΠΎΠ²

playerCar.setFuelLevel (45) # ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Ρ‚ΠΎΠΏΠ»ΠΈΠ²Π° Π΄ΠΎ 45 Π»ΠΈΡ‚Ρ€ΠΎΠ²

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

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ «мноТСствСнныС Ρ„ΠΎΡ€ΠΌΡ‹Β». Π’ ООП эти нСсколько Ρ„ΠΎΡ€ΠΌ относятся ΠΊ нСскольким Ρ„ΠΎΡ€ΠΌΠ°ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π³Π΄Π΅ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ имя ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… классах ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ имя ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ классС с Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ.Π•ΡΡ‚ΡŒ Π΄Π²Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ°: ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ°.

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ замСщСния

Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ классов, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ классы ElectricCar ΠΈ PetrolCar Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚ класса Car .

Π’ этом классС классы PetrolCar ΠΈ ElectricCar Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ drive () ΠΎΡ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса Car. Однако этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΈΠ½Π°Ρ‡Π΅. , ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ Π½Π΅ ныряСтС Π½Π° элСктромобилС Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π²ΠΎΠ΄ΠΈΡ‚Π΅ Π±Π΅Π½Π·ΠΈΠ½ΠΎΠ²Ρ‹ΠΉ.Код, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² ΠΎΠ±ΠΎΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ…, Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса. Π­Ρ‚ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‰Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ : ΠΊΠΎΠ³Π΄Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· подкласса Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ пСрСзаписан, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄, унаслСдованный ΠΎΡ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса.

Иногда, ΠΊΠ°ΠΊ Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΌΠ΅Ρ‚ΠΎΠ΄ drive () класса Car Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, Π½ΠΎ Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π²ΠΎΠΎΠ±Ρ‰Π΅ (пустая функция Π±Π΅Π· ΠΊΠΎΠ΄Π°) Π² классС Car . ВмСсто этого ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ пСрСзаписан ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² подклассах.

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π° для принятия Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

НапримСр, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим наш класс Superhero, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ для установки Π΄Π°Ρ‚Ρ‹ роТдСния (DoB) супСргСроя. ΠœΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ этот ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ нСсколько Ρ€Π°Π·, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π΄Π°Ρ‚Ρ‹ Π² Π²ΠΈΠ΄Π΅ строки Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Β«Π”Π” / ММ / Π“Π“Π“Π“Β».

ΠŸΠ ΠžΠ¦Π•Π”Π£Π Π setDoB (строка: Π΄Π°Ρ‚Π°) # Π΄Π°Ρ‚Π° Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Π”Π” / ММ / Π“Π“Π“Π“

PROCEDURE setDoB (string: date) # Π΄Π°Ρ‚Π° Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Π”Π” / ММ / Π“Π“Π“Π“

Π΅.Π³.

spiderman.setDob («15.08.1962»)

spiderman.setDob («15.08.1962»)

Π’ΠΎΡ‚ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π·, взяв Ρ‚Ρ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°:

ΠŸΠ ΠžΠ¦Π•Π”Π£Π Π setDoB (Ρ†Π΅Π»ΠΎΠ΅ число: дСнь, Ρ†Π΅Π»ΠΎΠ΅ число: мСсяц, Ρ†Π΅Π»ΠΎΠ΅ число: Π³ΠΎΠ΄)

ΠŸΠ ΠžΠ¦Π•Π”Π£Π Π setDoB (Ρ†Π΅Π»ΠΎΠ΅ число: дСнь, Ρ†Π΅Π»ΠΎΠ΅ число: мСсяц, Ρ†Π΅Π»ΠΎΠ΅ число: Π³ΠΎΠ΄)

Π΅.Π³.

spiderman.setDob (15,08,1962)

spiderman.setDob (15,08,1962)

НаличиС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° для ΠΏΡ€ΠΈΠ΅ΠΌΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² (Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ΅ количСство ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈΠ»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…) называСтся ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ .

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

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

НапримСр, Π΄Π°Π²Π°ΠΉΡ‚Π΅ вСрнСмся ΠΊ систСмС ΠΎΠ½Π»Π°ΠΉΠ½-ΠΏΠΎΠΊΡƒΠΏΠΎΠΊ, Π³Π΄Π΅ ΠΌΡ‹ ΠΏΡ€ΠΎΠ΄Π°Π΅ΠΌ Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ° Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²: MP3, DVD ΠΈ ΠΊΠ½ΠΈΠ³ΠΈ. Класс MP3 , класс DVD ΠΈ класс Book Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса Item . ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ созданы ΠΈΠ· класса MP3 , класса DVD ΠΈΠ»ΠΈ класса Book .ΠœΡ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° нСпосрСдствСнно ΠΈΠ· класса Item . Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ класс Item называСтся абстрактным классом .

Π˜Ρ‚Π°ΠΊ, абстрактный класс:

  • НСвозмоТно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ.
  • ΠœΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· наслСдованиС.

.

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования — CodeProject

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ даСтся ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π­Ρ‚ΠΎ Ρ‚ΠΈΠΏ программирования, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ программисты ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… структуры Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚ΠΈΠΏΡ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΊ структурС Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, структура Π΄Π°Π½Π½Ρ‹Ρ… становится ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΌ ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚Π°ΠΊ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, программисты ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ΄Π½ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ. НапримСр, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ характСристики ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Одно ΠΈΠ· основных прСимущСств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования Π½Π°Π΄ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ³ΠΎ программирования состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ программистам ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ просто ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΡƒΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π²ΡˆΠΈΠΉ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· своих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π­Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ — это основныС сущности Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ систСмС. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° программирования анализируСтся с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π° связи ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ. Когда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выполняСтся, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ, отправляя сообщСния. Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ, Π½Π΅ зная подробностСй своих Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΊΠΎΠ΄Π°.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ — это экзСмпляр класса. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ обСспСчСнии, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр класса Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅.ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ экзСмпляра ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ класса.

Класс

Класс — это Π½Π°Π±ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. ПослС опрСдСлСния класса ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ любоС количСство ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… этому классу. Класс — это ΠΏΠ»Π°Π½ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΎΠ±Ρ‰ΠΈΠ΅ для всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

ЭкзСмпляр

ЭкзСмпляр — это фактичСский ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, созданный Π²ΠΎ врСмя выполнСния. МоТно ΠΈΠΌΠ΅Ρ‚ΡŒ экзСмпляр класса ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Государство

Набор Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° называСтся Π΅Π³ΠΎ состояниСм. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ состоит ΠΈΠ· состояния ΠΈ повСдСния, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π² классС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

ΠœΠ΅Ρ‚ΠΎΠ΄

ΠœΠ΅Ρ‚ΠΎΠ΄ описываСт возмоТности ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π‘ΠΎΠ±Π°ΠΊΠ° ΡƒΠΌΠ΅Π΅Ρ‚ Π»Π°ΡΡ‚ΡŒ. Π˜Ρ‚Π°ΠΊ, bark () — ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса Dog.

Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ пСрСдаСтся

ΠŸΡ€ΠΎΡ†Π΅ΡΡ, посрСдством ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ отправляСт Π΄Π°Π½Π½Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΈΠ»ΠΈ просит Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄.ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° сообщСний соотвСтствуСт Β«Π²Ρ‹Π·ΠΎΠ²Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Β».

Абстракция

Абстракция ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π°ΠΊΡ‚ прСдставлСния основных характСристик Π±Π΅Π· Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Ρ… Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ΠΈΠ»ΠΈ объяснСний. ΠšΠ»Π°ΡΡΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ абстракции ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ список абстрактных Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ².

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

Π­Ρ‚ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ связываСт ΠΊΠΎΠ΄ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ Π² манипуляциях ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ ΠΈΡ… ΠΎΡ‚ внСшнСго Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ использования. ΠšΠΎΡ€ΠΎΡ‡Π΅ говоря, ΠΎΠ½ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ всСх Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠ΄ΠΎΠ² ΠΈ Π΄Π°Π½Π½Ρ‹Ρ….Π§Π΅Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ интСрфСйс ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ доступ ΠΊ этому ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ ΠΈ Π΄Π°Π½Π½Ρ‹ΠΌ. Акт помСщСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, выполняСмых с этими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π² ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ класс. Π—Π°Ρ‚Π΅ΠΌ класс становится «капсулой» ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ для Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² ΠΎΠ΄Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ (классС) — это инкапсуляция. Π”Π°Π½Π½Ρ‹Π΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ доступны для внСшнСго ΠΌΠΈΡ€Π°, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хранятся Π² классС, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½ΠΈΠΌ доступ.

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

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

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

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹. Π’ Ρ€Π°Π·Π½Ρ‹Ρ… случаях опСрация ΠΌΠΎΠΆΠ΅Ρ‚ вСсти сСбя ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ.ПовСдСниС зависит ΠΎΡ‚ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π­Ρ‚ΠΎ функция, которая позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ интСрфСйс для ΠΎΠ±Ρ‰Π΅Π³ΠΎ класса дСйствий. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ дСйствиС опрСдСляСтся Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΎΠΌ ситуации. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«ΠΎΠ΄ΠΈΠ½ интСрфСйс, нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²Β». Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΉ интСрфСйс для Π³Ρ€ΡƒΠΏΠΏΡ‹ связанных дСйствий. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, позволяя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ интСрфСйс для опрСдСлСния ΠΎΠ±Ρ‰Π΅Π³ΠΎ класса дСйствий.Π—Π°Π΄Π°Ρ‡Π° компилятора — Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ дСйствиС (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄) ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ситуации.

ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅

ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ описываСт ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ «Π΅ΡΡ‚ΡŒ-Π°», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ ΠΌΠ΅ΠΆΠ΄Ρƒ классами ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². НапримСр: — Β«Ρ„Ρ€ΡƒΠΊΡ‚Β» — это ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ слов «яблоко», «апСльсин», Β«ΠΌΠ°Π½Π³ΠΎΒ» ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ…. ΠΆΠΈΠ²ΠΎΡ‚Π½ΠΎΠ΅ являСтся ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΆΠΈΠ²ΠΎΡ‚Π½ΠΎΠ΅ .

БпСциализация

БпСциализация ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π΅ состояниС ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.Однако ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ своС собствСнноС особоС состояниС ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. БпСциализация ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ подкласс. ΠΆΠΈΠ²ΠΎΡ‚Π½ΠΎΠ΅ — это ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅, Π° домашнСС ΠΆΠΈΠ²ΠΎΡ‚Π½ΠΎΠ΅ — это спСциализация, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ домашнСС ΠΆΠΈΠ²ΠΎΡ‚Π½ΠΎΠ΅ — это особый Π²ΠΈΠ΄ ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹Ρ… .

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° ООП

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ прСимущСства ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°ΠΌΠΈ:

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

Бсылки

Упоминалось ΠΌΠ½ΠΎΠ³ΠΎ статСй ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ. Π―Π²Π½Ρ‹Π΅ ссылки Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ†ΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹. НСкоторыС опрСдСлСния ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π² ΠΈΡ… ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΌΠ½ΠΎΠΉ, Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ написаны ΠΌΠ½ΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΡ… Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ.Π― Π½Π΅ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡ΡƒΠΆΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅.

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ

  • 14 -Π΅ Июль 2008 Π³ .: ΠΠ°Ρ‡Π°Π»ΡŒΠ½Π°Ρ Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ

.

Как ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования ΡˆΠ΅ΡΡ‚ΠΈΠ»Π΅Ρ‚Π½Π΅ΠΌΡƒ Ρ€Π΅Π±Π΅Π½ΠΊΡƒ

АлСксандра ΠŸΠ΅Ρ‚ΠΊΠΎΠ²Π°

Π’Ρ‹ Π·Π°ΠΌΠ΅Ρ‡Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ клишС вопросы всСгда Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π½Π° собСсСдовании — снова ΠΈ снова?

Π― ΡƒΠ²Π΅Ρ€Π΅Π½, Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, ΠΎ Ρ‡Π΅ΠΌ я.

НапримСр:

Π“Π΄Π΅ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ сСбя Ρ‡Π΅Ρ€Π΅Π· ΠΏΡΡ‚ΡŒ Π»Π΅Ρ‚?

ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π΅Ρ‰Π΅ Ρ…ΡƒΠΆΠ΅:

Π§Ρ‚ΠΎ Π²Ρ‹ считаСтС своСй самой большой ΡΠ»Π°Π±ΠΎΡΡ‚ΡŒΡŽ?

Ух… Π΄Π°ΠΉ ΠΌΠ½Π΅ ΠΏΠ΅Ρ€Π΅Π΄ΠΎΡ…Π½ΡƒΡ‚ΡŒ. Π‘Ρ‡ΠΈΡ‚Π°ΡŽ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° этот вопрос большой ΡΠ»Π°Π±ΠΎΡΡ‚ΡŒΡŽ! Π’ΠΎ всяком случаС, я Π½Π΅ ΠΎ Ρ‚ΠΎΠΌ.

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

ΠŸΡ€ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π±ΡƒΠ΄ΡŒΡ‚Π΅ остороТны, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ‚ΠΎ, ΠΎ Ρ‡Π΅ΠΌ ΠΏΠΎΠ·ΠΆΠ΅ ΠΏΠΎΠΆΠ°Π»Π΅Π΅Ρ‚Π΅.

БСгодня я Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ Ρ‚ΠΈΠΏΠ΅ вопросов Π² ΠΌΠΈΡ€Π΅ программирования:

ΠšΠ°ΠΊΠΎΠ²Ρ‹ основныС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования?

Π― Π±Ρ‹Π» ΠΏΠΎ ΠΎΠ±Π΅ стороны этого вопроса. Π­Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· Ρ‚Π΅Ρ… Ρ‚Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π΄Π°ΡŽΡ‚ Ρ‚Π°ΠΊ часто, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ сСбС Π½Π΅ Π·Π½Π°Ρ‚ΡŒ.

На Π½Π΅Π³ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ приходится ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ младшим ΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это простой способ для ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽΠ΅Ρ€Π° ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΈ Π²Π΅Ρ‰ΠΈ:

  1. Готовился Π»ΠΈ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ ΠΊ этому ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ?
    БонусныС Π±Π°Π»Π»Ρ‹, Ссли ΠΎΡ‚Π²Π΅Ρ‚ ΡƒΡΠ»Ρ‹ΡˆΠΈΡˆΡŒ сразу — это ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄.
  2. ΠšΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ ΠΏΡ€ΠΎΡˆΠ΅Π» этап обучСния?
    ПониманиС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования (ООП) ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²Ρ‹ΡˆΠ»ΠΈ Π·Π° Ρ€Π°ΠΌΠΊΠΈ копирования ΠΈ вставки ΠΈΠ· руководств — Π²Ρ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π²Π΅Ρ‰ΠΈ с Π±ΠΎΠ»Π΅Π΅ высокой Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния.
  3. ПониманиС ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Π° Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΈΠ»ΠΈ повСрхностноС?
    Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ ΠΊΠΎΠΌΠΏΠ΅Ρ‚Π΅Π½Ρ†ΠΈΠΈ ΠΏΠΎ этому вопросу часто Ρ€Π°Π²Π΅Π½ ΡƒΡ€ΠΎΠ²Π½ΡŽ ΠΊΠΎΠΌΠΏΠ΅Ρ‚Π΅Π½Ρ†ΠΈΠΈ ΠΏΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ² . Π”ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ΡΡŒ ΠΌΠ½Π΅.

Как выглядит Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ уровня послС ΠΎΡ‚Π²Π΅Ρ‚Π° Π½Π° этот вопрос!

Π§Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования: инкапсуляция , абстракция , наслСдованиС , ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ .

Π­Ρ‚ΠΈ слова ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΡƒΠ³Π°ΡŽΡ‰ΠΈΠΌΠΈ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.А слоТныС, Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ объяснСния Π² Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΡƒΠ΄Π²Π°ΠΈΠ²Π°ΡŽΡ‚ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρƒ.

Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Ρ…ΠΎΡ‡Ρƒ Π΄Π°Ρ‚ΡŒ простоС, ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ ΠΈ ясноС объяснСниС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· этих ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π²ΡƒΡ‡Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ Π²Ρ‹ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚Π΅ Ρ€Π΅Π±Π΅Π½ΠΊΡƒ, Π½ΠΎ ΠΌΠ½Π΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΡƒΡΠ»Ρ‹ΡˆΠ°Ρ‚ΡŒ эти ΠΎΡ‚Π²Π΅Ρ‚Ρ‹, ΠΊΠΎΠ³Π΄Π° я ΠΏΡ€ΠΎΠ²ΠΎΠΆΡƒ ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ.

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

Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π’ Π½Π΅ΠΌ Π΅ΡΡ‚ΡŒ нСсколько логичСски Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π² соотвСтствии с ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ достигаСтся, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ сохраняСт своС состояниС private Π²Π½ΡƒΡ‚Ρ€ΠΈ класса. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ прямого доступа ΠΊ этому ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ. ВмСсто этого ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ список общСдоступных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ.

Π˜Ρ‚Π°ΠΊ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ управляСт своим собствСнным состояниСм с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² — ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠΉ класс Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΡΠ½ΡƒΡ‚ΡŒΡΡ Π΅Π³ΠΎ, Ссли явно Π½Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСдоставлСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Но (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ) Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ состояниС.

Допустим, ΠΌΡ‹ создаСм ΠΊΡ€ΠΎΡˆΠ΅Ρ‡Π½ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ Sims.Π•ΡΡ‚ΡŒ люди ΠΈ Π΅ΡΡ‚ΡŒ кошка. Они ΠΎΠ±Ρ‰Π°ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ, поэтому ΠΌΡ‹ инкапсулируСм всС Β«catΒ»

.

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

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