116. C++da set metodlarini yaratish va unga oid misollar
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 };
117. C++da get metodlarini yaratish va unga oid misollar
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 };
118. Ob’yektlarni inisializasiya qilish
Initsializatsiyani nusxalash. Oddiy o'zgaruvchilar singari, sinflar ham nusxa ko'chirish yordamida ishga tushirilishi mumkin: int a = 7; // nusxa ko'chirishni boshlash Fraction eight = Fraction(8); // nusxa ko'chirish boshlanishi, Fraction (8, 1) chaqiriladi Fraction nine = 9; // nusxa ko'chirishni boshlash. Tuzuvchi 9 ni Fraktsiyaga o'tkazish usullarini qidiradi, natijada Fraction (9, 1) konstruktoriga murojaat bo'ladi. Shu bilan birga, sinfni ishga tushirishning bu shaklidan qochish tavsiya etiladi, chunki bu unchalik samarasiz bo'lishi mumkin. Bir xil boshlang'ich, to'g'ridan -to'g'ri ishga tushirish va nusxa ko'chirish boshlang'ich ma'lumotlarning asosiy turlari bilan bir xil bo'lsa -da, bu sinflarga umuman to'g'ri kelmaydi (garchi yakuniy natija ko'pincha bir xil bo'ladi). Bu masalani keyingi darslarda batafsil ko'rib chiqamiz. Qoida: O'zingizning sinflaringiz obyektlari bilan nusxa ko'chirishni ishlatmang
119. C++da strukturalar yaratish
C++ da strukturalar haqida eslatma. C da strukturalar faqat ma'lumotlarni saqlashi mumkin va ular bilan bog'liq metodlar bo'lmasligi mumkin. C++ da sinflarni loyihalashdan so'ng (class kalit so'zidan foydalangan holda) Bjarne Stroustrup struktura (C dan meros bo'lib o'tgan) bog'liq metodlarga ega bo'lishi kerakligi haqida o'ylab ko'rdi. Biroz o'ylanib, nima kerakligini hal qildi. Shuning uchun, yuqoridagi dasturlarda biz sinf o'rniga struct kalit so'zidan foydalanishimiz mumkin va hamma narsa ishlaydi! Ko'pgina ishlab chiquvchilar bu noto'g'ri qaror, deb o'ylashadi, chunki bu muammolarga olib kelishi mumkin, masalan, sinf xotirani o'z -o'zidan tozalaydi (masalan, xotira ajratilgan sinf) sinfning vayron bo'lishidan oldin uni xalos qiladi), lekin struktura bilan ishlashda buni taxmin qilish xavfli. Shuning uchun, faqat ma'lumotlarni saqlash uchun ishlatiladigan strukturalar uchun struct kalit so'zidan foydalanish hamda ma'lumotlar va funksiyalarni birlashtirishni talab qiladigan obyektlarni aniqlash uchun class kalit so'zidan foydalanish tavsiya etiladi. Qoidalar: faqat ma'lumotlarni saqlash uchun ishlatiladigan struktura uchun struct kalit so'zidan foydalaning. Ma'lumot va funksiyalarni birlashtirgan obyektlar uchun class kalit so'zidan foydalaning.
120. C++da sinflar yaratish
Sinflar. C++ tilining eng foydali xususiyatlaridan biri bu muayyan muammolarni hal qilish uchun ko'proq mos keladigan ma'lumotlar turlarini aniqlashdir. O'zingizning shaxsiy ma'lumotlar turlarini yaratish uchun ro'yxatlar va tuzilmalardan qanday foydalanish mumkinligini allaqachon ko'rgansiz. Masalan, sanani saqlash uchun struktura quyidagicha e’lon qilinadi.
struct DateStruct { int day; int month; int year; };
Obyektga yo'naltirilgan dasturlashda ma'lumotlar turlari nafaqat ma'lumotlarni, balki shu ma'lumotlar bilan ishlaydigan funksiyalarni ham o'z ichiga olishi mumkin. C++ bu ma'lumot turini aniqlash uchun class kalit so'zidan foydalanadi. class kalit so'zidan foydalanish foydalanuvchi tomonidan belgilanadigan yangi ma'lumotlar turini, sinfini aniqlaydi.
struct DateStruct
{ int day; int month; int year; };
class DateClass {
public: int m_day; int m_month; int m_year; };
Bu yerda faqat muhim farq - bu public kalit so'zi Strukturani e'lon qilish singari, sinfni e'lon qilish ham hech qanday xotira ajratmaydi. Sinfdan foydalanish uchun siz ushbu turdagi o'zgaruvchini e'lon qilishingiz kerak:
121. C++da private a’zolari hosil qilish
Yopiq a'zolar (yoki "private a'zolar") - faqat shu sinfning boshqa a'zolari kira oladigan sinf a'zolari. main() DateClass a'zosi bo'lmaganligi sababli, date obyekti shaxsiy a'zolariga kira olmaydi.Kirish funksiyasi - bu qisqa umumiy funksiya, uning vazifasi sinfning yopiq a'zolarining o'zgaruvchisini olish yoki o'zgartirishdir. Masalan: class MyString
{ private: char *m_string; // dinamik ravishda qatorni ajratish i
nt m_length; // satr uzunligini kuzatish uchun o'zgaruvchidan foydalaning
public: int getLength() { return m_length; } // m_length qiymatini olish uchun kirish funktsiyasi }; Bu yerda getLength () - bu m_length qiymatini qaytaradigan kirish funksiyasi.
122. C++da public a’zolari hosil qilish
Yopiq a'zolar (yoki "private a'zolar") - faqat shu sinfning boshqa a'zolari kira oladigan sinf a'zolari. main() DateClass a'zosi bo'lmaganligi sababli, date obyekti shaxsiy a'zolariga kira olmaydi.Kirish funksiyasi - bu qisqa umumiy funksiya, uning vazifasi sinfning yopiq a'zolarining o'zgaruvchisini olish yoki o'zgartirishdir. Masalan: class MyString
{ private: char *m_string; // dinamik ravishda qatorni ajratish i
nt m_length; // satr uzunligini kuzatish uchun o'zgaruvchidan foydalaning
public: int getLength() { return m_length; } // m_length qiymatini olish uchun kirish funktsiyasi }; Bu yerda getLength () - bu m_length qiymatini qaytaradigan kirish funksiyasi.
Do'stlaringiz bilan baham: |