ИспользованиС ΠΎΠΎΠΏ. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования

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

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

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

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

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

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

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

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

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

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

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

Класс (classes ) являСтся Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, опрСдСляСмых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. Π’ классС Π·Π°Π΄Π°ΡŽΡ‚ΡΡ свойства ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° ΠΈΠ»ΠΈ процСсса Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ»Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ.

БущСствСнным свойством класса являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Ρ‚Π°Π»ΠΈ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ скрыты ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ класса Π·Π° интСрфСйсом. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, класс ΠΊΠ°ΠΊ модСль ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π° являСтся Ρ‡Π΅Ρ€Π½Ρ‹ΠΌ ящиком, Π·Π°ΠΌΠΊΠ½ΡƒΡ‚Ρ‹ΠΌ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ ΠΌΠΈΡ€Ρƒ.

ИдСя классов являСтся основной ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования (ООП). ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ООП Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ Π΅Ρ‰Π΅ Π² языках Simula-67 ΠΈSmallTalk, Π½ΠΎ Π² Ρ‚ΠΎ врСмя Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ распространСния ΠΈΠ·-Π·Π° трудностСй освоСния ΠΈ Π½ΠΈΠ·ΠΊΠΎΠΉ эффСктивности Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… «класс» Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ экзСмплярами класса ΠΈΠ»ΠΈΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ (objects ) .

ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ класса, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ (methods ). Π’Ρ‹Π·ΠΎΠ²Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡΠΌΠΈ (messages ). Π’Π΅ΡΡŒ Π½Π°Π±ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° называСтся ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ сообщСний (messageprotocol), илиинтСрфСйсом сообщСний (message interface ) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π΄Π²Π΅ части: ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ послано, ΠΈ имя ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ дСйствиС Π½Π°Π΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, вычислСния Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ сообщСниями, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΌΠΈ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ.

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

ООП - это ΠΌΠ΅Ρ‚ΠΎΠ΄ программирования, Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ структурного программирования ΠΈ основанный Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… абстракциях Π΄Π°Π½Π½Ρ‹Ρ…:

I. Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ : объСдинСниС Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ ΠΈ функциями Π² Π΅Π΄ΠΈΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ поля ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°).

II. НаслСдованиС – ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ свойств ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΠΊΠ° ΠΊ ΠΏΠΎΡ‚ΠΎΠΌΠΊΡƒ, Π±Π΅Π· нСобходимости написания Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ экзСмпляров класса; ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΈ, ΠΏΡ€Π°Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ, иСрархия).

III. ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ – Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ измСнСния ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΏΠΎ смыслу свойств ΠΈ повСдСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² зависимости ΠΎΡ‚ ΠΈΡ… Ρ‚ΠΈΠΏΠ° (Π΅Π΄ΠΈΠ½ΠΎΠ΅ имя для Π½Π΅ΠΊΠΎΠ³ΠΎ дСйствия, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ осущСствляСтся для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ).

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

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

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

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

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

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

Класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСтся Ρ‡Π΅Ρ€Π΅Π· наслСдованиС ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса, называСтся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ классом (derived class ) , илиподклассом (subclass ) . Класс, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ производится Π½ΠΎΠ²Ρ‹ΠΉ класс, Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡΡ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ классом (parent class ) , илисупСрклассом (superclass ) .

Π’ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС класс наслСдуСт всС сущности (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹) Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса. Π­Ρ‚ΠΎ наслСдованиС ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒ, ввСдя ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ доступом ΠΊ сущностям Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса.

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

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

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

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

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

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

ВычислСния Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языках

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

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

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (Visual Component Library, VCL)

Delphi содСрТит большоС количСство классов, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для быстрой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° написана Π½Π° Object Pascal ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΏΠΎΡΡ€Π΅Π΄ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ связь с ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСдой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Delphi.

ВсС классы VCL располоТСны Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ ΠΈ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ Π΄Π΅Ρ€Π΅Π²ΠΎ (ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ) классов .

Π—Π½Π°Π½ΠΈΠ΅ происхоТдСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈ Π΅Π³ΠΎ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ наслСдуСт всС элСмСнты ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°-родитСля. Π’Π°ΠΊ, Ссли свойство Caption ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ классу TControl, Ρ‚ΠΎ это свойство Π±ΡƒΠ΄Π΅Ρ‚ ΠΈ Ρƒ Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρƒ классов TButton ΠΈ TCheckBox ΠΈ Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² - ΠΊΠ½ΠΎΠΏΠΊΠΈ Button ΠΈ нСзависимого ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ CheckBox соотвСтствСнно. Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ классов с ваТнСйшими классами ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° рис.

ΠšΡ€ΠΎΠΌΠ΅ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ классов, большим ΠΏΠΎΠ΄ΡΠΏΠΎΡ€ΡŒΠ΅ΠΌ Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ систСмы программирования ΡΠ²Π»ΡΡŽΡ‚ΡΡ исходныС тСксты ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находятся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ SOURCE Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Delphi.

ΠŸΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹β€…ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ

ΠžΠ±ΡŠΠ΅ΜΠΊΡ‚Π½ΠΎ-ориСнти́рованноС программи́рованиС (ООП) - мСтодология программирования, основанная Π½Π° прСдставлСнии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π²ΠΈΠ΄Π΅ совокупности ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² , ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… являСтся экзСмпляром ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ класса , Π° классы ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ наслСдования .

НСобходимо ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²Π°ΠΆΠ½Ρ‹Π΅ части этого опрСдСлСния: 1) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π² качСствС основных логичСских конструктивных элСмСнтов ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π° Π½Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹; 2) ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ являСтся экзСмпляром ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ класса; 3) классы ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° считаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ всС Ρ‚Ρ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… трСбования. Π’ частности, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π΅ наслСдованиС, называСтся Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ, Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ абстрактных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… .

Π­Π½Ρ†ΠΈΠΊΠ»ΠΎΠΏΠ΅Π΄ΠΈΡ‡Π½Ρ‹ΠΉ YouTube

    1 / 5

    βœͺ ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² 2019

    βœͺ ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ‡Π°ΡΡ‚ΡŒ 1 - ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ классы

    βœͺ ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ООП ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ?

    βœͺ ΠžΡΠ½ΠΎΠ²Ρ‹ ООП Π² C++

    βœͺ ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. ΠšΠ»Π°ΡΡΡ‹ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Π£Ρ€ΠΎΠΊ 3

    Π‘ΡƒΠ±Ρ‚ΠΈΡ‚Ρ€Ρ‹

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

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

ΠšΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ ΠΏΠΎΠ΄Π²ΠΈΠ΄ΠΎΠ² ООП

Π›ΡƒΠΊΠ° ΠšΠ°Ρ€Π΄Π΅Π»Π»ΠΈ ΠΈ ΠœΠ°Ρ€Ρ‚ΠΈΠ½ Абади построили тСорСтичСскоС обоснованиС ООП ΠΈ ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π½Π° основС этого обоснования . Они ΠΎΡ‚ΠΌΠ΅Ρ‡Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΈΠΌΠΈ понятия ΠΈ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ вмСстС Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π²ΠΎ всСх ОО-языках, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ языков ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ лишь подмноТСства Ρ‚Π΅ΠΎΡ€ΠΈΠΈ, Π° ΠΏΠΎΡ€ΠΎΠΉ ΠΈ своСобразныС отклонСния ΠΎΡ‚ Π½Π΅Ρ‘.

НаиболСС Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹Π΅ отличия Π² проявлСнии показатСлСй качСства ΠΌΠ΅ΠΆΠ΄Ρƒ языками Ρ€Π°Π·Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ²:

  • Π’ мСйнстримных языках Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Π½Π°Ρ†Π΅Π»Π΅Π½Ρ‹ Π½Π° ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ для импСративного программирования коэффициСнта ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎβ€…ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡβ€…ΠΊΠΎΠ΄Π° . Π’ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½ΠΎβ€…Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ ООП, Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠ΅ Π΅Π³ΠΎ сниТСниС ΠΈΠ·-Π·Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΎΡ‚ парамСтричСского полиморфизма ΠΊ ad hoc ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΡƒ . Π’ динамичСски типизированных языках (Smalltalk , Python , Ruby) эти ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для логичСской ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈ ΠΈΡ… влияниС Π½Π° коэффициСнт ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎβ€…ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΡΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ - ΠΎΠ½ сильно зависит ΠΎΡ‚ дисциплины программиста. НапримСр, Π² CLOS ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ функциями пСрвого класса , Ρ‡Ρ‚ΠΎ позволяСт Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ ΠΊΠ°ΠΊ связанно ΠΊΠ²Π°Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ , ΠΈ ΠΊΠ°ΠΊ ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Ρ‹Π΅ (истинно полиморфныС).
  • Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ОО-языки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π½ΠΎΠΌΠΈΠ½Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ , Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ соиспользования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ€Π°Π·Π½Ρ‹Ρ… классов Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ условии явного указания родствСнных ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ классами. Для ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½ΠΎβ€…Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языков Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Π° структурная типизация , Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ согласованиС классов ΠΌΠ΅ΠΆΠ΄Ρƒ собой Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ согласованиС числа 5 с Ρ‚ΠΈΠΏΠΎΠΌ int . ДинамичСски типизированныС языки Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ здСсь ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ.

ΠžΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½ΠΎΠ΅ обоснованиС динамичСской диспСтчСризации (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ) Π² сСрСдинС 1990-Ρ…β€…Π³ΠΎΠ΄ΠΎΠ² построил Π”ΠΆΡƒΠ·Π΅ΠΏΠΏΠ΅ ΠšΠ°ΡΡ‚Π°Π½ΡŒΡ .

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

