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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ использованиС C++. 55 Π²Π΅Ρ€Π½Ρ‹Ρ… способов ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ структуру ΠΈ ΠΊΠΎΠ΄ Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 27

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

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

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

Π‘ΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…-Ρ‡Π»Π΅Π½ΠΎΠ² Π·Π° интСрфСйсом Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΡ…. НапримСр, это ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ ΠΈΠ·Π²Π΅Ρ‰Π΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊ Ρ‡Π»Π΅Π½Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… происходит ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ для чтСния ΠΈΠ»ΠΈ записи, обСспСчиваСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ прСд– ΠΈ постусловий, позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΉ срСдС ΠΈ Ρ‚. Π΄. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΈ Π² C++ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… языков, ΠΊΠ°ΠΊ Delphi ΠΈ C#, увидят Π² этой возмоТности аналогию со «свойствами» (Β«propertiesΒ»), ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π² этих языках, ΠΏΡ€Π°Π²Π΄Π°, ΠΊ ΠΈΠΌΠ΅Π½ΠΈ «свойства» приходится Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ скобки.

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

АргумСнты ΠΏΡ€ΠΎΡ‚ΠΈΠ² Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Ρ… (protected) Π΄Π°Π½Π½Ρ‹Ρ…-Ρ‡Π»Π΅Π½ΠΎΠ² Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹. ЀактичСски Ρ‚ΡƒΡ‚ Π½Π΅Ρ‚ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΉ, хотя ΠΏΠΎΠ½Π°Ρ‡Π°Π»Ρƒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ это Π½Π΅ Ρ‚Π°ΠΊ. РассуТдСния ΠΎ синтаксичСской нСпротиворСчивости ΠΈ Ρ‚ΠΎΠ½ΠΊΠΎ настраиваСмом доступС Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΌΠ΅Ρ€Π΅ ΠΊΠ°ΡΠ°ΡŽΡ‚ΡΡ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Ρ… Ρ‡Π»Π΅Π½ΠΎΠ², Ρ‡Ρ‚ΠΎ ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ…, Π½ΠΎ ΠΊΠ°ΠΊ насчСт инкапсуляции? Π―Π²Π»ΡΡŽΡ‚ΡΡ Π»ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π±ΠΎΠ»Π΅Π΅ инкапсулированными, Ρ‡Π΅ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅? Как это Π½ΠΈ странно, Π½ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ – Π½Π΅Ρ‚.

Π’ ΠΏΡ€Π°Π²ΠΈΠ»Π΅ 23 ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ инкапсуляция Π½Π΅ΠΊΠΎΠ΅ΠΉ сущности ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π° ΠΎΠ±ΡŠΠ΅ΠΌΡƒ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Ссли эта ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ измСняСтся. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ инкапсуляции Ρ‡Π»Π΅Π½ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π° ΠΎΠ±ΡŠΠ΅ΠΌΡƒ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пСрСстанСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Ссли этот Ρ‡Π»Π΅Π½ измСнится, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΡŠΡΡ‚ ΠΈΠ· класса (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, став вычисляСмым, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ averageSoFar Π²Ρ‹ΡˆΠ΅).

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

Π§Ρ‚ΠΎ слСдуСт ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ

β€’ ΠžΠ±ΡŠΡΠ²Π»ΡΠΉΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅-Ρ‡Π»Π΅Π½Ρ‹ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ (private). Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ синтаксичСски ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹ΠΉ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ, обСспСчиваСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ½ΠΊΠΎΠ³ΠΎ управлСния доступом, позволяСт Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΈ прСдоставляСт Π°Π²Ρ‚ΠΎΡ€Π°ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ классов Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ.

β€’ Π—Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ Ρ‡Π»Π΅Π½Ρ‹ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ инкапсулированы, Ρ‡Π΅ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅.

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ 23: ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ функциям-Ρ‡Π»Π΅Π½Π°ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ Π½ΠΈ Ρ‡Π»Π΅Π½Π°ΠΌΠΈ, Π½ΠΈ Π΄Ρ€ΡƒΠ·ΡŒΡΠΌΠΈ класса

Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ класс для прСдставлСния Web-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°. Π’ числС ΠΏΡ€ΠΎΡ‡ΠΈΡ… Ρ‚Π°ΠΊΠΎΠΉ класс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‡ΠΈΡ‰Π°ΡŽΡ‚ кэш Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… элСмСнтов, ΠΎΡ‡ΠΈΡ‰Π°ΡŽΡ‚ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ посСщСнных URL ΠΈ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ ΠΈΠ· систСмы всС Β«ΠΊΡƒΠΊΠΈΒ» (cookies):


class WebBrowser {

public:

...

void clearCache();

void clearHistory();

void removeCookies();

...

};


Найдутся ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ захотят Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ всС эти дСйствия вмСстС, поэтому WebBrowser ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ для этой Ρ†Π΅Π»ΠΈ:


class WebBrowser {

public:

...

void clearEveryThing(); // Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ clearCache(), clearHistory()

// ΠΈ removeCookies()

...

};


ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, такая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ обСспСчСна Ρ‚Π°ΠΊΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰Π΅ΠΉΡΡ Ρ‡Π»Π΅Π½ΠΎΠΌ класса, которая Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ‡Π»Π΅Π½Ρ‹:


