Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «Как Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, ΡƒΠ»ΡƒΡ‡ΡˆΠ°ΡŽΡ‚ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽΒ»

Автор Π‘ΠΊΠΎΡ‚Ρ‚ ΠœΠ΅ΠΉΠ΅Ρ€Ρ

Π‘ΠΊΠΎΡ‚Ρ‚ ΠœΠ΅ΠΉΠ΅Ρ€Ρ

Как Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, ΡƒΠ»ΡƒΡ‡ΡˆΠ°ΡŽΡ‚ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ

ΠŸΡ€Π΅Π΄ΠΏΠΎΡΡ‹Π»ΠΊΠ°

Когда, Π² 1991 Π³., я писал ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ "Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ использованиС C++" (Effective C++ [1]), я ΠΈΠ·ΡƒΡ‡Π°Π» ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, связанных с классом. Для Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса C ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ f, связанной с C, я Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ:

if (f Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±Ρ‹Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ) сдСлайтС f Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ-Ρ‡Π»Π΅Π½ΠΎΠΌ C;

else

 if (f – это operatorβ€Ίβ€Ί ΠΈΠ»ΠΈ operatorβ€Ήβ€Ή) {

  сдСлайтС f Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ – Π½Π΅ Ρ‡Π»Π΅Π½ΠΎΠΌ;

  if (f Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ доступ ΠΊ Π½Π΅ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌ Ρ‡Π»Π΅Π½Π°ΠΌ C) сдСлайтС f Π΄Ρ€ΡƒΠ³ΠΎΠΌ C;

 }

 else if (Π² f Π½Π°Π΄ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π΅Π³ΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°) {

  сдСлайтС f Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ – Π½Π΅ Ρ‡Π»Π΅Π½ΠΎΠΌ;

  if (f Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊ Π½Π΅ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌ Ρ‡Π»Π΅Π½Π°ΠΌ C) сдСлайтС f Π΄Ρ€ΡƒΠ³ΠΎΠΌ C;

 } else сдСлайтС f Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ-Ρ‡Π»Π΅Π½ΠΎΠΌ C;

Π­Ρ‚ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ…ΠΎΡ€ΠΎΡˆΠΎ слуТил ΠΌΠ½Π΅ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π³ΠΎΠ΄Ρ‹, ΠΈ ΠΊΠΎΠ³Π΄Π° я ΠΏΡ€Π°Π²ΠΈΠ» "Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ использованиС C++" для Π²Ρ‚ΠΎΡ€ΠΎΠΉ издания Π² 1997 Π³. [2], я Π½Π΅ сдСлал Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² этот Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ.

Однако, Π² 1998 Π³ΠΎΠ΄Ρƒ, ΠΊΠΎΠ³Π΄Π° я ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ» ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π² Actel, Π³Π΄Π΅ Аран ΠšΠ°Π½Π΄Ρƒ (Arun Kundu) Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π΄ΠΈΠΊΡ‚ΠΎΠ²Π°Π», Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π΄Π°ΠΆΠ΅ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΊΠ°ΠΊ Π½Π΅ Ρ‡Π»Π΅Π½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ использовали Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ интСрфСйс класса C. "Π­Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚?" – спросил ΠΎΠ½ мСня? Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Ссли f ΠΌΠΎΠ³Π»Π° Π±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ функция-Ρ‡Π»Π΅Π½ (ΠΌΠ΅Ρ‚ΠΎΠ΄) ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ функция Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰Π°ΡΡΡ Π½Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠΌ, Π½Π΅ Ρ‡Π»Π΅Π½ΠΎΠΌ, я Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Ρ‰ΠΈΡ‰Π°Π», Ρ‡Ρ‚ΠΎ Π΅Π΅ Π½Π°Π΄ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄ класса? Π― Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡƒΠΌΠ°Π» ΠΎΠ± этом ΠΈ Ρ€Π΅ΡˆΠΈΠ», Ρ‡Ρ‚ΠΎ это Π½Π΅ Ρ‚ΠΎ, Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ я ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π». ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ [3]:

if (f Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±Ρ‹Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ) сдСлайтС f Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ-Ρ‡Π»Π΅Π½ΠΎΠΌ C;

else if (f – это operatorβ€Ίβ€Ί ΠΈΠ»ΠΈ operatorβ€Ήβ€Ή) {

 ΡΠ΄Π΅Π»Π°ΠΉΡ‚Π΅ f Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ – Π½Π΅ Ρ‡Π»Π΅Π½ΠΎΠΌ;

 if (f Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ доступ ΠΊ Π½Π΅ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌ Ρ‡Π»Π΅Π½Π°ΠΌ C) сдСлайтС f Π΄Ρ€ΡƒΠ³ΠΎΠΌ C;

} else if (f Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π΅Π³ΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°) {

 ΡΠ΄Π΅Π»Π°ΠΉΡ‚Π΅ f Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ – Π½Π΅ Ρ‡Π»Π΅Π½ΠΎΠΌ;

 if (f Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊ Π½Π΅ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌ Ρ‡Π»Π΅Π½Π°ΠΌ C) сдСлайтС f Π΄Ρ€ΡƒΠ³ΠΎΠΌ C;

} else if (f ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Ρ‡Π΅Ρ€Π΅Π· доступный интСрфСйс класса) сдСлайтС f Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ – Π½Π΅ Ρ‡Π»Π΅Π½ΠΎΠΌ;

