C++ inkapsulyatsiya


ULASHISH

Inkapsulyatsiya

Inkapsulyatsiyaning ma’nosi — "maxfiy" ma’lumotlarning foydalanuvchilardan yashirilishini ta’minlash.

Bunga erishish uchun sinf o‘zgaruvchilari/atributlarini private (sinfdan tashqaridan murojaat qilib bo‘lmaydigan) qilib e’lon qilishingiz kerak.

Agar boshqalar private a’zoning qiymatini o‘qishi yoki o‘zgartirishi kerak bo‘lsa, public get va set metodlarini taqdim etishingiz mumkin.


Hayotiy misol

Xodimning maoshini tasavvur qiling:

  • Maosh yopiq (private) — xodim uni to‘g‘ridan-to‘g‘ri o‘zgartira olmaydi
  • Faqat uning rahbari uni yangilashi yoki kerak bo‘lganda ma’lum qilishi mumkin

Inkapsulyatsiya ham xuddi shunday ishlaydi. Ma’lumotlar yashirilgan bo‘ladi va ularga faqat ishonchli metodlar murojaat qilishi yoki ularni o‘zgartirishi mumkin.


Private a’zolarga murojaat qilish

Private atributga murojaat qilish uchun public "get" va "set" metodlaridan foydalaning:

Misol

#include <iostream> using namespace std; class Employee {   private:     // Private attribute     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; }
O‘zingiz sinab ko‘ring »

Misol izohi

  • salary — private, unga to‘g‘ridan-to‘g‘ri murojaat qilib bo‘lmaydi
  • setSalary() qiymatni o‘rnatadi
  • getSalary() qiymatni qaytaradi

Qiymat berish uchun myObj.setSalary(50000) chaqiruvidan, uni chiqarish uchun esa myObj.getSalary() chaqiruvidan foydalanamiz.


Nega inkapsulyatsiya kerak?

  • Sinf atributlarini (imkon qadar tez-tez) private qilib e’lon qilish yaxshi amaliyot hisoblanadi. Inkapsulyatsiya ma’lumotlaringizni yaxshiroq nazorat qilishni ta’minlaydi, chunki siz (yoki boshqalar) kodning bir qismini boshqa qismlariga ta’sir qilmasdan o‘zgartira olasiz
  • Ma’lumotlar xavfsizligi oshadi




W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!