O‘zbekiston respublikasi oliy va o‘rta maxsus ta’lim vazirligi tоshkеnt dаvlаt iqtisоdiyot universitеti


 Polimorfizm. Ko‘plik vorislik. Interfeyslar


Download 1.96 Mb.
Pdf ko'rish
bet45/83
Sana08.11.2023
Hajmi1.96 Mb.
#1757524
1   ...   41   42   43   44   45   46   47   48   ...   83
Bog'liq
Obyektga yo`naltirilgan dasturlash tillari

 
8.5. Polimorfizm. Ko‘plik vorislik. Interfeyslar 
Bu sinf ketma-ket(to‘g‘ri-to‘g‘ri) baza sinfi, agar u sinflarni aniqlashda baza 
ro‘yxatidan chiqadi.Agar ba’zi hollarda A sinf V sinfning bazasini ifodalasa va S 
uchun V baza bor, unda V sinf S uchun to‘g‘ridan-to‘g‘ri bazasi hisoblanadi, A sinf 
esa S sinf uchun to‘g‘ri bo‘lmagan baza bo‘lib g‘isoblanadi. xa komponentiga 


74 
murojat qilganda A sinfga kiruvchi va V va S sinflarga izchil tarzida voris bo‘ladi,S 
sinfga A::xa tarzida, V::xa tarzida e’lon qilish mumkin. Ikkala konstruksiya A 
sinfning elementi xa ga murojat qilishni ta’minlaydi. Pastda sinflarni tasvirlashda 
qabul qilingan bazalar ishlab chiqilgan. Хuddi shu tartibda ularni kompilyator e’lon 
qilishini ko‘ramiz va ularni teksti dasturda joylashadi. 
Sinflar bir nechta ketma-ket sinflardan tashkil topishi mumkin, sinf bazasida 
ixtiyoriy son yo‘qolishi mumkin, misol uchun, 
class X1 { ... }; 
class X2 { ... }; 
class X3 { ... }; 
class Y1: public X1, public X2, public X3 { ... }; 
Bir necha to‘g‘ri baza sinflari mavjud bo‘lib, ular ko‘plik vorislari deb 
nomlanadi. 
Ko‘plik vorislarida ketma-ket bazada hech qanday sinf bittadan ortiq ishlatilishi 
mumkin emas. Bitta sinf to‘g‘ri bo‘lmagan sinfda bir necha marta ishlatilishi 
mumkin: 
class X { ...; f () ; ... }; 
class Y: public X { ... }; 
class Z: public X { ... }; 
class D: public Y, public Z { ... }; 
Bu misolda Х sinf D sinfning ikki marta o‘rtacha vorisi bo‘ladi. Bizning 
misolimizda ikkita qiymati qatnashadi, va shuning uchun bir qiymatli bo‘lmagan D 
sinfning obyekti Х sinfning aniq komponentiga murojat qulayligini bartaraf qilish 
kerak, uni to‘liq kvalifikatsiyasi D::Y::X::f() yoki D::Z::X::f(). D sinfning obyekti 
ichida sodda ko‘rinish Y::X::f() yoki Z::X::f(), lekin bu ham kvalifikatsiyani 
mazmunidir. 
Bir xil nOYDagi obyektlarni bartaraf qilishda to‘g‘ri bo‘lmagan sinf bazalari 
ko‘plik vorislari, bu sinf bazalari virtual deb e’lon qilinadi. Buning uchun sinf 
bazalari ro‘yxatida oldingi sinf nomini virtual kalit so‘zini ishlatish kerak. Misol 
uchun Х sinfi virtual baza sinfi bo‘la oladi bunaqa ko‘rinishda yozilganda: 


75 
class X { ... f() ; ... }; 
class Y: virtual public X { ... }; 
class Z: virtual public X { ... }; 
class D: public Y, public Z { ... };
Endi D sinf Х dan faqat bitta nusxada bo‘ladi, ruxsat etilgan to‘g‘ri tenglikdan Y 
va Z sinflarini ifodalaydi. 

Download 1.96 Mb.

Do'stlaringiz bilan baham:
1   ...   41   42   43   44   45   46   47   48   ...   83




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