else сдСлайтС f Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ-Ρ‡Π»Π΅Π½ΠΎΠΌ C;

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

Но ΠΎΠ½ΠΈ ΠΎΡˆΠΈΠ±Π°ΡŽΡ‚ΡΡ.

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

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

struct Point {

 int x, y;

};

Π‘Π»Π°Π±ΠΎΡΡ‚ΡŒΡŽ этой структуры являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈ Π΅Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Π½Π°Ρ‡Π½ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту структуру, Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ тяТСло ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π΅. ΠŸΡ€ΠΈΠ΄Π΅Ρ‚ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ слишком ΠΌΠ½ΠΎΠ³ΠΎ клиСнтского ΠΊΠΎΠ΄Π°. Если Π±Ρ‹ ΠΌΡ‹ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ Ρ€Π΅ΡˆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ x ΠΈ y вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ эти значСния, ΠΌΡ‹ Π±Ρ‹Π»ΠΈ Π±Ρ‹ ΠΎΠ±Ρ€Π΅Ρ‡Π΅Π½Ρ‹ Π½Π° Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ. Π£ нас Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ Π±Ρ‹ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΈ Π·Π°ΠΏΠΎΠ·Π΄Π°Π»ΠΎΠΌ ΠΎΠ·Π°Ρ€Π΅Π½ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ x ΠΈ y Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡ€ΠΈ нСдостаточной инкапсуляции: имССтся прСпятствиС для Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. НСинкапсулированноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС Π½Π΅Π³ΠΈΠ±ΠΊΠΎ, ΠΈ, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, ΠΎΠ½ΠΎ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ устойчиво. ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ… условий ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС нСспособно элСгантно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ вмСстС с Π½ΠΈΠΌΠΈ. НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ здСсь ΠΎ практичСской сторонС, Π° Π½Π΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ являСтся ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ. ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ структуру Point. Но, Ссли большой объСм ΠΊΠΎΠ΄Π° зависит ΠΎΡ‚ этой структуры, Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ измСнСния Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½Ρ‹ΠΌΠΈ.

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ класса с интСрфСйсом, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰ΠΈΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ возмоТности, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Ρ‚Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСдоставляСт Π²Ρ‹ΡˆΠ΅ описанная структура, Π½ΠΎ с инкапсулированной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ:

class Point {

public:

 int getXValue() const;

 int getYValue() const;

 void setXValue(int newXValue);

 void setYValue(int newYValue);

private:

… // прочСС…

};

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

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎ, Ρ‡Π΅ΠΌ нСинкапсулированноС, ΠΈ, ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… Ρ€Π°Π²Π½Ρ‹Ρ… условиях, эта Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° проСктирования.

Π‘Ρ‚Π΅ΠΏΠ΅Π½ΡŒ инкапсуляции

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

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

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

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – Π½Π΅ Ρ‡Π»Π΅Π½Ρ‹

ΠœΡ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡ‹ΠΉ способом ΠΎΡ†Π΅Π½ΠΊΠΈ инкапсуляции являСтся количСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½Ρ‹, Ссли измСняСтся рСализация класса. Π’ этом случаС становится ясно, Ρ‡Ρ‚ΠΎ класс с n ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π±ΠΎΠ»Π΅Π΅ инкапсулирован, Ρ‡Π΅ΠΌ класс с n+1 ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. И это наблюдСниС поясняСт ΠΌΠΎΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ Π² Π²Ρ‹Π±ΠΎΡ€Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ Π½ΠΈ Π΄Ρ€ΡƒΠ·ΡŒΡΠΌΠΈ, Π½ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ: Ссли функция f ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ функция, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰Π°ΡΡΡ Π΄Ρ€ΡƒΠ³ΠΎΠΌ, Ρ‚ΠΎ созданиС Π΅Π΅ Π² Π²ΠΈΠ΄Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠ»ΠΎ Π±Ρ‹ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ созданиС Π΅Π΅ Π² Π²ΠΈΠ΄Π΅ "Π½Π΅Π΄Ρ€ΡƒΠ³Π°" ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ Π½Π΅ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚. Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ здСсь Π½Π΅ обсуТдаСтся (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности f доступны классам ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π³Π΄Π΅ эта f Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π°), ΠΌΡ‹ СстСствСнно ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ инкапсулированный ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.