R. A. Ro‘ziyev, U. M. Mirsanov, F. J. Toxirov, L. S. Isroilova, H. N. Arziqulov


Download 1.27 Mb.
bet42/45
Sana14.10.2023
Hajmi1.27 Mb.
#1703549
1   ...   37   38   39   40   41   42   43   44   45
Bog'liq
C qo`llanma 29.06

Sinflar
Sinf – bu bir-biri bilan bog‘langan, o‘zgaruvchilar va metodlar to‘plamidir. Sinflarga ko‘pgina misollar keltirish mumkin. Masalan, kompyuterni monitor, klaviatura, tizimli blok, sichqoncha va boshqa qismlardan tashkil topgan qurilmalar yoki yoqish, o‘chirish, sozlash imkoniyatlariga ega bo‘lgan obyekt deb tasavvur qilish mumkin. Kompyuter o‘zida turli ehtiyot qismlarni va ularni funksiyalarini mujassamlashtiradi. Sinfda barcha ma’lumotlar bitta obyektda yig‘ilgan, ularga osongina murojaat qilish, o‘zgartirish va ko‘chirish mumkin. Sinf bilan ishlovchi dasturiy qismlar, ya’ni, mijozlar obyektdan foydalanishi mumkin. Sinf o‘zgaruvchilarning ixtiyoriy kombinastiyasidan, shuningdek, boshqa sinflar tiplaridan iborat bo‘lishi mumkin. Sinfdagi o‘zgaruvchilar o‘zgaruvchi elementlar yoki xossalar deyiladi. O‘zgaruvchi elementlar faqatgina o‘zlarining sinflariga tegishlidir. Monitor va klaviatura kompyuterning qanday tarkibiy qismi bo‘lsa, o‘zgaruvchi – elementlar ham sinfning shunday tarkibiy qismidir.
Sinfdagi funksiyalar odatda o‘zgaruvchi elementlar ustida biror bir amal bajaradilar. Ular funksiya elementlari yoki sinf metodlari deb aytiladi. Masalan. kompyuter sinfi metodlari qatoriga Yoqish() va O‘chirish() larni kiritish mumkin. Bundan tashqari, kompyuter sinfi kompyuterning turi va parametrlarini ifodalovchi o‘zgaruvchi – elementlarga ega bo‘ladi. Shuningdek, bu sinfning funksional qismi Hisoblash(), Chop_qilish(), Yozish() metodlaridan iborat bo‘lishi mumkin.
Sinfni e’lon qilish
Sinfni e’lon qilish uchun class kalit so‘zi, figurali qavs, undan so‘ng xossalar va metodlar ro‘yxati ishlatiladi. Sinfni e’lon qilish yopiluvchi figurali qavs va nuqtali vergul orqali yakunlanadi. Masalan, matematikadagi kompleks sonlar uchun sinf yaratamiz. Buning uchun dasturning e’lonlar qismiga quyidagi dastur kodi yoziladi:
class kompleks {
double haqiqiy; double mavhum;
void summ();
}
Kompleks sinfini e’lon qilishda xotiradan joy band qilinmaydi. E’lon qilish, kompilyatorga Kompleks sinfini mavjudligini hamda unda qanday qiymatlar saqlanishi (haqiqiy, mavhum) va u qanday amallarni bajarishi (summ() metodi) haqida xabar beradi. Bundan tashqari, uni e’lon qilish orqali kompilyatorga Kompleks sinfining o‘lchami, ya’ni, har bir Kompleks sinfi obyekti uchun kompilyator qancha joy ajratishi lozimligi haqida ham ma’lumot beradi. Masalan, misolda butun qiymat uchun to‘rt bayt talab qilinsa, Kompleks sinfi obyektlari xotiradan sakkiz bayt joy egallaydi (haqiqiy o‘zgaruvchisi uchun to‘rt bayt, mavhum o‘zgaruvchisi uchun to‘rt bayt). summ() metodi xotiradan joy ajratishni talab qilmaydi.
Obyektni e’lon qilish
C++ dasturlash tilida yangi turdagi obyekt xuddi oddiy butun sonli o‘zgaruvchi kabi aniqlanadi. Masalan, ixtiyoriy butun sonli o‘zgaruvchi quyidagicha aniqlanadi: unsigned int a_max // ishorasiz butun sonni aniqlaydi. Kompleks sinfidagi obyekt esa quyidagicha aniqlanadi:
kompleks a // kompleks obyektini e’lon qilish.
Bu dasturiy kodlarda unsigned int tipidagi a_max nomli o‘zgaruvchi va kompleks sinfining a nomli obyekti aniqlandi.
Ko‘pgina hollarda sinf va obyekt tushunchalarini ishlatishda dasturchilar chalkashlikka yo‘l qo‘yiladi. Shuning uchun, obyekt sinfni biror bir nusxasi ekanligini yana bir bor ta’kidlash joiz.
Sinf a’zolariga murojaat qilish
C++ dasturlash tilida kompleks sinfining obyektini aniqlaganimizdan so‘ng, bu obyektning elementlariga murojaat qilish zaruriyati tug‘ilishi mumkin. Buning uchun bevosita murojaat (.) operatori qo‘llaniladi. Masalan, kompleks obyektining a o‘zgaruvchi - elementiga 50 sonini o‘zlashtirmoqchi bo‘lsak quyidagi dastur kodi yozilishi lozim: kompleks.a = 50;
summ() metodini chaqirish uchun esa kompleks.summ(); kodini yozish talab etiladi.
Sinf elementlariga qiymat o‘zlashtirish
C++ dasturlash tilida berilganlar tipiga qiymat o‘zlashtirilmaydi. Sinfda faqatgina o‘zgaruvchilarga qiymat beriladi. Sinfda qiymatlarni quyidagi int=ab tartibda e’lon qilish xatolik hisoblanadi. Bunda kompilyator int tipiga qiymat o‘zlashtirilishi xatolik ekanligi haqida xabar beradi. Shuningdek, quyidagi ko‘rinishda kompleks.haqiqiy = 5 qiymat o‘zlashtirish ham xatolik hisoblanadi.
Agarda kompleks obyekt bo‘lmasdan sinf bo‘lsa, yuqoridagi ifodani ham kompilyator xato deb hisoblaydi. O‘zlashtirish amalini bajarishda xatolikka yo‘l qo‘ymaslik uchun oldin kompleks sinfiga tegishli a obyektini hosil qilish va uning haqiqiy maydoniga qiymat berish lozim. Masalan, 5 qiymat yozish mumkin:
kompleks a;
a.haqiqiy=5;
Sinf a’zolariga murojaat qilish imkonini chegaralash
C++ dasturlash tilida sinfni e’lon qilishda bir nechta kalit so‘zlardan foydalaniladi. Ulardan eng muhimlari public (ochiq) va private (yopiq) kalit so‘zlari bo‘lib, ular orqali obyektning elementlariga murojaat qilish imkoniyati chegaralanadi.
Sinfning barcha metodlari va xossalari boshlang‘ich holda yopiq deb e’lon qilinadi. Yopiq elementlarga faqatgina, shu sinfning metodlari orqaligina murojaat qilish mumkin. Obyektning ochiq elementlariga esa dasturdagi barcha funksiyalar murojaat qilishlari mumkin. Sinf elementlariga murojaat qilish imkonini belgilash juda muhim xususiyat bo‘lib, ushbu masalani yechishda tajribaga ega bo‘lmagan dasturlarchilar qiyinchiliklarga duch keladilar. Bu holatni batafsilroq tushuntirish uchun mavzuning boshida keltirilgan masalamizga qaytamiz:
class kompleks {
double haqiqiy; double mavhum;
void summ();
}
Bu tarzda sinfni e’lon qilishda haqiqiy va mavhum maydonlar hamda, summ() metodi ham yopiq element sifatida aniqlanadi. Yuqoridagi tartibda kompleks sinfi e’lon qilingan bo‘lsa va bu sinf nusxasi bo‘lgan obyektning haqiqiy elementiga asosiy funksiya orqali murojaat qilsak, kompilyator xatolik ro‘y berganligi haqida xabar beradi:
kompleks a;
a.haqiqiy = 5 // Xatolik!
// Yopiq a’zoga murojaat qilish mumkin emas.
Kompleks sinfi elementlariga dasturning boshqa obyektlari tomonidan murojaat qilish imkonini hosil qilmoqchi bo‘lsak, uni public kalitli so‘zi orqali amalga oshiriladi:
class kompleks {
public:
double haqiqiy; double mavhum;
void summ();
}
Bunda public kalit so‘zi orqali sinfdagi haqiqiy, mavhum, summ() ochiq elementga o‘tkaziladi.
Yuqorida bayon qilingan fikrlarni to‘g‘ri ekanligini tekshirib ko‘rish uchun quyidagi misolni ko‘rib chiqamiz.

Download 1.27 Mb.

Do'stlaringiz bilan baham:
1   ...   37   38   39   40   41   42   43   44   45




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