Polimorfizm
Polimorfizm nima?
Polimorfizm – bu bitta interfeys, bir nechta metod. Ya’ni metodlarni overload yoki override ko’rinishidir. Polimorfizm ikki xil ko’rinishda namoyon bo’ladi
• compile time;
• run time;
Polimorfizm
Virtual funksiya Virtual funksiya asos sinf a’zosi hisoblanadi va voris sinfda qayta bir xil parametr asosida e’lon qilinadi. virtual funksiya yaratish uchun, asos sinf ichida funksiya yaratilishi jarayonida virtual kalit so’zidan foydalaniladi. Asos sinfda virtual funksiya e’lon qilingan bo’lsa, voris sinfda ushbu funksiya qayta e’lon qilinishi mumkin va o’z xususiyatlaridan kelib chiqqan holda funksiya tanasi boshqacha yozilishi mumkin. Ushbu qayta e’lonqilingan funksiyaning barcha parametrlari asos sinfdagi funksiya parametrlari bilan bir xil bo’lishi lozim, misol uchun: funksiya qaytarish tipi, argumentlar soni va tipi. Quyidagi misolda vitual funksiyalar qanday e’lon qilinishi va undan foydalanish ko’rsatilgan
Komponentlar (tarkibiy qismlar) Komponentlar ko‘p o‘rinda, C++standart sinflariga qaraganda, yuqoriroq darajadagi Inkapsulyatsiyalashga erishadilar. Buni tugmachaga ega bo‘lgan dialogni ishlab chiqish kabi oddiy misolda ko‘rib chiqamiz. Windows uchun namunaviy C++dasturida tugmachani «sichqoncha» bilan bosish natijasida WM_LBUTTONDOWN xabarining generatsiyasi sodir bo‘ladi. Bu xabarni dastur yo switch operatorida, yoki chaqiriqlar jadvali (RESPONCE_TABLE) ning tegishli satrida «tutib olish»i, keyin esa ushbu xabarga javob protsedurasiga uzatishi kerak. 133 C++Builder o‘zlashtirilishi qiyin bo‘lgan bu kabi dasturlash o‘yinlariga chek qo‘ydi. Komponenta tugmachasi avvaldanoq unga OnClick voqeasi bilan bosishga javob beradigan qilib dasturlangan. Bu o‘rinda talab qilinayotgan narsa - tayyor metodni tanlab olish (yoki o‘zinikini yozish) xamda Ob’ektlar Inspektori yordamida berilgan voqea-xodisaga ishlov bergichga kiritish. Komponentli sinflarni e’lon qilish C++Builder tarkibiga kiradigan Vizual Komponentalar Kutubxonasi - VCL sinflarining ilgarilovchi e’lonlari _declspec modifikatoridan foydalanadi: _declspec() Bu kalit-so‘z, nafaqat bevosita modifikatsiyalanayotgan e’lon oldidan, balki e’lonlar ro‘yxatining to‘g‘ri kelgan yerida paydo bo‘lishi mumkin, bunda spetsifikator quyidagi qiymatlardan birini qabul qiladi: delphiclass - u TObject sinfiga tegishli VCL ning bevosita yoki bilvosita xosilalarining ilgarilovchi e’loni uchun qo‘llanadi. U VCL ning RTTI ,konstruktorlar, destruktor va istisnolar bilan muomalasida muvofiqlik qoidalarini belgilaydi. delphireturn - u Currency, AnsiString, Variant, TDateTime va Set sinflariga tegishli VCL ning bevosita yoki bilvosita xosilalarining ilgarilovchi e’loni uchun qo‘llanadi. U VCL ning parametrlar va a’zoqfunksiyalarning qaytarilayotgan qiymatlari bilan muomalasida muvofiqlik qoidalarini belgilaydi. Pascal implementation tarkibli sinf Ob’ektli Pascal tilida ishga tushirilganini ko‘rsatadi. VCL sinf quyidagi cheklanishlarga ega:
Virtual bazaviy sinflarga vorislik qilish man etilgan.
Tarkibli sinflarning o‘zlari vorislik uchun bazaviy sinf sifatida xizmat qila olmaydi.
Tarkibli ob’ektlar uyumning dinamik xotirasida new operatori yordamida yaratiladi
Foydalangan Adabiyotlar
1. T.X. Xoлматов, Н.И. Taлаков . Амалий математика, дастурлаш ва компьютернинг дастурий таъминоти: лаборатория ишлари.T-2000.
1. E.Р.Алексеев, O.В.Чеснакова Turbo Pascal 7.0:самоучитель.M-2005.
2. A.Файсман Профессиональное программирование на Turbo Pascal . Info&F-Infomix-Koinko-1992.
3. В.Ф.Шангин, Л.M.Поддубная Программирование на языке “Pascal”.M1991.
Foydalanilgan adabiyotlar. 1. C++ tilida programmalash asoslari, Sh. F. Madrahimov, S. M. Gaynazarov, Toshkent – 2009. 2. Решение сложных и олимпиадных задач по программированию, Долинский М. С., Санкпетербург – 2006. 3. http://acm.tuit.uz. 4. http://algo.urgench-tuit.uz. 5. http://cplusplus.com.
Do'stlaringiz bilan baham: |