Sinf va ob’yektlarning e’lon qilinishi. Konstruktor va destructor tushunchasi
Fan: Dasturlash 2
Hafta: 1
Ma’ruza: 1
Maqsad
Sinflar va ob’yektlarni tavsiflash;
Sinflarni aniqlash va ob’yektlarni yaratish;
Konstruuktorlardan foydalanib ob’yektlar yaratish;
( . ) operatori orqali a’zo funksiyalarni chaqirish va maydonlarga murojaat qilish;
1. Kirish
Katta-masshtabli dasturiy ta’minotni ishlab chiqishda ob’yektga yo’naltirilgan dasturlash samarali hisoblanadi.
O’tgan mavzularda tanlash, sikl operatorlari hamda funkisyalar, massivlar orqali masalalar yechishni qarab chiqildi. Lekin bu o’rganganlarimiz orqali katta-masshtabli dasturlarni yarata olmaymiz. Katta miqyosli dasturlarni yaratish uchun albatta ob’yektga yo’naltirilgan dasturlashdan foydalanish zarur.
2. Ob’yektlar uchun sinflarni aniqlash
Sinf ob’yektlarning xususiyatlari va metodlarini aniqlab beradi.
Ob’yekt real dunyoning bir bo’lagini namoyon qiladi. Misol uchun, talaba, stol, tugma va hattoki kredit ham ob’yekt sifatida qaralishi mimkin. Ob’yektda takrorlanmas nom, holat va hatti-harakat mavjud bo’ladi.
Ob’yektning holati(boshqacha nom bilan xususiyatlari yoki atributlari) uning ma’lumot maydonlari orqali namoyon qilinadi. Misol uchun, sirkl ob’yektining radius nomli ma’lumot maydoni mavjud. Bu maydon orqali sirkl xarakterlanadi. To’rtburchak ob’yektida esa bo’yi va eni nomli maydonlar mavjud.
2. Ob’yektlar uchun sinflarni aniqlash
Ob’yektning hatti-harakati(boshqacha nom bilan metodlari) funksiyalar orqali aniqlanadi.
2. Ob’yektlar uchun sinflarni aniqlash
UML diagramma
2. Ob’yektlar uchun sinflarni aniqlash
3. Misol: Sinflarni aniqlash va ob’yektlar yaratish
Sinflar ob’yektlar uchun muhit va ob’yektlar sinflar orqali yaratiladi.
Listing 9.1 da ob’yektlar va sinflarga oid dastur keltitrilgan. Uchta sirkl ob’yektlari yaratiladi va radiuslari 1.0, 25 va 125 bo’lgan sirkllarning radiuslari va yuzalari ekranga chiqariladi. Ikkinchi sirklning radiusini 100 ga o’zgartirib, uning yangi radiusi va yuzasini ekranga chiqariladi.
Listing 9.1 TestCircle.cpp
Listing 9.1 TestCircle.cpp
Listing 9.1 TestCircle.cpp
Natija
4. Konstruktorlar
Konstruktor ob’yekt yaratilayotganda chaqiriladi.
Konstruktorlar uchta o’ziga xoslikka ega bo’lgan funksiyaning maxsus turi. Bu o’ziga xosliklar quyidagilar:
Konstruktorlar sinf nomi bilan bir xil bo’lishi shart.
Konstruktorlar qiymat qaytarmaydi, void ham bo’lmaydi.
Konstruktorlar ob’yekt yaratilayotganda chaqiriladi. Konstruktorlar ob’yektlarni initsializatsiya qilishda muhim rol o’ynaydi.
4. Konstruktorlar
Boshqa funksiyalar singari konstruktorlar ham qayta yuklanadi. Konstruktor oldidan void kalit so’zini qo’yish umumiy xatolikka olib keladi. Misol uchun,
void Circle()
{
}
Konstruktorlar ma’lumot maydonlarni initsializatsiya qiladi.
4. Konstruktorlar
Sinfda konstruktor argumentlarsiz kelishi ham mumkin. Bunday konstruktorlarga argumentsiz konstruktorlar deyiladi.
Sinf konstruktorsiz ham bo’lishi mumkin. Bu holatda argumentsiz konstruktor bo’sh tana bilan avtomatik ravishda aniqlanadi. Bunday konstruktor “jimlik qoidasiga ko’ra” konstruktor deyiladi(default constructor).
4. Konstruktorlar
Ma’lumotlar maydoni konstruktorda initsializatsiyalovchi ro’yxat(initializer list) orqali initsializatsiyalanadi. Sintaksisi quyidagicha:
Sinf ob’yektlarning xususiyatlarini saqlash uchun ma’lumot maydonlari, ob’yektlarni yaratish uchun konstruktorlarni va ularning funksiyalarini aniqlaydi.
Konstruktorlar sinf nomi bilan bir xil bo’lishi shart.
Argumentga ega bo’lmagan konstruktor non-arg konstruktor deyiladi.
Sinfning o’zi ham ma’lumot turi hisoblanadi. Siz undan ob’yektlarni aniqlash va yaratishda foydalanishingiz mumkin.
Olingan xulosalar
6. Ob’yekt sinfning nusxasi. Sinf a’zolariga murojaat ( . ) operatori orqali amalga oshiriladi.
7. Ob’yekt xususiyatlari ma’lumot maydonlari orqali namoyon qilinadi.
8. Ob’yektning hatti-harakatlari funksiyalar to’plami orqali aniqlanadi.
9. Ma’lumot maydonlari birlamchi qiymatlarga ega bo’lmaydi. Ular konstruktorlar orqali initsializatsiya qilinishi kerak.