Mavzu: Abstrakt sinflar tashkil etish va ulardan foydalanish
Download 122.66 Kb.
|
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 mumkin: <abstrakt sinf nomi>::<abstrakt funksiya nomi> (<parametrlar ro‘yxati>) Odatda bu sintaksisdan sof virtual destruktorga ega sinflar shajarasini yaratishda foydalaniladi: Download 122.66 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling