Mavzu: Abstrakt sinflar tashkil etish va ulardan foydalanish


Download 122.66 Kb.
bet3/4
Sana03.12.2023
Hajmi122.66 Kb.
#1798038
1   2   3   4
Bog'liq
17mustaqil ish

void Ovozi(){cout<
void Ozuqasi(){cout<
};
class Mushuk: public Jonivor
{
public:
Mushuk(char * nomi):Jonivor(nomi){};
void Ovozi(){cout<
void Ozuqasi(){cout<< Nomi<<” ozuqasi: Sut”<
};
int main()
{
Mushuk mushuk(”Baroq”);
Kuchuk kuchuk(”Tuzik”);
mushuk.Ovozi();
mushuk.Ozuqasi();
kuchuk.Ovozi();
kuchuk.Ozuqasi();
}
Bu misolning e’tiborli tomoni shundaki, Jonivor sinfida e’lon qilingan ovozi() va ozuqasi() funksiya-a’zolar abstrakt funksiyalardir. Bu funksiyalarni konkretlashtirishning imkoni yo‘q, chunki Jonivor sinfi hayvonlar shajarasini aniqlab beruvchi, umumlashtiruvchi sinf va konkret hayvon aniqlanmaguncha uning ovozining qanday bo‘lishi va nima bilan oziqlanishini bilib bo‘lmaydi. Lekin, aksariyat hayvonlar ovoz chiqaradi va albatta oziqlanadi. Shu sababli, ovozi() va oziqasi() funksiyalar umumiy bo‘lib, u Jonivor sinfida mavhum holda e’lon qilingan. Bu funksiyalar Kuchuk va Mushuk sinflarida konkretlashtirilgan (majburiy ravishda).
Dastur ishlashi natijasida ekranga quyidagi xabarlar chiqadi:
Baroq ovozi: Miyov
Baroq ozuqasi: Sut
Tuzik ovozi: Vov
Tuzik ozuqasi: Go’sht
Abstrakt sinf bilan bog‘liq yana bir o‘ziga xos holat shundan iboratki, agar abstrakt sinf konstruktori bevosita yoki bilvosita sof abstrakt funksiyani chaqirsa, nima ro‘y berishini oldindan aytishning iloji yo‘q.
Sof abstrakt funksiyalar tavsifiga “zid” ravishda bunday funksiyalar abstrakt sinfda nafaqat e’lon qilinishi, balkim aniqlanishi ham mumkin. Ular quyidagi sintaksis asosida bevosita chaqirilishi mum­kin:
<abstrakt sinf nomi>::<abstrakt funksiya nomi> (<parametrlar ro‘yxati>)
Odatda bu sintaksisdan sof virtual destruktorga ega sinflar sha­ja­rasini yaratishda foydalaniladi:

Download 122.66 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




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