void clearBrowser(WebBrowser& wb)

{

wb.clearCache();

wb.clearHistory();

wb.removeCache();

}


Π§Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ – функция-Ρ‡Π»Π΅Π½ clearEverything ΠΈΠ»ΠΈ свободная функция clear-Browser?

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ проСктирования Π΄ΠΈΠΊΡ‚ΡƒΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ ΠΈΠΌΠΈ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ связаны вмСстС, ΠΈ это ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ функция-Ρ‡Π»Π΅Π½ – Π»ΡƒΡ‡ΡˆΠΈΠΉ Π²Ρ‹Π±ΠΎΡ€. К соТалСнию, это ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅Π²Π΅Ρ€Π½ΠΎ. Оно основано Π½Π° Π½Π΅ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉΒ». Π”Π°, Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ инкапсулированы, насколько Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎΠΌΡƒ Π²ΠΎΡΠΏΡ€ΠΈΡΡ‚ΠΈΡŽ функция-Ρ‡Π»Π΅Π½ clearEverything Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠ΅Π½Π΅Π΅ инкапсулирована, Ρ‡Π΅ΠΌ свободная функция clearBrowser. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, прСдоставлСниС свободной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ позволяСт ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Β«ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ΅Β» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ класса WebBrowser, Π° это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΌΡƒ числу зависимостСй Π½Π° этапС компиляции ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ возмоТности для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ класса. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ свободная функция Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ. Π’Π°ΠΆΠ½ΠΎ ΠΈΡ… ΠΎΡ‚Ρ‡Π΅Ρ‚Π»ΠΈΠ²ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ.

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

Рассмотрим Π΄Π°Π½Π½Ρ‹Π΅, ассоциированныС с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ. Π§Π΅ΠΌ мСньшС сущСствуСт ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΈΠ΄ΠΈΡ‚ эти Π΄Π°Π½Π½Ρ‹Π΅ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊ Π½ΠΈΠΌ доступ), Ρ‚Π΅ΠΌ Π² большСй стСпСни ΠΎΠ½ΠΈ инкапсулированы ΠΈ Ρ‚Π΅ΠΌ свободнСС ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… характСристики, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ количСство Ρ‡Π»Π΅Π½ΠΎΠ²-Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡ… Ρ‚ΠΈΠΏΡ‹ ΠΈ Ρ‚. ΠΏ. Π“Ρ€ΡƒΠ±ΠΎΠΉ ΠΎΡ†Π΅Π½ΠΊΠΎΠΉ объСм ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‡Π»Π΅Π½ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ число Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΊ Π½Π΅ΠΌΡƒ доступ: Ρ‡Π΅ΠΌ большС Ρ‚Π°ΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‚Π΅ΠΌ ΠΌΠ΅Π½Π΅Π΅ инкапсулированы Π΄Π°Π½Π½Ρ‹Π΅.

Π’ ΠΏΡ€Π°Π²ΠΈΠ»Π΅ 22 ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅-Ρ‡Π»Π΅Π½Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΊ Π½ΠΈΠΌ ΠΈΠΌΠ΅Π΅Ρ‚ доступ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ число Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Они Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ инкапсулированы. Для Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…-Ρ‡Π»Π΅Π½ΠΎΠ² количСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… доступ ΠΊ Π½ΠΈΠΌ, опрСдСляСтся количСством Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ-Ρ‡Π»Π΅Π½ΠΎΠ² класса плюс количСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ-Π΄Ρ€ΡƒΠ·Π΅ΠΉ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ доступ ΠΊ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ Ρ‡Π»Π΅Π½Π°ΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ функциям-Ρ‡Π»Π΅Π½Π°ΠΌ ΠΈ Π΄Ρ€ΡƒΠ·ΡŒΡΠΌ класса. Если Π΅ΡΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ-Ρ‡Π»Π΅Π½ΠΎΠΌ (которая ΠΈΠΌΠ΅Π΅Ρ‚ доступ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ класса, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊ Π΅Π³ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ функциям, пСрСчислСниям, опрСдСлСниям Ρ‚ΠΈΠΏΠΎΠ² (typedef) ΠΈ Ρ‚. ΠΏ.) ΠΈ свободной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰Π΅ΠΉΡΡ ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠΌ класса (Ρ‚Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ доступа Π½ΠΈ ΠΊ Ρ‡Π΅ΠΌΡƒ ΠΈΠ· Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ), Π½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚Ρƒ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Ρ‚ΠΎ Π½Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄: Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ обСспСчиваСт функция, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰Π°ΡΡΡ Π½ΠΈ Ρ‡Π»Π΅Π½ΠΎΠΌ, Π½ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π½Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ числа Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ сСкции класса. Π­Ρ‚ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚, ΠΏΠΎΡ‡Π΅ΠΌΡƒ clearBrowser (свободная функция) ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅, Ρ‡Π΅ΠΌ clearEverything (функция-Ρ‡Π»Π΅Π½).