43 / 90

C++ Access Modifiers

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,

example.cpp
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++ kirish modifikatorlarining turlari

C++ da 3 ta kirish modifikatorlari mavjud:

  • public
  • private
  • protected

umumiy kirish modifikatori

  • public kalit so'zi umumiy a'zolarni (ma'lumotlar va funksiyalar) yaratish uchun ishlatiladi.
  • Jamoat a'zolari dasturning istalgan qismidan foydalanishlari mumkin.

1-misol: C++ umumiy kirish modifikatori

example.cpp
#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

kod
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.

shaxsiy kirish modifikatori

  • private kalit so'zi shaxsiy a'zolarni (ma'lumotlar va funksiyalar) yaratish uchun ishlatiladi.
  • Shaxsiy aʼzolarga faqat sinf ichidan kirish mumkin.
  • Biroq, do'st sinflari va do'st funksiyalari shaxsiy a'zolarga kirishi mumkin.

2-misol: C++ xususiy kirish spetsifikatsiyasi

example.cpp
#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

kod
Enter your age: 20
Age = 20

main() da obj1 ob'ekti sinf o'zgaruvchisi yoshiga bevosita kira olmaydi.

example.cpp
// 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.

himoyalangan kirish modifikatori

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.
  • Himoyalangan a'zolarga sinf ichida va olingan sinfdan kirish mumkin.

3-misol: C++ bilan himoyalangan kirish spetsifikatsiyasi

example.cpp
#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

kod
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.

Xulosa: davlat, xususiy va himoyalangan

  • 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 private dir.