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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «ПолноС руководство. Π‘# 4.0Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 4

Автор Π¨ΠΈΠ»Π΄Ρ‚ Π“Π΅Ρ€Π±Π΅Ρ€Ρ‚

Помимо псСвдокода MSIL, ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π‘# ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡΡ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слуТат для описания Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅,Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ простоС взаимодСйствиС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° с Π΄Ρ€ΡƒΠ³ΠΈΠΌ. ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ содСрТатся Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ Ρ„Π°ΠΉΠ»Π΅, Ρ‡Ρ‚ΠΎ ΠΈ псСвдокод MSIL.УправляСмый ΠΈ нСуправляСмый ΠΊΠΎΠ΄

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

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ управляСмого ΠΊΠΎΠ΄Π°, нСуправляСмый ΠΊΠΎΠ΄ Π½Π΅ выполняСтся Π² срСдС CLR.Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π΄ΠΎ появлСния срСды .NET Framework Π²ΠΎ всСх ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… для WindowsпримСнялся нСуправляСмый ΠΊΠΎΠ΄. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, управляСмый ΠΈ нСуправляСмый ΠΊΠΎΠ΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ управляСмого ΠΊΠΎΠ΄Π° Π² Π‘#совсСм Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π° Π΅Π³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ взаимодСйствия с ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ограничСния.ΠžΠ±Ρ‰Π΅ΡΠ·Ρ‹ΠΊΠΎΠ²Π°Ρ спСцификация

НСсмотря Π½Π° всС прСимущСства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ срСда CLR Π΄Π°Π΅Ρ‚ управляСмому ΠΊΠΎΠ΄Ρƒ,для максимального удобства Π΅Π³ΠΎ использования вмСстС с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, написанными Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ подчинятся общСязыковой спСцификации (CommonLanguage Specification β€” CLS), которая опрСдСляСт ряд ΠΎΠ±Ρ‰ΠΈΡ… свойств для Ρ€Π°Π·Π½Ρ‹Ρ….NET-совмСстимых языков. БоотвСтствиС CLS особСнно Π²Π°ΠΆΠ½ΠΎ ΠΏΡ€ΠΈ создании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для примСнСния Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках. Π’ CLS Π² качСствСподмноТСства Π²Ρ…ΠΎΠ΄ΠΈΡ‚ общая систСма Ρ‚ΠΈΠΏΠΎΠ² (Common Type System β€” CTS), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. И разумССтся, Π² C# поддСрТиваСтсякак CLS, Ρ‚Π°ΠΊ ΠΈ CTS.

ГЛАВА 2. ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ элСмСнтов C

НаибольшиС трудности Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ языка программирования Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎ ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΅Π³ΠΎ элСмСнтов Π½Π΅ сущСствуСт обособлСнно.Напротив, всС элСмСнты языка Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ совмСстно. Π’Π°ΠΊΠ°ΡΠ²Π·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ затрудняСт рассмотрСниС ΠΎΠ΄Π½ΠΎΠ³ΠΎ аспСкта C# Π±Π΅Π·ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для прСодолСния Π΄Π°Π½Π½ΠΎΠ³ΠΎ затруднСния Π² этой Π³Π»Π°Π²Π΅ даСтся ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… срСдств языка Π‘#, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΎΠ±Ρ‰ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π‘#, ряд основных ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ³Π»ΡƒΠ±Π»ΡΡ‚ΡŒΡΡ Π² Π΄Π΅Ρ‚Π°Π»ΠΈ, Π² этой главСосновноС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ удСляСтся лишь самым ΠΎΠ±Ρ‰ΠΈΠΌ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ написания любой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π‘#. А Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠ²ΠΎΠΏΡ€ΠΎΡΠΎΠ², Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ излоТСния матСриалаэтой Π³Π»Π°Π²Ρ‹, Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ…Π³Π»Π°Π²Π°Ρ… части I.ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ понятиСм C# являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (ООП). ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° ООП Π½Π΅ΠΎΡ‚Π΄Π΅Π»ΠΈΠΌΠ° ΠΎΡ‚ Π‘#, ΠΈ поэтому всС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° C# ΡΠ²Π»ΡΡŽΡ‚ΡΡΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ хотя Π±Ρ‹ Π² самой ΠΌΠ°Π»ΠΎΠΉ стСпСни. Π’ связи с этим ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡƒΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΎΡΠ½ΠΎΠ²ΠΎΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ООП, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒΠΊ написанию самой простой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π‘#.

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

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

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

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

Для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ООП всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ языки программирования, Π² Ρ‚ΠΎΠΌ числС ΠΈ Π‘#, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ трСмя ΠΎΠ±Ρ‰ΠΈΠΌΠΈ свойствами: инкапсуляциСй, ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ ΠΈ наслСдованиСм. Рассмотрим ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· этих свойств Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ

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

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

Основной Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ΠΉ инкапсуляции Π² C# являСтся класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт Ρ„ΠΎΡ€ΠΌΡƒΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Он описываСт Π΄Π°Π½Π½Ρ‹Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠΈ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π’ C#описаниС класса слуТит для построСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ экзСмплярамикласса. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, класс, ΠΏΠΎ сущСству, прСдставляСт собой ряд схСматичСских описаний способа построСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

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