Skip to content

Inkapsulyatsiya (Encapsulation)

Inkapsulyatsiya

Inkapsulyatsiya — "nozik" ma'lumotlarni foydalanuvchilardan yashirishni ta'minlashdir.

Bunga erishish uchun sinf o'zgaruvchilari/atributlarini private deb e'lon qilishingiz kerak (sinfdan tashqaridan kirish mumkin emas).

Agar boshqalar private a'zoning qiymatini o'qishini yoki o'zgartirishini xohlasangiz, public get va set metodlarini taqdim etishingiz mumkin.


Hayotiy misol

Xodimning maoshini tasavvur qiling:

  • Maosh — maxfiy: xodim uni to'g'ridan-to'g'ri o'zgartira olmaydi
  • Faqat uning menejeri tegishli hollarda yangilashi yoki ulashishi mumkin

Inkapsulyatsiya ham xuddi shunday ishlaydi. Ma'lumotlar yashirilgan va faqat ishonchli metodlar ularga kirishi yoki o'zgartirishi mumkin.


Private a'zolarga kirish

Private atributga kirish uchun public "get" va "set" metodlaridan foydalaning:

MISOL

cpp
#include <iostream>
using namespace std;

class Employee {
  private:
    // Private atribut
    int salary;

  public:
    // Setter
    void setSalary(int s) {
      salary = s;
    }
    // Getter
    int getSalary() {
      return salary;
    }
};

int main() {
  Employee myObj;
  myObj.setSalary(50000);
  cout << myObj.getSalary();
  return 0;
}

Tushuntirish

  • salaryprivate — unga to'g'ridan-to'g'ri kirish mumkin emas
  • setSalary() — qiymatni o'rnatadi
  • getSalary() — qiymatni qaytaradi

Biz myObj.setSalary(50000) yordamida qiymat beramiz va myObj.getSalary() yordamida uni chiqaramiz.


Nega inkapsulyatsiya kerak?

  • Sinf atributlarini iloji boricha private deb e'lon qilish yaxshi amaliyot hisoblanadi. Inkapsulyatsiya ma'lumotlarni yaxshiroq boshqarishni ta'minlaydi, chunki siz (yoki boshqalar) kodning bir qismini boshqa qismlarga ta'sir qilmasdan o'zgartirishingiz mumkin
  • Ma'lumotlarning xavfsizligi oshadi