O. X. Azamatov


 Polimorfizm. Ko‘plik vorislik. Interfeyslar


Download 1.82 Mb.
Pdf ko'rish
bet69/119
Sana09.01.2022
Hajmi1.82 Mb.
#256439
1   ...   65   66   67   68   69   70   71   72   ...   119
Bog'liq
3072-Текст статьи-7829-1-10-20200908

 
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.82 Mb.

Do'stlaringiz bilan baham:
1   ...   65   66   67   68   69   70   71   72   ...   119




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