inkapsulyasiya metodlari va mexanizmlari

DOCX 8 стр. 23,2 КБ Бесплатная загрузка

Предварительный просмотр (5 стр.)

Прокрутите вниз 👇
1 / 8
5-ma’ruza. inkapsulyasiya metodlari va mexanizmlari. ob’yekt elementlariga murojaatni tashkil etish nima uchun sinf a'zolarining o'zgaruvchilarini yopiq qilish kerak? javob sifatida, o'xshashlikdan foydalanaylik. zamonaviy hayotda biz ko'plab elektron qurilmalarga kirishimiz mumkin. televizorda masofadan boshqarish pulti mavjud, uning yordamida siz televizorni yoqishingiz / o'chirishingiz mumkin. avtomobil haydash sizga ikki nuqta o'rtasida tezroq harakatlanish imkonini beradi. siz kamera yordamida suratga olishingiz mumkin. bu 3 narsaning hammasi umumiy shablondan foydalanadi: ular sizga ma'lum bir harakatni bajarish uchun oddiy interfeys (tugma, rulda va hokazo) beradi. biroq, bu qurilmalarning aslida qanday ishlashi sizdan (foydalanuvchilar sifatida) yashiringan. masofadan boshqarish pultidagi tugmani bosish uchun siz televizor bilan ishlash uchun pultning "qopqog'i ostida" nima bo'layotganini bilishingiz shart emas. avtomobilingizda gaz pedalini bosganingizda, yonish dvigateli g'ildiraklarni qanday boshqarishini bilishning hojati yo'q. rasmga tushganda, sensorlar yorug'likni pikselli tasvirga qanday yig'ishini bilishning hojati yo'q. interfeys va amalga oshirishni ajratish juda foydalidir, chunki bu obyektlarni ularning bajarilishini tushunmasdan ishlatishga imkon beradi. bu ushbu …
2 / 8
chiq (foydalanuvchiga ochiq interfeys bilan). foydalanuvchilardan umumiy interfeysdan foydalanishni talab qilish a'zo o'zgaruvchilarini ochishdan ko'ra qiyinroq bo'lib tuyulishi mumkin, lekin u kodni qayta ishlatish va xizmat ko'rsatishning yaxshilanishini ta'minlaydigan ko'plab foydali afzalliklarni beradi. afzalliklar: 1) inkapsulyatsiyalangan sinflarni ishlatish osonroq va dasturlarning murakkabligini kamaytiradi. to'liq qamrab olingan sinf bilan siz faqat qanday metodlar mavjudligini, ular qanday dalillar va qanday qiymatlarni qaytarishini bilishingiz kerak. sinfning ichki qo'llanilishini bilishning hojati yo'q. masalan, ismlar ro'yxatini o'z ichiga olgan sinf dinamik qator, c uslubidagi satrlar, array, vector, map, list yoki boshqa ma'lumotlar tuzilmasi yordamida amalga oshirilishi mumkin. bu sinfdan foydalanish uchun uni amalga oshirish tafsilotlarini bilishingiz shart emas. bu dasturlarning murakkabligini sezilarli darajada kamaytiradi va mumkin bo'lgan xatolar sonini kamaytiradi. bu inkapsulyatsiyaning asosiy afzalligi. c++ standart kutubxonasidagi barcha sinflar inkapsulyatsiyalangan. tasavvur qiling, agar siz ularni ishlatish uchun string, vector yoki cout (va boshqa obyektlar) ning bajarilishini bilishingiz kerak bo'lsa, c ++ ni o'rganish qanchalik qiyin …
3 / 8
r uzunligini o'zgartirishi mumkin (yoki aksincha). bu, albatta, muammolarga olib keladi. m_length va m_stringni yopiq qilib, foydalanuvchilar sinf bilan ishlash usullaridan foydalanishga majbur bo'ladilar. biz o'z sinfimizni o'zimizni noto'g'ri ishlatishdan himoya qilishni yaxshilashimiz mumkin. masalan, umumiy a'zo o'zgaruvchiga ega bo'lgan sinfni qator sifatida ko'rib chiqing: class intarray { public: int m_array[10]; }; agar foydalanuvchilar massivga to'g'ridan-to'g'ri kira olsalar, ular noto'g'ri indeksdan foydalanishlari mumkin: int main() { intarray array; array.m_array[16] = 2; // noto'g'ri indeks, buning natijasida biz o'zimizda bo'lmagan xotirani qayta yozamiz } ammo, agar biz massivni shaxsiy qilsak, biz foydalanuvchini indeksning to'g'riligini tekshiradigan funktsiyadan foydalanishga majburlashimiz mumkin: class intarray { private: int m_array[10]; // foydalanuvchi bu a'zoga to'g'ridan -to'g'ri kirish huquqiga ega emas public: void setvalue(int index, int value) { // agar indeks noto'g'ri bo'lsa, hech narsa qilmang if (index = 10) return; m_array[index] = value; } }; shunday qilib, biz dasturimizning yaxlitligini himoya qilamiz. 3) inkapsulyatsiyalangan sinflarni o'zgartirish …
4 / 8
alue; value.setnumber1(7); cout using namespace std; class contact { private: int mobile_number; // private variable int home_number; // private variable public: contact() // constructor { mobile_number = 12345678; home_number = 87654321; } void print_numbers() { cout using namespace std; class contact { private: int mobile_number; // private variable int home_number; // private variable public: contact() // constructor { mobile_number = 12345678; home_number = 87654321; } // declaring a global 'friend' function friend void print_numbers( contact some_contact ); }; void print_numbers( contact some_contact ) { cout << "mobile number: " << some_contact.mobile_number; cout << ", home number: " << some_contact.home_number << endl; } int main() { contact tony; print_numbers(tony); return 0; } bu misolda, print_numbers() funksiyasi kontakt sinfining metodi emas, balki oddiy funksiyadir. print_numbers() funksiyasini contact sinfining "do'sti" deb e'lon qilish, print_numbers() funksiyasining shaxsiy ma'lumotlarga kirishining yagona sababidir. agar siz friend kalit so’zi yozilgan qatorni olib tashlasangiz, kod kompilyatsiya qilinmaydi. eslatma: …
5 / 8
inkapsulyasiya metodlari va mexanizmlari - Page 5

Хотите читать дальше?

Скачайте все 8 страниц бесплатно через Telegram.

Скачать полный файл

О "inkapsulyasiya metodlari va mexanizmlari"

5-ma’ruza. inkapsulyasiya metodlari va mexanizmlari. ob’yekt elementlariga murojaatni tashkil etish nima uchun sinf a'zolarining o'zgaruvchilarini yopiq qilish kerak? javob sifatida, o'xshashlikdan foydalanaylik. zamonaviy hayotda biz ko'plab elektron qurilmalarga kirishimiz mumkin. televizorda masofadan boshqarish pulti mavjud, uning yordamida siz televizorni yoqishingiz / o'chirishingiz mumkin. avtomobil haydash sizga ikki nuqta o'rtasida tezroq harakatlanish imkonini beradi. siz kamera yordamida suratga olishingiz mumkin. bu 3 narsaning hammasi umumiy shablondan foydalanadi: ular sizga ma'lum bir harakatni bajarish uchun oddiy interfeys (tugma, rulda va hokazo) beradi. biroq, bu qurilmalarning aslida qanday ishlashi sizdan (foydalanuvchilar sifatida) yashiringan. masofadan boshqarish pu...

Этот файл содержит 8 стр. в формате DOCX (23,2 КБ). Чтобы скачать "inkapsulyasiya metodlari va mexanizmlari", нажмите кнопку Telegram слева.

Теги: inkapsulyasiya metodlari va mex… DOCX 8 стр. Бесплатная загрузка Telegram