Enkapsulatsiya — OOP ning birinchi ustuni. Uning mohiyati: obyektning ichki ma’lumotini tashqi dunyodan yashirib, unga faqat nazorat qilinadigan yo’llar orqali kirish. Bu ma’lumotni tasodifan yoki noto’g’ri o’zgartirishdan himoya qiladi. Bank hisobini tasavvur qiling: balansni istagan kishi to’g’ridan-to’g’ri o’zgartira olmasligi kerak.
Enkapsulatsiya — ma’lumot va u ustidagi amallarni bir sinfga jamlab, ichki holatni
privatebilan yashirish va unga faqatpublica’zolar orqali kirishga ruxsat berish tamoyili.
Muammo: himoyasiz maydon
Avval maydon public bo’lganda qanday muammo yuzaga kelishini ko’ramiz:
using System;
class Hisob
{
public int Balans = 0;
}
Hisob h = new Hisob();
h.Balans = -5000; // mantiqan noto'g'ri, lekin ruxsat etilgan
Console.WriteLine($"Balans: {h.Balans}");
Balans: -5000
Manfiy balans — xato, ammo public maydon bunga yo’l qo’ydi. Enkapsulatsiya buni hal qiladi.
Yechim: private + xususiyat
Maydonni private qilib yashiramiz va unga xususiyat (property) orqali nazorat qilinadigan kirish beramiz:
using System;
class Hisob
{
private int balans = 0;
public int Balans
{
get { return balans; }
set { if (value >= 0) balans = value; } // manfiyni rad etadi
}
}
Hisob h = new Hisob();
h.Balans = 1000;
h.Balans = -500; // rad etiladi
Console.WriteLine($"Balans: {h.Balans}");
Balans: 1000
Endi balans private va yashirin. Balans xususiyati orqali kirish nazorat qilinadi: set bloki manfiy qiymatni rad etdi. value — o’rnatilayotgan qiymatni bildiruvchi maxsus so’z.
Xususiyat (property) — C# usuli
C#’da enkapsulatsiya get/set xususiyatlari orqali amalga oshiriladi. Ularni jadvalda ko’ramiz:
| Qism | Vazifasi |
|---|---|
get |
qiymatni qaytaradi (o’qish) |
set |
qiymatni tekshirib o’rnatadi (yozish) |
value |
o’rnatilayotgan qiymat |
Faqat o’qiladigan xususiyat uchun set ni tashlab ketish yoki private set qilish mumkin.
Nega enkapsulatsiya muhim?
Enkapsulatsiya uch foyda beradi: ma’lumot himoyalanadi, ichki tuzilishni o’zgartirsangiz tashqi kod buzilmaydi, va sinf bilan ishlash soddalashadi. C#’da xususiyatlar bu tamoyilni nafis va tabiiy qiladi.
Xulosa
Bu bo’limda enkapsulatsiya tamoyilini, private maydon va get/set xususiyatlari bilan ma’lumotni himoyalashni va value so’zini ko’rib chiqdik. Enkapsulatsiya — ishonchli obyekt dizaynining poydevori. Keyingi darsda merosxo’rlikka o’tamiz.