Sinf tushunchasi va sinflarning e’lon qilinishi


Ma’lumotlar maydoni inkapsulyatsiyasi


Download 1.06 Mb.
bet3/12
Sana14.01.2023
Hajmi1.06 Mb.
#1093162
1   2   3   4   5   6   7   8   9   ...   12
Bog'liq
Yakuniy dasturlash nazariy savollarga javaoblar — копия

5. Ma’lumotlar maydoni inkapsulyatsiyasi (private, get funksiya, set funksiya);Ma’lumotlar maydoni xavfsizligi sinf ma’lumotlarini himoyalaydi va xizmatlarini soddalashtiradi. 1.1-kodli ro`yxatda berilgan Circle sinfida berilgan radius ma’lumotlar maydonini to`g`ridan-to`g`ri o`zgartirish mumkin (Masalan, circle1.radius = 5). Ikki sababga ko`ra bu juda yaxshi amaliyot:

  • Birinchidan, ma’lumotlarga o`zgartirish kiritish mumkin;

  • Ikkinchidan, bu sinfning qayta sozlanishga qulayligini va xatoliklarga bardoshliligini oshiradi.Tasavvur qiling, boshqa dasturlar foydalangandan keyin, radius qiymati manfiy bo`lmasligi uchun Circle sinfiga o`zgartirish kiritmoqchisiz. Siz nafaqat Circle sinfini o`zgartirishingiz kerak, balki Circle sinfi ishlatadigan dasturlarni ham o`zgartirishingiz kerak bo`ladi. Bu mijozlarning radiusni to`g`ridan-to`g`ri o`zgartira olishlari bilan bog`liq (masalan, myCircle.radius = -5).To`g`ridan-to`g`ri xususiyatlarni o`zgartirishning oldini olish uchun esa private kalit so`zidan foydalanishimiz lozim. Bu ma’lumotlar maydoni inkapsulyatsiyasi deb nom olgan.

  1. Ko‘rsatkichlardan funksiya argumenti sifatida foydalanish (Kalit so’zlar: funksiya, argument, pointer, new, obyektni uzatish, funksiyaga uzatish )

O`zgarmas ko`rsatkich o`zgarmas xotira katakchasini ko`rsatadi, ammo xotira katakchasidagi faol qiymat o`zgartirilishi mumkin.Biz const kalit so`zidan foydalanib o`zgarmaslarni e’lon qilishni o`rgandik. O`zgarmas bir marta e’lon qilinadi va qiymatini o`zgartirmaydi. Bundan tashqari biz o`zgarmas ko`rsatkichni e’lon qilishimiz mumkin. Misol uchun:
double radius = 5;
double* const p = &radius;
Bu yerda p – o`zgarmas ko`rsatkich. U bitta ko`rsatma satrining o`zida ham e’lon qilinishi va ham qiymat bilan ta’minlanishi lozim. Keyinchalik unga yangi manzilni ta’minlab bo`lmaydi. Garchi p o`zgarmas bo`lsada, p tomonidan ko`rsatilgan ma’lumot o`zgarmas emas. Uni o`zgartirishimiz mumkin. Masalan, quyidagi ko`rsatma satrida radiusning qiymati 10 ga o`zgartiriladi:
*p = 10;
Xo`sh, havolalangan ma’lumotni o`zgarmas sifatida e’lon qila olamizmi? Ha. Buning uchun quyidagicha ko`rinishda, ma’lumot turi oldidan const – kalit so`zini qo`shib qo`yishimiz kerak bo`ladi:

Bunday holatda ko`rsatkich va u ko`rsatgan ma’lumotlar ham o`zgarmas sanaladi. Agar biz ko`rsatkichni
const double* p = &radius;ko`rinishida e’lon qilsak, ko`rsatkich o`zgarmas emas, lekin ko`rsatkich ko`rsatgan ma’lumot o`zgarmas bo`ladi.




  1. Download 1.06 Mb.

    Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   ...   12




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling