Boshqa sinflarni o'z ichiga olgan sinflar. Ba'zi sinflar a'zo o'zgaruvchilari sifatida boshqa sinflarni o'z ichiga olishi mumkin. Odatiy bo'lib, tashqi sinf yaratishda a'zo o'zgaruvchilar uchun standart konstruktorlar chaqiriladi. Bu konstruktor tanasi bajarilishidan oldin sodir bo'ladi. Buni quyidagicha ko'rsatish mumkin:
#include class A { public: A()
{ std::cout << "A\n"; } };
class B
{ private: A m_a; // B a'zo o'zgaruvchi sifatida A ni o'z ichiga oladi
public: B() { std::cout << "B\n"; } };
int main()
{ B b; return 0; }
112. C++da sinflar yaratish va uning metodlari hosil qilish #include class DateClass
{ int m_day; //jimlik bo’yicha yopiq
int m_month; int m_year;
public:
void setDate(int day, int month, int year) // ochiq
{ // setDate () usuli sinfning yopiq a'zolaridan foydalana oladi, chunki u o'zi sinf a'zosi
m_day = day; m_month = month; m_year = year; }
void print() // ochiq, har qanday ob'ekt kirish huquqiga ega
{ std::cout << m_day << "/" << m_month << "/" << m_year; } };
int main()
{ DateClass date; date.setDate(12, 11, 2018); //bu to’g’ri date.print(); // to’g’ri, chunki print() ochiq foydalanish xususiyatiga ega return 0; }
113. C++da sinflar yaratish va uning xossalarini hosil qilish #include using namespace std;
class Student
{ const int yearMonth = 9; int m_ID; string m_name; int m_nowYear; int m_YearOfAdm; int m_nowMonth;
public:
void setData(int ID, string name, int nowYear, int yearOfAdm, int nowMonth)
{ m_ID = ID; m_name = name; m_nowYear = nowYear; m_YearOfAdm = yearOfAdm; m_nowMonth = nowMonth; }
int getCourse()
{ int course = m_nowYear - m_YearOfAdm;
if(course>=0) { if(m_nowMonth - yearMonth>=0) course++; } return course; } };
int main()
{ Student Talaba;
int course;
Talaba.setData(123,"Anvar",2020,2020,9);
course = Talaba.getCourse();
cout<<"Talaba "<114. C++da sinflar tarkibidagi setterlar Sinf - bu bizning dasturimizda foydalanishimiz mumkin bo'lgan foydalanuvchi belgilaydigan ma'lumot turi va u ob'ekt tuzuvchisi yoki ob'ektlarni yaratish uchun "reja" sifatida ishlaydi. GETTER VA SETTER - Getter va setter tushunchasi ma'lumotlarni yashirish konsepsiyasini qo'llab-quvvatlaydi. Boshqa ob'ektlar ob'ektlardan birida joylashgan ma'lumotlarni to'g'ridan -to'g'ri boshqarishi shart emasligi sababli, qabul qiluvchilar va o'rnatuvchilar ob'ekt ma'lumotlariga boshqariladigan kirishni ta'minlaydi. Qabul qiluvchilar va o'rnatuvchilar ba'zan mos ravishda aksessuarlar va o'zgartirish usullari deb ataladi.
Odatda kirish funksiyalari ikki xil bo'ladi: 1. getterlar - bu sinfning yopiq a'zo o'zgaruvchilarining qiymatlarini qaytaradigan funksiyalar; 2. setterlar - bu sinfning yopiq a'zo o'zgaruvchilariga qiymatlarni belgilashga imkon beradigan funksiyalar. Bu yerda barcha yopiq a'zo o'zgaruvchilari uchun getter va setterlardan foydalanadigan sinfning misoli:
class Date
{ private: int m_day; int m_month; int m_year;
public: int getDay()
{ return m_day; } // day uchun
getter void setDay(int day)
{ m_day = day; } // day uchun setter
int getMonth() { return m_month; } // month uchun getter
void setMonth(int month)
{ m_month = month; } // month uchun setter
int getYear() { return m_year; } // year uchun gettter
void setYear(int year) { m_year = year; } // year uchun setter };
115. C++da sinflar tarkibidagi getterlar
Odatda kirish funksiyalari ikki xil bo'ladi: 1. getterlar - bu sinfning yopiq a'zo o'zgaruvchilarining qiymatlarini qaytaradigan funksiyalar; 2. setterlar - bu sinfning yopiq a'zo o'zgaruvchilariga qiymatlarni belgilashga imkon beradigan funksiyalar. Bu yerda barcha yopiq a'zo o'zgaruvchilari uchun getter va setterlardan foydalanadigan sinfning misoli:
class Date
{ private: int m_day; int m_month; int m_year;
public: int getDay()
{ return m_day; } // day uchun
getter void setDay(int day)
{ m_day = day; } // day uchun setter
int getMonth() { return m_month; } // month uchun getter
void setMonth(int month)
{ m_month = month; } // month uchun setter
int getYear() { return m_year; } // year uchun gettter
void setYear(int year) { m_year = year; } // year uchun setter };