ООП Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ развития ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΠΈ процСдурного программирования , Π³Π΄Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ) ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ связаны. Для дальнСйшСго развития ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования часто большоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ понятия события (Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ событийно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅β€…ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° (ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½ΠΎΠ΅β€…ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ , КОП).

ВзаимодСйствиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² происходит посрСдством . Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ дальнСйшСго развития ООП, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, Π±ΡƒΠ΄Π΅Ρ‚ Π°Π³Π΅Π½Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎΠ΅β€…ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ , Π³Π΄Π΅ Π°Π³Π΅Π½Ρ‚Ρ‹ - нСзависимыС части ΠΊΠΎΠ΄Π° Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ выполнСния. ВзаимодСйствиС Π°Π³Π΅Π½Ρ‚ΠΎΠ² происходит посрСдством измСнСния срСды , Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ΠΈ находятся.

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

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

Взгляд Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Β«ΠΏΠΎΠ΄ Π½ΠΎΠ²Ρ‹ΠΌ ΡƒΠ³Π»ΠΎΠΌΒ» (ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΡ‚ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ³ΠΎ) ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ ΠΠ»Π°Π½β€…ΠšΡΠΉ ΠΈ Дэн Ингаллс Π² языкС Smalltalk . Π—Π΄Π΅ΡΡŒ понятиС класса стало ΠΎΡΠ½ΠΎΠ²ΠΎΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΠ΄Π΅Π΅ΠΉ для всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… конструкций языка (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ класс Π² Π‘ΠΌΠΎΠ»Ρ‚ΠΎΠΊΠ΅ являСтся ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠΌ, посрСдством ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ описаны Π±ΠΎΠ»Π΅Π΅ слоТныС конструкции). ИмСнно ΠΎΠ½ стал ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΡˆΠΈΡ€ΠΎΠΊΠΎ распространённым ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ориСнтированным языком программирования .

Π’ настоящСС врСмя количСство ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Ρ… языков программирования (список языков), Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡƒ, являСтся наибольшим ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°ΠΌ. НаиболСС распространённыС Π² ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΡΡ‚ΠΈ языки (Π‘++, Delphi, C#, Java ΠΈ Π΄Ρ€.) Π²ΠΎΠΏΠ»ΠΎΡ‰Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ модСль Π‘ΠΈΠΌΡƒΠ»Ρ‹. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ языков, ΠΎΠΏΠΈΡ€Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π½Π° модСль Π‘ΠΌΠΎΠ»Ρ‚ΠΎΠΊΠ°, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Objective-C, Python, Ruby.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ориСнтируСтся Π½Π° описаниС структуры ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ систСмы (ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½ΠΎ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ описанию Π΅Ρ‘ повСдСния, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎβ€…ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, фактичСски, Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π½Π° Π΄Π²Π° основных вопроса:

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

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

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

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

Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ООП-ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ

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

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

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

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

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

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

Класс-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

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

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

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

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

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

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

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

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

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

  • Π‘Ρ‹Π»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ отсутствиС Π·Π½Π°Ρ‡ΠΈΠΌΠΎΠΉ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ Π² продуктивности Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΌΠ΅ΠΆΠ΄Ρƒ ООП ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ .
  • ΠšΡ€ΠΈΡΡ‚ΠΎΡ„Π΅Ρ€β€…Π”ΡΠΉΡ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сравнСния ООП ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΠΈΠ·-Π·Π° отсутствия строгого ΠΈ ΠΎΠ±Ρ‰Π΅ΠΏΡ€ΠΈΠ·Π½Π°Π½Π½ΠΎΠ³ΠΎ опрСдСлСния ООП .
  • АлСксандр БтСпанов Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· своих ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π», Ρ‡Ρ‚ΠΎ ООП «мСтодологичСски Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΒ» ΠΈ Ρ‡Ρ‚ΠΎ Β«β€¦ΠžΠžΠŸ практичСски такая ΠΆΠ΅ мистификация, ΠΊΠ°ΠΊ ΠΈ искусствСнный интСллСкт…» .
  • ЀрСдСрик Брукс ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ слоТной Ρ‡Π°ΡΡ‚ΡŒΡŽ создания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния являСтся «…спСцификация, Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΈ тСстированиС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… конструкций, Π° ΠΎΡ‚Π½ΡŽΠ΄ΡŒ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ этих ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… конструкций…». ООП (наряду с Ρ‚Π°ΠΊΠΈΠΌΠΈ тСхнологиями ΠΊΠ°ΠΊ искусствСнный интСллСкт , вСрификация ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, автоматичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, графичСскоС программированиС , экспСртныС систСмы ΠΈ Π΄Ρ€.), ΠΏΠΎ Π΅Π³ΠΎ мнСнию, Π½Π΅ являСтся «сСрСбряной ΠΏΡƒΠ»Π΅ΠΉΒ», которая ΠΌΠΎΠ³Π»Π° Π±Ρ‹ Π½Π° порядок Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… систСм. Богласно Бруксу, Β«β€¦ΠžΠžΠŸ позволяСт ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠ²Π½Π΅ΡΡ‘Π½Π½ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΈΠ·Π°ΠΉΠ½Π°. Π”ΠΈΠ·Π°ΠΉΠ½ остаётся слоТным ΠΏΠΎ своСй природС…» .
  • ЭдсгСр ДСйкстра ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»: «…то, ΠΎ Ρ‡Ρ‘ΠΌ общСство Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв просит - это эликсир ΠΎΡ‚ всСх Π±ΠΎΠ»Π΅Π·Π½Π΅ΠΉ. ЕстСствСнно, "эликсир" ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»ΡΡŽΡ‰ΠΈΠ΅ названия, ΠΈΠ½Π°Ρ‡Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΄Π°Ρ‚ΡŒ: β€žΠ‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΈ Π”ΠΈΠ·Π°ΠΉΠ½β€œ, β€žΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΡβ€œ, β€žΠœΠΎΠ΄Π΅Π»ΠΈ Π·Ρ€Π΅Π»ΠΎΡΡ‚ΠΈβ€œ, β€žΠ£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΡΠΈΡΡ‚Π΅ΠΌΡ‹β€œ (Management Information Systems), β€žΠ˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ срСды ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²β€œ, β€žΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒβ€œ, β€žΠ Π΅ΠΈΠ½ΠΆΠΈΠ½ΠΈΡ€ΠΈΠ½Π³β€…Π±ΠΈΠ·Π½Π΅Ρ-процСссов β€œβ€¦Β» .
  • Никлаус Вирт считаСт, Ρ‡Ρ‚ΠΎ ООП - Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Π°Ρ надстройка Π½Π°Π΄ структурным ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, ΠΈ ΠΏΡ€Π΅ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π΅Ρ‘ значимости, Π²Ρ‹Ρ€Π°ΠΆΠ°ΡŽΡ‰Π΅Π΅ΡΡ, Π² Ρ‚ΠΎΠΌ числС, Π²ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Π² языки программирования всё Π½ΠΎΠ²Ρ‹Ρ… ΠΌΠΎΠ΄Π½Ρ‹Ρ… Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ…Β» срСдств, Π²Ρ€Π΅Π΄ΠΈΡ‚ качСству Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.
  • ΠŸΠ°Ρ‚Ρ€ΠΈΠΊ КиллСлиа Π² своСй ΠΊΠ½ΠΈΠ³Π΅ «Вюнинг Π²Π΅Π±-сСрвСра» писал: Β«β€¦ΠžΠžΠŸ прСдоставляСт Π²Π°ΠΌ мноТСство способов Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π²Π°ΡˆΠΈΡ… программ…».
  • Π˜Π·Π²Π΅ΡΡ‚Π½Π°Ρ обзорная ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ соврСмСнного ООП-программирования пСрСчисляСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ООП [ ] .
  • Π’ программистском Ρ„ΠΎΠ»ΡŒΠΊΠ»ΠΎΡ€Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ распространСниС ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π² сравнСнии с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌβ€…ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ с использованиСм ΠΌΠ΅Ρ‚Π°Ρ„ΠΎΡ€Ρ‹ Β«ΠšΠΎΡ€ΠΎΠ»Π΅Π²ΡΡ‚Π²Π° Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Β» ΠΈΠ· эссС Π‘Ρ‚ΠΈΠ²Π° Π™Π΅Π³Π³ΠΈ .

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

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

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

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

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык (ООЯ) содСрТит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π½Π°Π±ΠΎΡ€ элСмСнтов:

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

НСкоторыС языки Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ ΠΊ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ Π½Π°Π±ΠΎΡ€Ρƒ Ρ‚Π΅ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ срСдства. Π’ ΠΈΡ… числС:

  • ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹, дСструкторы, Ρ„ΠΈΠ½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹;
  • Бвойства (аксСссоры);
  • Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ‚ΠΎΡ€Ρ‹;
  • БрСдства управлСния Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² классов (интСрфСйсы ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ доступа, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ public, private, protected, feature ΠΈ Π΄Ρ€.).

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

НавСрноС, Π² ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ вакансий(Ссли Π½Π΅ большС), трСбуСтся Π·Π½Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ООП. Π”Π°, эта мСтодология, ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ, ΠΏΠΎΠΊΠΎΡ€ΠΈΠ»Π° ΠΌΠ½ΠΎΠ³ΠΈΡ… программистов! ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ООП ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ с ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π³ΠΎΠ΄Π½Ρ‹Ρ… ΠΈ доступно ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ счСт практичСски Π½Π΅Ρ‚. А Ссли Π΄Π°ΠΆΠ΅ ΠΈ Π΅ΡΡ‚ΡŒ, Ρ‚ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Π½Π° Π½ΠΈΡ… наткнутся Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ. НадСюсь, Ρƒ мСня получится ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ этой Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΊΠ°ΠΊ говорится, Π½Π° ΠΏΠ°Π»ΡŒΡ†Π°Ρ….

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

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


Об ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… ΠΈ классах

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

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

Одним ΠΈΠ· самых распространСнных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языков программирования являСтся язык java. Π’Π°ΠΌ Π±Π΅Π· использования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² просто Π½Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΊΠΎΠ΄ класса, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ Π½Π° этом языкС:

/** * Класс Π’Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ. */ class Triangle { /** * Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ конструктор класса. * ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°: * Π΄Π»ΠΈΠ½Π° стороны А, Π΄Π»ΠΈΠ½Π° стороны Π‘, * ΡƒΠ³ΠΎΠ» ΠΌΠ΅ΠΆΠ΄Ρƒ этими сторонами(Π² градусах) */ Triangle(double sideA, double sideB, double angleAB) { this.sideA = sideA; this.sideB = sideB; this.angleAB = angleAB; } double sideA; //ПолС класса, Ρ…Ρ€Π°Π½ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ стороны А Π² описываСмом Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ΅ double sideB; //ПолС класса, Ρ…Ρ€Π°Π½ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ стороны Π‘ Π² описываСмом Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ΅ double angleAB; //ПолС класса, Ρ…Ρ€Π°Π½ΠΈΡ‚ ΡƒΠ³Π»Π°(Π² градусах) ΠΌΠ΅ΠΆΠ΄Ρƒ двумя сторонами Π² описываСмом Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ΅ /** * ΠœΠ΅Ρ‚ΠΎΠ΄ класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ рассчитываСт ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° */ double getSquare() { double square = this.sideA * this.sideB * Math.sin(this.angleAB * Math.PI / 180); return square; } /** * ΠœΠ΅Ρ‚ΠΎΠ΄ класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ рассчитываСт ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° */ double getPerimeter() { double sideC = Math.sqrt(Math.pow(this.sideA, 2) + Math.pow(this.sideB, 2) - 2 * this.sideA * this.sideB * Math.cos(this.angleAB * Math.PI / 180)); double perimeter = this.sideA + this.sideB + sideC; return perimeter; } }

Если ΠΌΡ‹ Π²Π½ΡƒΡ‚Ρ€ΡŒ класса Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

/** * ИмСнно Π² этом мСстС запускаСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° */ public static void main(String args) { //ЗначСния 5, 17, 35 ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² конструктор класса Triangle Triangle triangle1 = new Triangle(5, 17, 35); System.out.println("ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°1: "+triangle1.getSquare()); System.out.println("ΠŸΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°1: "+triangle1.getPerimeter()); //ЗначСния 6, 8, 60 ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² конструктор класса Triangle Triangle triangle2 = new Triangle(6, 8, 60); System.out.println("ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°1: "+triangle2.getSquare()); System.out.println("ΠŸΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°1: "+triangle2.getPerimeter()); }

Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ языка java. Если Π² классС Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄

Public static void main(String args)

Ρ‚ΠΎ этот класс ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ. Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅. НачнСм со строки

Triangle triangle1 = new Triangle(5, 17, 35);

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ создаСм экзСмпляр triangle1 класса Triangle ΠΈ Ρ‚ΡƒΡ‚ ΠΆΠ΅ Π·Π°Π΄Π°Π΅ΠΌ Π΅ΠΌΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ сторон ΠΈ ΡƒΠ³Π»Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ. ΠŸΡ€ΠΈ этом, вызываСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ конструктор ΠΈ заполняСт поля ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΌΠΈ значСниями Π² конструктор. Ну, Π° строки

System.out.println("ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°1: "+triangle1.getSquare()); System.out.println("ΠŸΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°1: "+triangle1.getPerimeter());

выводят рассчитанныС ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° ΠΈ Π΅Π³ΠΎ ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€ Π² консоль.

Аналогично всС происходит ΠΈ для Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ экзСмпляра класса Triangle .

ПониманиС сути классов ΠΈ конструирования ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² - это ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ шаг ΠΊ пониманию ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ ООП.

Π•Ρ‰Π΅ Ρ€Π°Π·, самоС Π²Π°ΠΆΠ½ΠΎΠ΅:

ООП - это способ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹;

Класс - это ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ структура Π΄Π°Π½Π½Ρ‹Ρ…, которая Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ(поля класса ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса);

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ - это ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ экзСмпляр класса, полям ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½Ρ‹ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ значСния.


Π’Ρ€ΠΈ Π²ΠΎΠ»ΡˆΠ΅Π±Π½Ρ‹Ρ… слова

ООП Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ‚Ρ€ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°: наслСдованиС, ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ. Для Π½Π°Ρ‡Π°Π»Π°, ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ опрСдСлСния ΠΈΠ· wikipedia :

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ - свойство систСмы, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ с Π½ΠΈΠΌΠΈ, Π² классС. НСкоторыС языки (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π‘++) ΠΎΡ‚ΠΎΠΆΠ΄Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ с сокрытиСм, Π½ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ (Smalltalk, Eiffel, OCaml) Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ эти понятия.

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

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

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


Π˜Ρ‚Π°ΠΊ, Ρ‚ΠΎΡ‡ΠΊΠ° - это самая малая гСомСтричСская Ρ„ΠΈΠ³ΡƒΡ€Π°, которая являСтся основой всСх ΠΏΡ€ΠΎΡ‡ΠΈΡ… построСний (Ρ„ΠΈΠ³ΡƒΡ€). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ‹Π±Ρ€Π°Π½Π° Π² качСствС Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса. НапишСм класс Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° java:

/** * Класс Ρ‚ΠΎΡ‡ΠΊΠΈ. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ класс */ class Point { /** * ΠŸΡƒΡΡ‚ΠΎΠΉ конструктор */ Point() {} /** * ΠœΠ΅Ρ‚ΠΎΠ΄ класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ рассчитываСт ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ */ double getSquare() { return 0; } /** * ΠœΠ΅Ρ‚ΠΎΠ΄ класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ рассчитываСт ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ */ double getPerimeter() { return 0; } /** * ΠœΠ΅Ρ‚ΠΎΠ΄ класса, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉ описаниС Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ */ String getDescription() { return "Π’ΠΎΡ‡ΠΊΠ°"; } }

Π£ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ΅Π³ΠΎΡΡ класса Point пустой конструктор, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π±Π΅Π· ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚, Π° ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ значСниями сторон. Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… сторон, Ρ‚ΠΎ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΅ΠΉ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π½Π΅ Π½Π°Π΄ΠΎ. Π’Π°ΠΊΠΆΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ класс ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Point::getSquare() ΠΈ Point::getPerimeter() для расчСта ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ ΠΈ ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€Π°, ΠΎΠ±Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ 0. Для Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΎΠ½ΠΎ ΠΈ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ.


ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρƒ нас Ρ‚ΠΎΡ‡ΠΊΠ° являСтся основой всСх ΠΏΡ€ΠΎΡ‡ΠΈΡ… Ρ„ΠΈΠ³ΡƒΡ€, Ρ‚ΠΎ ΠΈ классы этих ΠΏΡ€ΠΎΡ‡ΠΈΡ… Ρ„ΠΈΠ³ΡƒΡ€ ΠΌΡ‹ наслСдуСм ΠΎΡ‚ класса Point . ОпишСм класс ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ°, наслСдуСмого ΠΎΡ‚ класса Ρ‚ΠΎΡ‡ΠΊΠΈ:

/** * Класс ΠžΡ‚Ρ€Π΅Π·ΠΎΠΊ */ class LineSegment extends Point { LineSegment(double segmentLength) { this.segmentLength = segmentLength; } double segmentLength; // Π”Π»ΠΈΠ½Π° ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° /** * ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ рассчитываСт ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° */ double getSquare() { return 0; } /** * ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ рассчитываСт ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° */ double getPerimeter() { return this.segmentLength; } String getDescription() { return "ΠžΡ‚Ρ€Π΅Π·ΠΎΠΊ Π΄Π»ΠΈΠ½ΠΎΠΉ: " + this.segmentLength; } }

Class LineSegment extends Point

ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ класс LineSegment наслСдуСтся ΠΎΡ‚ класса Point . ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ LineSegment::getSquare() ΠΈ LineSegment::getPerimeter() ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса. ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° всСгда равняСтся Π½ΡƒΠ»ΡŽ, Π° ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€Π° равняСтся Π΄Π»ΠΈΠ½Π΅ этого ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ°.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ классу ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ°, опишСм класс Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°(ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ наслСдуСтся ΠΎΡ‚ класса Ρ‚ΠΎΡ‡ΠΊΠΈ):

/** * Класс Π’Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ. */ class Triangle extends Point { /** * ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ класса. ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°: * Π΄Π»ΠΈΠ½Π° стороны А, Π΄Π»ΠΈΠ½Π° стороны Π‘, * ΡƒΠ³ΠΎΠ» ΠΌΠ΅ΠΆΠ΄Ρƒ этими сторонами(Π² градусах) */ Triangle(double sideA, double sideB, double angleAB) { this.sideA = sideA; this.sideB = sideB; this.angleAB = angleAB; } double sideA; //ПолС класса, Ρ…Ρ€Π°Π½ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ стороны А Π² описываСмом Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ΅ double sideB; //ПолС класса, Ρ…Ρ€Π°Π½ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ стороны Π‘ Π² описываСмом Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ΅ double angleAB; //ПолС класса, Ρ…Ρ€Π°Π½ΠΈΡ‚ ΡƒΠ³Π»Π°(Π² градусах) ΠΌΠ΅ΠΆΠ΄Ρƒ двумя сторонами Π² описываСмом Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ΅ /** * ΠœΠ΅Ρ‚ΠΎΠ΄ класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ рассчитываСт ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° */ double getSquare() { double square = (this.sideA * this.sideB * Math.sin(this.angleAB * Math.PI / 180))/2; return square; } /** * ΠœΠ΅Ρ‚ΠΎΠ΄ класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ рассчитываСт ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° */ double getPerimeter() { double sideC = Math.sqrt(Math.pow(this.sideA, 2) + Math.pow(this.sideB, 2) - 2 * this.sideA * this.sideB * Math.cos(this.angleAB * Math.PI / 180)); double perimeter = this.sideA + this.sideB + sideC; return perimeter; } String getDescription() { return "Π’Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ со сторонами: " + this.sideA + ", " + this.sideB + " ΠΈ ΡƒΠ³Π»ΠΎΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ: " + this.angleAB; } }

Π’ΡƒΡ‚ Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ. Π’Π°ΠΊΠΆΠ΅, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Triangle::getSquare() ΠΈ Triangle::getPerimeter() ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса.
Ну Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, собствСнно, Ρ‚ΠΎΡ‚ самый ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π²ΠΎΠ»ΡˆΠ΅Π±ΡΡ‚Π²ΠΎ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€ΠΈΡ„Π·ΠΌΠ° ΠΈ раскрываСт ΠΌΠΎΡ‰ΡŒ ООП:

Class Main { /** * ИмСнно Π² этом мСстС запускаСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° */ public static void main(String args) { //ArrayList - Π­Ρ‚ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ структура Π΄Π°Π½Π½Ρ‹Ρ… Π² java, // ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π² массивС. ArrayList figures = new ArrayList(); //добавляСм Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² массив figures figures.add(new Point()); figures.add(new LineSegment(133)); figures.add(new Triangle(10, 17, 55)); for (int i = 0; i

ΠœΡ‹ создали массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² класса Point , Π° ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ классы LineSegment ΠΈ Triangle Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚ класса Point , Ρ‚ΠΎ ΠΈ ΠΈΡ… ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π² этот массив. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ, которая Π΅ΡΡ‚ΡŒ Π² массивС figures ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Point . Π’ этом ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ: нСизвСстно, ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ классу ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ находящиСся Π² массивС figures ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π½ΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ этого массива ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π±Π°Π·ΠΎΠ²ΠΎΠΌΡƒ классу Point , Ρ‚ΠΎ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ ΠΊ классу Point Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ ΠΊ Π΅Π³ΠΎ классам-наслСдникам.


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


ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

Import java.util.ArrayList; class Main { /** * ИмСнно Π² этом мСстС запускаСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° */ public static void main(String args) { //ArrayList - Π­Ρ‚ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ структура Π΄Π°Π½Π½Ρ‹Ρ… Π² java, // ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π² массивС. ArrayList figures = new ArrayList(); //добавляСм Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² массив figures figures.add(new Point()); figures.add(new LineSegment(133)); figures.add(new Triangle(10, 17, 55)); for (int i = 0; i


2. Π”Π°ΠΉΡ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ½ΡΡ‚ΠΈΡŽ β€œΠΊΠ»Π°ΡΡβ€.
3. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ»Π΅/Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ класса?
4. Как ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ доступ ΠΊ полям класса?
5. Π”Π°ΠΉΡ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ½ΡΡ‚ΠΈΡŽ β€œΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€β€.
6. Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ конструкторы ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, копирования ΠΈ конструктор с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ?
7. КакиС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ уровня доступа Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, расскаТитС ΠΏΡ€ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ….
8. РасскаТитС ΠΎΠ± особСнностях класса с СдинствСнным Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ (private) конструктором.
9. О Ρ‡Π΅ΠΌ говорят ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова β€œthis”, β€œsuper”, Π³Π΄Π΅ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?
10. Π”Π°ΠΉΡ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ½ΡΡ‚ΠΈΡŽ β€œΠΌΠ΅Ρ‚ΠΎΠ΄β€.
11. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сигнатура ΠΌΠ΅Ρ‚ΠΎΠ΄Π°?
12. КакиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ?
13. ΠœΠΎΠ³ΡƒΡ‚ Π»ΠΈ нСстатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ статичСскиС?
14. РасскаТитС ΠΏΡ€ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².
15. ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠ΅ количСство ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² (Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹)?
16. МоТно Π»ΠΈ ΡΡƒΠ·ΠΈΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ доступа/Ρ‚ΠΈΠΏ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°?
17. Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса?
18. КакиС прСобразования Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ нисходящими ΠΈ восходящими?
19. Π§Π΅ΠΌ отличаСтся ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ?
20. Π“Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ статичСскиС/нСстатичСскиС поля?

21. Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ instanceof?
22. Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π±Ρ‹Π²Π°ΡŽΡ‚ Π±Π»ΠΎΠΊΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ?
23. Каков порядок Π²Ρ‹Π·ΠΎΠ²Π° конструкторов ΠΈ Π±Π»ΠΎΠΊΠΎΠ² ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π²ΡƒΡ… классов: ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ° ΠΈ Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠ°?
24. Π“Π΄Π΅ ΠΈ для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ abstract?
25. МоТно Π»ΠΈ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ абстрактным ΠΈ статичСским ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ?
26. Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово static?
27. К ΠΊΠ°ΠΊΠΈΠΌ конструкциям Java ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ static?
28. Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли Π² static Π±Π»ΠΎΠΊΠ΅ ΠΊΠΎΠ΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ситуация?
29. МоТно Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ static ΠΌΠ΅Ρ‚ΠΎΠ΄?
30. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ статичСский класс, ΠΊΠ°ΠΊΠΈΠ΅ особСнности Π΅Π³ΠΎ использования?
31. КакиС особСнности ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ final static ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…?
32. Как влияСт ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ static Π½Π° класс/ΠΌΠ΅Ρ‚ΠΎΠ΄/ΠΏΠΎΠ»Π΅?
33. О Ρ‡Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово final?
34. Π”Π°ΠΉΡ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ½ΡΡ‚ΠΈΡŽ β€œΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡβ€.
35. КакиС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠΌΠ΅ΡŽΡ‚ поля ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ интСрфСйсов?
36. ΠŸΠΎΡ‡Π΅ΠΌΡƒ нСльзя ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ интСрфСйса с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ final ΠΈΠ»ΠΈ static?
37. КакиС Ρ‚ΠΈΠΏΡ‹ классов Π±Ρ‹Π²Π°ΡŽΡ‚ Π² java (влоТСнныС… ΠΈ.Ρ‚.Π΄.)
38. КакиС особСнности создания Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… классов: простых ΠΈ статичСских.
39. Π§Ρ‚ΠΎ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… классах, Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ? ΠšΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ, Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования, ΠΎ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠΈ инкапсуляции.
40. Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… классов?
41. КакиС классы Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΌΠΈ?
42. Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠ· Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ класса ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ полю внСшнСго класса?

43. Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠ· Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса, объявлСнного Π² Ρ‚Π΅Π»Π΅ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°? Π•ΡΡ‚ΡŒ Π»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ограничСния для Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ?
44. Как связан любой ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс с классом Object?
45. РасскаТитС ΠΏΡ€ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса Object.
46. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ equals(). Π§Π΅ΠΌ ΠΎΠ½ отличаСтся ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ==.
47. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ equals(), ΠΊΠ°ΠΊΠΈΠ΅ условия Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒΡΡ для ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°?
48. Если equals() ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, Π΅ΡΡ‚ΡŒ Π»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ?
49. Π’ Ρ‡Π΅ΠΌ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² hashCode ΠΈ equals? Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ hashCode ΠΈ equals Π² классС Object? КакиС ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈ соглашСния ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этих ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²? Когда ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ?
50. Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строковоС прСдставлСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°?
51. Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ equals Π½Π΅ пСрСопрСдСляя hashCode? КакиС ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹?
52. Π•ΡΡ‚ΡŒ Π»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ поля слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ подсчСтС hashCode?
53. Как Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, Π±ΡƒΠ΄ΡƒΡ‚ Π»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Ссли Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС ΠΊΠ»ΡŽΡ‡Π° Π² hashMap измСнится ΠΏΠΎΠ»Π΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ участвуСт Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ hashCode?
54. Π§Π΅ΠΌ отличаСтся абстрактный класс ΠΎΡ‚ интСрфСйса, Π² ΠΊΠ°ΠΊΠΈΡ… случаях Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?
55. МоТно Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ private ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ класса ΠΈ Ссли Π΄Π°, Ρ‚ΠΎ ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ?
56. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ volatile ΠΈ transient? Для Ρ‡Π΅Π³ΠΎ ΠΈ Π² ΠΊΠ°ΠΊΠΈΡ… случаях ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ default?
57. Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΏΡ€ΠΈ наслСдовании, ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ сокрытиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Если Ρƒ класса-родитСля Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠ°ΠΊ private, ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈ наслСдник Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ? А Ссли protected? А ΡΡƒΠ·ΠΈΡ‚ΡŒ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ?
58. Π˜ΠΌΠ΅Π΅Ρ‚ Π»ΠΈ смысл ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ private final?
59. КакиС особСнности ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ final ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…?
60. Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли СдинствСнный конструктор класса объявлСн ΠΊΠ°ΠΊ final?
61. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ finalize? Π—Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½? Π§Ρ‚ΠΎ Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎ сборщикС мусора ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ… Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹.
62. ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ clone объявлСн ΠΊΠ°ΠΊ protected? Π§Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ клонирования?

ΠžΡ‚Π²Π΅Ρ‚Ρ‹. Π§Π°ΡΡ‚ΡŒ 1

1. НазовитС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ООП ΠΈ расскаТитС ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ.

ΠžΠ±ΡŠΠ΅ΜΠΊΡ‚Π½ΠΎ-ориСнти́рованноС программи́рованиС (ООП) - это мСтодология программирования, основанная Π½Π° прСдставлСнии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π²ΠΈΠ΄Π΅ совокупности ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… являСтся экзСмпляром ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ класса, Π° классы ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ наслСдования.

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

Абстракция β€” ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡ΠΈΠΌΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· рассмотрСния Π½Π΅Π·Π½Π°Ρ‡ΠΈΠΌΠΎΠΉ. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния программирования это ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Абстракция позволяСт ΠΎΡ‚ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π³Π»Π°Π²Π½Ρ‹Π΅ характСристики ΠΈ ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ второстСпСнныС.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: описаниС долТностСй Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. Π—Π΄Π΅ΡΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ долТности значимая информация, Π° описаниС обязанностСй Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ долТности это второстСпСнная информация. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ Π³Π»Π°Π²Π½ΠΎΠΉ характСристикой для Β«Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€Β» Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ это Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ управляСт, Π° Ρ‡Π΅ΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ (Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ ΠΏΠΎ пСрсоналу, финансовый Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€, ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€) это ΡƒΠΆΠ΅ второстСпСнная информация.

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ β€” свойство систСмы, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ с Π½ΠΈΠΌΠΈ, Π² классС. Для Java ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ инкапсуляция это «сокрытиС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈΒ». ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· ΠΆΠΈΠ·Π½ΠΈ β€” ΠΏΡƒΠ»ΡŒΡ‚ ΠΎΡ‚ Ρ‚Π΅Π»Π΅Π²ΠΈΠ·ΠΎΡ€Π°. ΠœΡ‹ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΎΡ‡ΠΊΡƒ Β«ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π³Ρ€ΠΎΠΌΠΊΠΎΡΡ‚ΡŒΒ» ΠΈ ΠΎΠ½Π° увСличиваСтся, Π½ΠΎ Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ происходят дСсятки процСссов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ скрыты ΠΎΡ‚ нас. Для Java: ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ класс с 10 ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ слоТной Ρ„ΠΈΠ³ΡƒΡ€Ρ‹, Π½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ· Π½ΠΈΡ… 9 private. 10ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Β«Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ()Β» ΠΈ объявлСн public, Π° Π² Π½Π΅ΠΌ ΡƒΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ скрытыС ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. ИмСнно Π΅Π³ΠΎ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ.

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

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ β€” свойство систСмы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ интСрфСйсом Π±Π΅Π· ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΈΠΏΠ΅ ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ структурС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ (Ρ‡ΡƒΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Π°Π½Π½Ρ‹ΠΉ) ΠΈΠ· Thinking in Java:

public interface Shape { void draw(); void erase(); } public class Circle implements Shape { public void draw() { System.out.println("Circle.draw()"); } } public class Triangle implements Shape { public void draw() { System.out.println("Triangle.draw()"); } } public class TestPol { public static void main(String args) { Shape shape1 = new Circle(); Shape shape2 = new Triangle(); testPoly(shape1); testPoly(shape2); } public static void testPoly(Shape shape) { shape.draw(); } } //Π’Ρ‹Π²ΠΎΠ΄ Π² консоль: //Circle.draw() //Triangle.draw()

public interface Shape {

void draw () ;

void erase () ;

public void draw () {

System . out . println ("Circle.draw()" ) ;

public class Triangle implements Shape {

public void draw () {

System . out . println ("Triangle.draw()" ) ;

public class TestPol {

Shape shape1 = new Circle () ;

Shape shape2 = new Triangle () ;

testPoly (shape1 ) ;

testPoly (shape2 ) ;

public static void testPoly (Shape shape ) {

shape . draw () ;

//Π’Ρ‹Π²ΠΎΠ΄ Π² консоль:

//Circle.draw()

//Triangle.draw()

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

Если Π±Ρ‹ Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° ΠΈ ΠΏΠΎΠ·Π΄Π½Π΅Π³ΠΎ связывания, Ρ‚ΠΎ эта ΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выглядСла Π±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

public static void testPolyCircle(Circle circle) { circle.draw(); } public static void testPolyTriangle(Triangle triangle) { triangle.draw(); }

public static void testPolyCircle (Circle circle ) {

circle . draw () ;

public static void testPolyTriangle (Triangle triangle ) {

triangle . draw () ;

Π’.Π΅. для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ класса (Ρ„ΠΈΠ³ΡƒΡ€Ρ‹) ΠΌΡ‹ Π±Ρ‹ писали ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄. Π—Π΄Π΅ΡΡŒ ΠΈΡ… Π΄Π²Π°, Π° Ссли Ρ„ΠΈΠ³ΡƒΡ€ (классов) сотни?

2. Π”Π°ΠΉΡ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ½ΡΡ‚ΠΈΡŽ β€œΠΊΠ»Π°ΡΡβ€.

Класс – это ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ ΠΎΠ±Ρ‰ΠΈΡ… свойств Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π­Ρ‚ΠΈΠΌΠΈ свойствами ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ характСристики ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (Ρ€Π°Π·ΠΌΠ΅Ρ€, вСс, Ρ†Π²Π΅Ρ‚ ΠΈ Ρ‚.ΠΏ.), Ρ‚Π°ΠΊ ΠΈ повСдСния, Ρ€ΠΎΠ»ΠΈ ΠΈ Ρ‚.ΠΏ.

3. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ»Π΅/Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ класса?

ПолС (Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚) класса β€” это характСристика ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. НапримСр для Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ, ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€.

public class Circle implements Shape { private String name; private Double area; private String perimeter; }

public class Circle implements Shape {

private String name ;

private Double area ;

private String perimeter ;

4. Как ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ доступ ΠΊ полям класса?

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ доступа β€” private. Доступ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ get\set.

5. Π”Π°ΠΉΡ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ½ΡΡ‚ΠΈΡŽ β€œΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€β€.

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

public class Circle implements Shape { public Circle() { } }

public class Circle implements Shape {

public Circle () {

6. Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ конструкторы ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, копирования ΠΈ конструктор с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ?

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ копирования ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»Π΅ΠΉ класса).

//конструктор ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ public Circle() { } //конструктор копирования public Circle(Circle circle) { this(circle.getName(), circle.getArea(), circle.getPerimeter()); //Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ конструктор с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Π½ΠΈΠΆΠ΅ } //конструктор с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ public Circle(String name, Double area, String perimeter) { this.name = name; this.area = area; this.perimeter = perimeter; }

//конструктор ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

public Circle () {

//конструктор копирования

public Circle (Circle circle ) {

this (circle . getName () , circle . getArea () , circle . getPerimeter () ) ; //Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ конструктор с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Π½ΠΈΠΆΠ΅

//конструктор с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ

public Circle (String name , Double area , String perimeter ) {

this . name = name ;

this . area = area ;

this . perimeter = perimeter ;

ΠžΠ±Ρ€Π°Ρ‰Π°ΡŽ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΌΠ° копирования (clone()) достаточно глубокая с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ возникновСния мноТСства нСявных ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. НСмного ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ здСсь http://habrahabr.ru/post/246993/.

7. КакиС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ уровня доступа Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, расскаТитС ΠΏΡ€ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ….

  • private (Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ) β€” доступ ΠΊ Ρ‡Π»Π΅Π½Ρƒ класса Π½Π΅ прСдоставляСтся Π½ΠΈΠΊΠΎΠΌΡƒ, ΠΊΡ€ΠΎΠΌΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² этого класса. Π”Ρ€ΡƒΠ³ΠΈΠ΅ классы Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ private-Ρ‡Π»Π΅Π½Π°ΠΌ.
  • default, package, friendly, доступ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π΅ присутствуСт β€” Ρ‡Π»Π΅Π½ класса считаСтся ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ своСго собствСнного ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π½ΠΎ Π½Π΅ доступСн для ΠΊΠΎΠ΄Π°, располоТСнного Π²Π½Π΅ этого ΠΏΠ°ΠΊΠ΅Ρ‚Π°.Π’.Π΅. Ссли package2.Class2 extends package1.MainClass , Ρ‚ΠΎ Π² Class2 ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π±Π΅Π· ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΈΠ· MainClass Π²ΠΈΠ΄Π½Ρ‹ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ .
  • protected (Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹ΠΉ) β€” доступ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈ классов наслСдников. Доступ Π² классС ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ public ΠΈ protected Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ класса. Π’.Π΅. Ссли package2.Class2 extends package1.MainClass , Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ package2.Class2 ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ protected ΠΈΠ· MainClass Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΈΠ΄Π½Ρ‹.
  • public (ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ) β€” доступ для всСх ΠΈΠ· любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π² спискС располоТСны ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°ΡŽΡ‰Π΅ΠΉ видимости Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

8. РасскаТитС ΠΎΠ± особСнностях класса с СдинствСнным Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ (private) конструктором.

НСвозмоТно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ СдинствСнный private конструктор Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ класса. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ нСльзя ΡƒΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ класса. ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΡƒΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ошибка: There is no default constructor available in имяКласса . А ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ этого класса: ИмяКласса() has private access in ИмяКласса

9. О Ρ‡Π΅ΠΌ говорят ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова β€œthis”, β€œsuper”, Π³Π΄Π΅ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?

super β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для обращСния ΠΊ Π±Π°Π·ΠΎΠ²ΠΎΠΌΡƒ классу, Π° this ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

public class Animal { public void eat() { System.out.println("animal eat"); } } public class Dog extends Animal { public void eat() { System.out.println("Dog eat"); } public void thisEat() { System.out.println("Call Dog.eat()"); this.eat(); } public void superEat() { System.out.println("Call Animal.eat()"); super.eat(); } } public class Test { public static void main(String args) { Dog dog = new Dog(); dog.eat(); dog.thisEat(); dog.superEat(); } } Dog eat Call Dog.eat() Dog eat Call Animal.eat() animal eat

public class Animal {

public void eat () {

System . out . println ("animal eat" ) ;

public class Dog extends Animal {

public void eat () {

System . out . println ("Dog eat" ) ;

public void thisEat () {

System . out . println ("Call Dog.eat()" ) ;

this . eat () ;

public void superEat () {

System . out . println ("Call Animal.eat()" ) ;

super . eat () ;

public class Test {

public static void main (String args ) {

Dog dog = new Dog () ;

dog . eat () ;

dog . thisEat () ;

dog . superEat () ;

Dog eat

Call Dog . eat ()

Dog eat

Call Animal . eat ()

animal eat

Если Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ super(), Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ конструктор Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, Π° Ссли this(), Ρ‚ΠΎ конструктор Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ класса. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ конструктора с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ:

public Dog() { System.out.println("Call empty constructor"); } public Dog(String name) { System.out.println("Call constructor with Name"); this.name = name; } public Dog(String name, Double weight) { this(name); this.weight = weight; System.out.println("Call constructor with Name and Weight"); } } .. public static void main(String args) { Dog dog1 = new Dog("name", 25.0); } //Π’Ρ‹Π²ΠΎΠ΄ Call constructor with Name Call constructor with Name and Weight

public Dog () {

System . out . println ("Call empty constructor" ) ;

public Dog (String name ) {

System . out . println ("Call constructor with Name" ) ;

this . name = name ;

public Dog (String name , Double weight ) {

this (name ) ;

this . weight = weight ;

System . out . println ("Call constructor with Name and Weight" ) ;

public static void main (String args ) {

Dog dog1 = new Dog ("name" , 25.0 ) ;

//Π’Ρ‹Π²ΠΎΠ΄

Call constructor with Name

Call constructor with Name and Weight

10. Π”Π°ΠΉΡ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ½ΡΡ‚ΠΈΡŽ β€œΠΌΠ΅Ρ‚ΠΎΠ΄β€.

ΠœΠ΅Ρ‚ΠΎΠ΄ β€” это ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ ΠΈΠΌΠ΅Π½ΠΈ. МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это функция ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° (Π² случаС void ΠΌΠ΅Ρ‚ΠΎΠ΄Π°).

11. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сигнатура ΠΌΠ΅Ρ‚ΠΎΠ΄Π°?

Π‘ΠΈΠ³Π½Π°Ρ‚ΡƒΡ€Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² Java - это имя ΠΌΠ΅Ρ‚ΠΎΠ΄Π° плюс ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ (ΠΏΡ€ΠΈΡ‡Π΅ΠΌ порядок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅).
Π’ сигнатуру ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, бросаСмыС ΠΈΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова public, protected, private, abstract, static, final, synchronized, native, strictfp Π² Ρ‚.Ρ‡. Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° - это ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΈ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ сигнатуры.

http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.4.2

12. КакиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ?

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

public void method() { } public void method(int a) { } public void method(String str) { }

public void method () { }

public void method (int a ) { }