• Hisobot shakli
  • Sinflar va obyektlar. Konstruktor va destruktor. Sinf usullari Ishning maqsadi




    Download 26.68 Kb.
    bet1/3
    Sana14.04.2023
    Hajmi26.68 Kb.
    #51195
      1   2   3
    Bog'liq
    Sinflar va obyektlar
    11 mavzu, Referat 2024 ruscha andijon, Alijon optik aloqa tizimlari 6

    Sinflar va obyektlar. Konstruktor va destruktor. Sinf usullari
    Ishning maqsadi

    1. C++ dasinf yaratish va foydalanish bilan tanishish.

    2. Turli sinflarni yaratish (Borland C++, Dev C++, Borland Builder ).

    3. Sinf o‘zgaruvchilari va funksiyalarini yaratish bilan tanishish.

    4. Sinflardan foydalanishni o‘rganish.

    Topshiriq

    1. Har bir talaba jurnaldagi tartib raqami bo‘yicha vazifalarning sinfini yaratadi va dasturda ishlatishi lozim.

    2. Har bir vazifani bajarishda foydalanilgan o‘zgaruvchi va funksiyalar haqida hisobotda ko‘rsatish lozim.

    3. Hisobot shaklida oldin vazifa, uni bajarishda foydalanilgan funksiyalar, dastur matni va bajarishdan hosil bo‘lgan sinflarni keltirish lozim.

    4. 7-laboratoriyada beriladigan barcha vazifalarni bitta hisobot shaklida topshiring.

    Hisobot shakli

    1. Laboratoriya ishining nomi.

    2. Laboratoriya ishidagi topshiriq raqami

    3. Topshriqni bajarishda foydalanilgan funksiyalar tavsifi.

    4. Topshiriq kodi.

    5. Topshiriq natijasi (bu laboratoriya ishi uchun grafik, shakl va animasiya).

    6. Dasturning elektron versiyasi (Albatta bu dasturlar kompyuterda o‘qituvchiga ko‘rsatiladi. O‘qituvchini talab va takliflariga ko‘ra dastur to‘g‘rilanadi va so‘ngra hisobot tayyorlanadi.).

    Sinflar va sinf a’zolari
    Yangi tip sinfni e’lon qilish bilan tuziladi. Sinf - bu bir – biri bilan funksional orqali bog‘langan o‘zgaruvchilar va metodlar to‘plamidir. Sinflarga amaliyotdan ko‘pgina misollar keltirish mumkin. Masalan, avtomabilni g‘ildirak, eshik, o‘rindiq, oyna va boshqa qismlardan tashkil topgan kollekstiya yoki haydash tezligini oshirish, to‘xtatish, burish imkoniyatlariga ega bo‘lgan obyekt deb tasavvur qilish mumkin. Avtomobil o‘zida turli ehtiyot qismlarni va ularni funksiyalarini inkapsulyastiya qiladi. Avtomobil kabi sinfda ham inkapsulyastiya qator imkoniyatlarni beradi. Barcha ma’lumotlar bitta obyektda yig‘ilgan va ularga osongina murojaat qilish, ularni o‘zgartirish va ko‘chirish mumkin. Sizning sinfingiz bilan ishlovchi dasturiy qismlar, ya’ni mijozlar sizning obyektingizdan, uning qanday ishlashidan tashvishlanmasdan, bemalol foydalanishlari mumkin.
    Sinf o‘zgaruvchilarning ixtiyoriy kombinastiyasidan, shuningdek boshqa sinflar tiplaridan iborat bo‘lishi mumkin. Sinfdagi o‘zgaruvchilar o‘zgaruvchi – a’zolar yoki xossalar deyiladi. Sar sinfi o‘rindiq, radiopriyomnik, shina va boshqa o‘zgaruvchi - a’zolardan iborat. O‘zgaruvchi – a’zolar faqatgina o‘zlarining sinflarida yotadilar. G`ildirak va motor avtomobilning qanday tarkibiy qismi bo‘lsa, o‘zgaruvchi – a’zolar ham sinfning shunday tarkibiy qismidir.
    Sinfdagi funksiyalar odatda o‘zgaruvchi a’zolar ustida biror bir amal bajaradilar. Ular funksiya – a’zolar yoki sinf metodlari deb aytiladi. Mashina sinfi metodlari qatoriga Haydash() va Tuxtatish() metodlari kiradi. Mushuk sinfi hayvonni yoshi va og‘irligini ifodalovchi o‘zgaruvchi – a’zolarga ega bo‘lishi mumkin. Shuningdek, bu sinfning funksional qismi Uxlash(), Miyovlash(), SichqonTutish() metodlaridan iborat bo‘ladi.
    Funkstiya – a’zolar ham o‘zgaruvchi a’zolar singari sinfda yotadi. Ular o‘zgaruvchi a’zolar ustida amallar bajaradi va sinfni funksional imkoniyatlarini aniqlaydi.
    Sinfni e’lon qilish
    Sinfni e’lon qilish uchun class kalitli so‘zi, undan so‘ng ochiluvchi figurali qavs, so‘ng xossalar va metodlari ro‘yxati ishlatiladi. Sinfni e’lon qilish yopiluvchi figurali qavs va nuqtali vergul orqali yakunlanadi. Masalan, Mushuk sinfini quyidagicha e’lon qilish mumkin.
    class Mushuk
    {
    unsigned int itsYosh ;
    unsigned int itsOgirlik ;
    void Miyovlash()
    }
    Mushuk sinfini e’lon qilishda xotira zaxiralanmaydi. E’lon qilish, kompilyatorga Mushuk sinfini mavjudligini, hamda unda qanday qiymatlar saqlashi mumkinligi (itsYosh, itsOgirlik) va u qanday amallarni bajarishi mumkinligi (Miyovlash() metodi) haqida xabar beradi. Bundan tashqari, bu e’lon qilish orqali kompilyatorga Mushuk sinfining o‘lchami, ya’ni har bir Mushuk sinfi obyekti uchun kompilyator qancha joy ajratishi lozimligi haqida ham ma’lumot beradi. Masalan, joriy misolda butun qiymat uchun to‘rt bayt talab qilinsa, Mushuk sinfi obyekti o‘lchovi sakkiz bayt bo‘ladi.
    (itsYosh o‘zgaruvchisi uchun to‘rt bayt, itsOgirlik o‘zgaruvchisi uchun to‘rt bayt). Miyovlash() metodi xotiradan joy ajratishni talab qilmaydi.
    Obyektni e’lon qilish
    Yangi turdagi obyekt xuddi oddiy butun sonli o‘zgaruvchidek aniqlanadi. Haqiqatan ham ixtiyoriy butun sonli o‘zgaruvchi quyidagicha aniqlanadi:
    unsigned int MyVariable
    // ishorasiz butun sonni aniklaymiz
    Cat sinfidagi obyekt esa quyidagicha aniqlanadi:
    Mushuk Frisky // Mushuk obyektini aniqlaymiz.
    Bu dasturiy kodlarda unsigned int tipidagi MyVariable nomli o‘zgaruvchi va Mushuk sinfining Friskynomli obyekti aniqlandi.
    Ko‘pgina hollarda sinf va obyekt tushunchalarini ishlatishda chalkashlikka yo‘l qo‘yiladi. Shuning uchun, obyekt sinfning biror bir ekzemplyari (nusxasi)ekanligini yana bir bor ta’kidlash joiz.
    Sinf a’zolariga murojaat qilish imkoni
    Mushuk sinfining real obyektini aniqlaganimizdan so‘ng, bu obyektning a’zolariga murojaat qilish zaruriyati tug‘ilishi mumkin. Buning uchun bevosita murojaat (.) operatori qo‘llaniladi. Masalan, Frisky obyektining Weighto‘zgaruvchi - a’zosiga 50 sonini o‘zlashtirmoqchi bo‘lsak quyidagi jumlani yozishimiz lozim.
    Fresky.Weight=50;
    Meow()metodini chaqirish uchun esa
    Frisky.Meow();
    jumlasini yozish lozim.
    Qiymat sinfga emas obyektga o‘zlashtiriladi
    C++ tilida berilganlar tipiga qiymat o‘zlashtirilmaydi. Qiymat faqatgina o‘zgaruvchilarga beriladi. Masalan, quyidagi yozuv noto‘g‘ridir:
    Int=s // noto‘g‘ri
    Kompilyator int tipiga qiymat o‘zlashtirilishi xatolik ekanligi haqida xabar beradi. Xuddi shu nuqtai – nazardan quyidagi yozuv ham noo‘rindir:
    Cat.itsYosh= 5 // noto‘g‘ri
    Agarda Mushuk obyekt bo‘lmasdan sinf bo‘lsa, yuqoridagi ifodani ham kompilyator xato deb hisoblaydi. O‘zlashtirish amalini bajarishda xatolikka yo‘l qo‘ymaslik uchun oldin Mushuk sinfiga tegishli Friskyobyektini hosil qilish va uning ItsYosh maydoniga 5qiymatini berish lozim.
    Mushuk Frisky;
    Frisky.itsYosh=5;
    Sinf a’zolariga murojaat qilishimkonini chegaralash.
    Sinfni e’lon qilishda bir nechta kalit so‘zlardan foydalaniladi. Ulardan eng muhimlari publis (ochiq) va private(yopiq) kalit so‘zlari bo‘lib, ular orqali obyektning a’zolariga murojaat qilish imkoniyati chegaralanadi.
    Sinfning barcha metodlari va xossalari boshlang‘ich holda yopiq deb e’lon qilinadi. Yopiq a’zolarga faqatgina shu sinfning metodlari orqaligina murojaat qilish mumkin. Obyektning ochiq a’zolariga esa dasturdagi barcha funksiyalar murojaat qilishlari mumkin. Sinf a’zolariga murojaat qilish imkonini belgilash juda muhim xususiyat bo‘lib, bu masalani yechishda uncha katta tajribaga ega bo‘lmagan dasturlarchilar ko‘pincha qiyinchiliklarga duch keladilar. Bu holatni batafsilroq tushuntirish uchun mavzuning boshida keltirilgan masalamizga qaytamiz.
    class Mushuk
    {
    unsigned int itsYosh;
    unsigned int itsOgirlik;
    void Miyovlash();
    }
    Bu tarzda sinfni e’lon qilishda itsYosh va itsOgirlik maydonlari ham, Miyovlash() metodi ham yopiq a’zo sifatida aniqlanadi. Dasturda yuqoridagi tartibda Mushuk sinfi e’lon qilingan bo‘lsa va bu sinf ekzemplyari bo‘lgan obyektning itsYosh a’zosiga main() funkstiyasi tanasidan turib murojaat qilsak kompilyator xatolik ro‘y berganligi haqida xabar beradi.
    Mushuk Baroq;
    Baroq.itsYosh = 5 // Xatolik!
    // Yopik a’zoga murojaat kilish mumkin emas.
    Mushuk sinfi a’zolariga dasturning boshqa obyektlari tomonidan murojaat qilish imkonini hosil qilmoqchi bo‘lsak, uni public kalitli so‘zi orqali amalga oshiramiz.
    class Mushuk
    {
    public:
    unsigned int itsYosh;
    unsigned int itsOgirlik;
    void Meow( );
    }
    Endi publickalit so‘zi orqali sinfning barcha a’zolari (itsYosh, itsOgirlik, Miyovlash()) ochiq a’zo bo‘ldi.
    Konstruktorlar va dеstruktorlar
    Butun sonli o‘zgaruvchini aniqlashning ikki хil yo‘li bor. Birinchisi, oldin o‘zgaruvchini aniqlash, kеyin esa unga biror bir qiymat o‘zlashtirishdir. Masalan,
    int a; // o‘zgaruvchini aniqlash
    ........ // bu еrda boshqa ifodalar bor
    a=7; // o‘zgaruvchiga qiymat o‘zlashtiramiz.

    Ikkinchisi, o‘zgaruvchi aniqlanishi bilan birga unga darhol qiymat o‘zlashtiriladi. Masalan,


    int a=7; //o‘zgaruvchini e’lon qilamiz
    //va unga qiymat o‘zlashtiramiz.
    Qiymat bеrish amali o‘zgaruvchi aniqlanishi bilan unga boshlang‘ich qiymat o‘zlashtirilishini anglatadi. Kеyinchalik, bu o‘zlashtirilgan qiymatni o‘zgartirishingiz ham mumkin.
    Sinfning o‘zgaruvchi–a`zosiga qanday qiymat o‘zlashtirildi? Buning uchun sinfda konstruktor dеb ataluvchi maхsus funksiya – a`zo ishlatiladi. Zaruriy vaqtda konstruktor bir nеchta paramеtrni qabul qiladi. Lеkin hеch qanday tipdagi qiymat qaytarmaydi. Konstruktor – bu sinf nomi bilan ustma – ust tushadigan sinf mеtodidir.
    Sinfda konstruktorni e’lon qilinishi bilan dеstruktorlar ham aniqlanishi lozim. Agarda konstruktor sinf ob`еktini tuzish va uning o‘zgaruvchi – a’zolariga qiymat bеrish vazifasini bajarsa, dеstruktor mavjud ob`еktning хotiradan o‘chiradi. Dеstruktorlar sinf nomi oldiga tilda (~) bеlgisini qo‘yish orqali aniqlanadi. Dеstruktorlar hеch qanday argumеnt qabul qilmaydi va hеch qanday qiymat qaytarmaydi.

    Boshlang‘ich bеrilgan konstruktor va dеstruktorlar


    Agarda siz konstruktor yoki dеstruktorni aniqlamasangiz, siz uchun bu ishni kompilyatorning o‘zi bajaradi. Standart konstruktor va dеstruktorlar birorta argumеnt qabul qilmaydi va hеch qanday amal bajarmaydi.

    Download 26.68 Kb.
      1   2   3




    Download 26.68 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Sinflar va obyektlar. Konstruktor va destruktor. Sinf usullari Ishning maqsadi

    Download 26.68 Kb.