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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«C# 4.0: ΠΏΠΎΠ»Π½ΠΎΠ΅ руководство». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 5

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

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ дСйствия CLR

Π‘Ρ€Π΅Π΄Π° CLR управляСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π° .NET. ДСйствуСт ΠΎΠ½Π° ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° C# являСтся Π½Π΅ исполняСмый ΠΊΠΎΠ΄, Π° Ρ„Π°ΠΉΠ», содСрТащий особого Ρ€ΠΎΠ΄Π° псСвдокод, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Microsoft Intermediate Language, MSIL (ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ язык Microsoft). ПсСвдокод MSIL опрСдСляСт Π½Π°Π±ΠΎΡ€ пСрСносимых инструкций, Π½Π΅ зависящих ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ процСссора. По сущСству, MSIL опрСдСляСт пСрСносимый язык ассСмблСра. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ, нСсмотря Π½Π° каТущССся сходство псСвдокода MSIL с Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ΠΎΠΌ Java, это всС ΠΆΠ΅ Ρ€Π°Π·Π½Ρ‹Π΅ понятия.

НазначСниС CLR β€” ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² исполняСмый ΠΊΠΎΠ΄ ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, всякая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, скомпилированная Π² псСвдокод MSIL, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Π² любой срСдС, Π³Π΄Π΅ имССтся рСализация CLR. ИмСнно Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ отчасти достигаСтся ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ Π² срСдС .NET Framework.

ПсСвдокод MSIL прСобразуСтся Π² исполняСмый ΠΊΠΎΠ΄ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ]1Π’-компилятора. Π‘ΠΎΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ JIT ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎ Π² срок ΠΈ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ Π΄Π°Π½Π½ΠΎΠ³ΠΎ компилятора. ΠŸΡ€ΠΎΡ†Π΅ΡΡ прСобразования ΠΊΠΎΠ΄Π° происходит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ срСда CLR Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ JIT-компилятор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ псСвдокод MSIL Π² собствСнный ΠΊΠΎΠ΄ систСмы ΠΏΠΎ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΡŽ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ части ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° C# фактичСски выполняСтся ΠΊΠ°ΠΊ собствСнный ΠΊΠΎΠ΄, нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΎΠ½Π° скомпилирована Π² псСвдокод MSIL. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ такая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выполняСтся Ρ‚Π°ΠΊ ΠΆΠ΅ быстро, ΠΊΠ°ΠΊ ΠΈ Π² Ρ‚ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° исходно скомпилирована Π² собствСнный ΠΊΠΎΠ΄, Π½ΠΎ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΎΠ½Π° ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π°Π΅Ρ‚ всС прСимущСства пСрСносимости псСвдокода MSIL.

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

УправляСмый ΠΈ нСуправляСмый ΠΊΠΎΠ΄

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

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


ΠžΠ±Ρ‰Π΅ΡΠ·Ρ‹ΠΊΠΎΠ²Π°Ρ спСцификация

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

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

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


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

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

ООП прСдставляСт собой эффСктивный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ. ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ программирования ΠΏΡ€Π΅Ρ‚Π΅Ρ€ΠΏΠ΅Π»ΠΈ сущСствСнныС измСнСния с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° изобрСтСния

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

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

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

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

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


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

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

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