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 ​

  • salary — private — 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