Inkapsulyatsiya - bu kodni va boshqarilayotgan ma’lumotlarni birlashtiradigan dasturlash mexanizmi bo‘lib, ma’lumotlardan noto‘g‘ri foydalanish va istisnolarni yo‘q qilish uchun ishlatiladi. Obyektga yo‘naltirilgan dasturlashda ma’lumotlar va kodlar bitta joyga birlashtirilishi mumkin. Bunday joyda barcha kerakli ma’lumotlar va kodlar mavjud. Kod va ma’lumotlar shu tarzda bir-biriga bog‘langanda obyekt yaratiladi. Boshqacha qilib aytganda, obyekt inkapsulyatsiyani qo‘llab-quvvatlaydigan elementdir.
Obyektda kodlar va ma’lumotlar ochiq yoki yopiq bo‘lishi mumkin. Yopiq ma’lumotlar (yoki kod) ga faqat ruxsat modifikatorlar orqali kirish mumkin. Bu shuni anglatadiki, yopiq ma’lumotlar yoki kodga dasturning obyektdan tashqaridagi qismi kirishi mumkin emas. Agar ma’lumotlar yoki kod ochiq bo‘lsa, u obyekt ichida aniqlangan bo‘lsa ham, u dasturning boshqa qismlari uchun ham ochiq bo‘ladi.
C# da inkapsulyatsiyaning asosiy birligi obyekt shaklini belgilaydigan sinfdir. U berilganlarni, shuningdek, ular ustida ishlaydigan kodni tavsiflaydi. C# da sinf e’loni sinfning nusxalari bo‘lgan obyektlarni qurish uchun ishlatiladi. Shuning uchun sinf - obyekt qanday qurilganligining sxematik ko‘rinishidir. Sinfni tashkil etuvchi kod va ma’lumotlar sinf a’zolari deb ataladi. Sinf tomonidan aniqlangan ma’lumotlar maydonlar yoki o‘zgaruvchilar deb ataladi. Ma’lumotlarda asosida ishlaydigan kod bo‘lagi metodlar hisoblanadi. C# dametod qism dasturning ekvivalenti bo‘lib xizmat qiladi. (Boshqa a’zolarga xossalar, hodisalar va konstruktorlar kiradi.) Shunday qilib, sinf metodlari sinf tomonidan belgilangan maydonlarga ta’sir qiluvchi kodni o‘z ichiga oladi.
Oddiy metodlarga qo‘shimcha ravishda, C# xossa deb ataladigan maxsus yordamchi metodlarni taqdim etadi. Ular sinflar va struktura a’zolariga oson kirishni ta’minlaydi, ularning qiymatini o‘rganadi yoki ularni o‘rnatadi. Sinfdagi inkapsulyatsiya xususiyatini qo'llab-quvvatlash ikkita asosiy afzalliklarni beradi. Birinchidan, sinf ma'lumotlarni kod bilan bog'laydi. Ikkinchidan, sinf o'z a'zolariga kirishni nazorat qilish uchun qulayliklar yaratadi. C# da asosan ikki turdagi sinf a'zolari mavjud: ochiq va yopiq. Ochiq a'zoga sinfdan tashqarida belgilangan koddan kirish mumkin. Sinfning yopiq a'zosi faqat sinfning o'zida belgilangan metodlar uchun mavjud. Yopiq a'zolar yordamida kirishni nazorat qilish tashkil etiladi
Sinf a'zolariga kirishni cheklash ob'ektga yo'naltirilgan dasturlashning asosiy bosqichidir, chunki u ob'ektdan noto'g'ri foydalanishni oldini olishga imkon beradi. Yopiq ma'lumotlarga faqat belgilangan metodlar orqali kirishga ruxsat berish orqali. Yopiq sinf a'zosini sinfdan tashqarida to'g'ridan-to'g'ri kodda ishlatib bo'lmaydi. Shu bilan birga, ob'ektda ma'lumotlar qanday va qachon ishlatilishini to'liq nazorat qilish mumkin.
C# da to'rtta kirish modifikatorlari mavjud: public, private, protected va internal. Sinf a’zolariga kirish va ularni boshqarishda public va private kirish modifikatorlari ishlatiladi. Protected modifikator faqat vorislik bilan bog'liqhollarda qo'llaniladi. Internal modifikator esa asosan yig'ish uchun mo'ljallangan o'rnatilgan dastur yoki kutubxonani anglatadi.Agar sinf a'zosi public spetsifikatsiyasi bilan belgilangan bo'lsa, ungadasturdagi istalgan boshqa koddan, shu jumladan boshqa sinflarda belgilanganmetodlardan kirish mumkin bo'ladi. Agar sinf a'zosi private spetsifikatsiyasi bilan belgilangan bo'lsa, unga faqat shu sinfning boshqa a'zolari kirishi mumkin. Shuning uchun, boshqa sinflarning metodlari ushbu sinfning yopiq a'zosiga (private) kirish huquqiga ega emas. agar kirish spetsifikatorlaridan hech biri ko'rsatilmagan bo'lsa, sinf a'zosi yopiq hisoblanadi. Shuning uchun,yopiq sinf a'zolarini yaratishda, ular uchun private spetsifikatsiyasi talab qilinmaydi.Kirish spetsifikatsiyasi alohida a'zo turi e’lonining qolgan qismidan oldin keladi. Bu shuni anglatadiki, sinf a'zolari e’loni aynan shu bilan boshlanishi kerak.
Yopiq va ochiq foydalanishni to'g'ri tashkil etish ob'ektga yo'naltirilgan dasturlashda eng muhim tushuncha hisoblanadi. Buning uchun qat'iy qoidalar mavjud bo'lmasa-da, quyida keltirilgan ba'zi umumiy tamoyillar mavjud.
- Faqat sinfda ishlatiladigan a'zolar yopiq bo'lishi kerak.
- Ma’lum bir qiymatlar oralig'iga to'g'ri keladigan ma'lumotlar yopiq bo'lishi kerak va ochiq metodlardan foydalangan holda kirishda sonlarni ko'rsatish oralig'ida tekshirish amalga oshirilishi kerak.
- Agar a'zoning o'zgarishi sinfdan tashqaridagi a’zolarning o’zgarishiga olib kelsa, ya'ni, ob'ektning boshqa jihatlariga ta'sir qilsa, a'zo yopiq bo'lishi kerak.
- Ob'ektga zarar yetkazishi mumkin bo'lgan a'zolar yopiq bo'lishi kerak. Ushbu a'zolarga ochiq metodlar yordamida kirish kerak, shunda ulardan noto'g'ri foydalanish oldi olinadi.
- Yopiq ma'lumot qiymatlarini olish va o'rnatish metodlari ochiq bo'lishi kerak.