C++ ruxsat modifikatorlari (public, private)
C++ kabi obyektga yoʻnaltirilgan dasturlash tillarining asosiy xususiyatlaridan biri maʼlumotlarni yashirishdir.
Ma'lumotlarni yashirish sinfning ma'lumotlar a'zolariga kirishni cheklashni anglatadi. Bu boshqa funksiyalar va sinflarning sinf ma'lumotlarini buzishining oldini olish uchun.
Shu bilan birga, yashirin ma'lumotlarni bilvosita manipulyatsiya qilish uchun ba'zi a'zo funksiyalari va a'zo ma'lumotlariga kirish imkoniyatini yaratish ham muhimdir.
C++ ning kirish modifikatorlari qaysi sinf a'zolariga boshqa sinflar va funksiyalar kirishi mumkin va qaysi biri yo'qligini aniqlash imkonini beradi.
Masalan,
class Patient {
private:
int patientNumber;
string diagnosis;
public:
void billing() {
// kod
}
void makeAppointment() {
// kod
}
};
Bu erda, Patient sinfining bemorNumber o'zgaruvchilari va diagnostikasi private kalit so'zi yordamida yashiringan, a'zo funksiyalariga esa public kalit so'zi yordamida kirish mumkin.
C++ da 3 ta kirish modifikatorlari mavjud:
publicprivateprotectedpublic kalit so'zi umumiy a'zolarni (ma'lumotlar va funksiyalar) yaratish uchun ishlatiladi.#include <iostream>
using namespace std;
// sinfni aniqlang
class Sample {
// ommaviy elementlar
public:
int age;
void displayAge() {
cout << "Age = " << age << endl;
}
};
int main() {
// sinf ob'ektini e'lon qilish
Sample obj1;
cout << "Enter your age: ";
// obj1 ob'ektining yoshiga kirishni saqlang
cin >> obj1.age;
// chaqiruv sinfi funksiyasi
obj1.displayAge();
return 0;
}
Chiqish
Enter your age: 20
Age = 20
Ushbu dasturda biz Sample nomli sinfni yaratdik, unda public o'zgaruvchi yoshi va public funksiyasi displayAge() mavjud.
main() da biz Sample sinfining obj1 nomli ob'ektini yaratdik. Keyin obj1.age va obj1.displayAge() kodlari yordamida public elementlariga to'g'ridan-to'g'ri kiramiz.
public elementlariga main() orqali kirish mumkinligiga e'tibor bering. Buning sababi, public elementlariga dasturning barcha qismlaridan kirish mumkin.
private kalit so'zi shaxsiy a'zolarni (ma'lumotlar va funksiyalar) yaratish uchun ishlatiladi.#include <iostream>
using namespace std;
// sinfni aniqlang
class Sample {
// shaxsiy elementlar
private:
int age;
// ommaviy elementlar
public:
void displayAge(int a) {
age = a;
cout << "Age = " << age << endl;
}
};
int main() {
int ageInput;
// ob'ektni e'lon qilish
Sample obj1;
cout << "Enter your age: ";
cin >> ageInput;
// funksiyani chaqirish va ageInput ni argument sifatida o'tkazish
obj1.displayAge(ageInput);
return 0;
}
Chiqish
Enter your age: 20
Age = 20
main() da obj1 ob'ekti sinf o'zgaruvchisi yoshiga bevosita kira olmaydi.
// xato
cin >> obj1.age;
Biz yoshni faqat displayAge() umumiy funksiyasi orqali bilvosita boshqarishimiz mumkin, chunki bu funksiya yoshni unga uzatilgan argument qiymati, yaʼni int a funksiya parametri bilan ishga tushiradi.
protected kirish spetsifikatsiyasi haqida bilishdan oldin, inheritance in C++ haqida bilishingizga ishonch hosil qiling.
protected kalit so'zi himoyalangan a'zolarni (ma'lumotlar va funksiya) yaratish uchun ishlatiladi.#include <iostream>
using namespace std;
// ota-ona sinfini e'lon qilish
class Sample {
// himoyalangan elementlar
protected:
int age;
};
// bolalar sinfini e'lon qilish
class SampleChild : public Sample {
public:
void displayAge(int a) {
age = a;
cout << "Age = " << age << endl;
}
};
int main() {
int ageInput;
// bolalar sinfining ob'ektini e'lon qilish
SampleChild child;
cout << "Enter your age: ";
cin >> ageInput;
// bolalar sinfi funksiyasini chaqirish
// ageInput ni argument sifatida o'tkazing
child.displayAge(ageInput);
return 0;
}
Chiqish
Enter your age: 20
Age = 20
Bu yerda SampleChild Sample dan olingan meros qilib olingan sinfdir. O'zgaruvchining yoshi Sample da protected kalit so'zi bilan e'lon qilinadi.
Bu shuni anglatadiki, SampleChild yoshga kirishi mumkin, chunki Sample uning ota-sinfidir.
Sample sinfida yosh e'lon qilingan bo'lsa ham, biz buni SampleChild da yosh qiymatini belgilaganimizdan ko'ramiz.
public elements can be accessed by all other classes and functions.
-private elementlariga ular e'lon qilingan sinfdan tashqarida kirish mumkin emas, faqat friend sinflari va funksiyalari bundan mustasno.
-protected elementlari xuddi private ga o‘xshaydi, bundan tashqari ularga olingan sinflar orqali kirish mumkin.Specifiers Same Class Derived Class Outside Class public Yes Yes Yes private Yes No No protected Yes Yes No
[!NOTE] Odatiy bo'lib, agar boshqacha ko'rsatilmagan bo'lsa, C++ da sinf a'zolari
privatedir.