Reja: Dasturlash tillari fanining mazmuni, maqsadi va vazifalari



Download 0,5 Mb.
Pdf ko'rish
bet9/11
Sana11.09.2021
Hajmi0,5 Mb.
#171301
1   2   3   4   5   6   7   8   9   10   11
Bog'liq
1-Maruza

Polimorfizm  –  bu  mazmunan  bir  о„xshash  masalalarni  turli  usulda  yechishdir.  Sinflar 

shajarasida  u  yoki  bu  metodning  algoritmini  о„zgartirish  orqali  programma  tuzuvchi  avlod 

metodlarga ularning ajdodlarida bо„lmagan xususiyatlarni berishi mumkin. Metodni о„zgartirish 

uchun avlod sinfda bu metodni  «yopish» kerak, ya‟ni avlodda xuddi shu nomdagi metod e‟lon 

qilinishi kerak va unda zarur amallarni bajarish kerak. Natijada ajdod va avlod obyektlarda ikkita 

bir  xil  nomdagi,  lekin  har  xil  algoritmga  asoslangan  metodlar  amal  qiladi.    Bunga  obyektlar 

polimorfizmi deyiladi.   

 

Polimorfizmni  amalga  oshirish  uchun  ajdod  sinfda  metod  virtual  deb,  ajdod  sinflardagi 



mos  metodlar  override  (qoplovchi)  deb  e‟lon  qilinishi  kerak.  Bu  kо„rsatmalarni  olgan 

kompilyator ajdod sinf VMT - virtual metodlar jadvaliga avlod sinfdagi metodga kirish nuqtasini 

joylashtiradi va ajdod sinfga yangi metod bilan ishlash imkoniyatini beradi.  

 

Har  qanday  sinf  tarkibiga  ikkita  maxsus  sinf  kiradi  –  konstruktor  (constructor)  va 



destruktor  (destructor).  TObject  sinfida  bu  metodlar  mos  ravishda  Create  va  Destroy 

metodlaridir.  Konstruktor  obyektni  yaratadi,  ya‟ni  uni  dinamik  xotirada  joylashtiradi  (joy 

ajratadi) va xotira adresini sinfda avtomatik ravishda aniqlanadigan Self о„zgaruvchisiga beradi. 

Destruktor  obyektni  uyumdan  о„chiradi.  Konstruktor  va  destruktorlar  protseduralar  bо„lib 

Constructor va Destructor sо„zlari bilan e‟lon qilinadi.  

 

 



Type 

 

  TSinf = Class 



 

     Butun_Uzg : Integer; 

                 Constructor Create; 

 

     Destructor Destroy; 



 

end; 


 

Obyekt maydonlariga faqat obyekt yaratilgandan keyin murojaat qilish mumkin.  

  

Var 


 

  VObj : TSinf; 

 

 Begin 


              VObj.Butun_Uzg := 10; // xato 

              VObj : = Tsinf.Create; 

              VObj.Butun_Uzg := 10; // tо„g„ri 

              ... 

              VObj.Destroy; 

           end; 

 

TObject sinfida Free metodi aniqlangan bо„lib, u obyekt adresini ayni paytda mavjudligi 



tekshirida  va  keyin  Destroy  metodini  chaqiradi.  Odatda  Free  metodi  obyektni  ikkinchi  marta 

о„chirishga  harakat  qilishi  bilan  bog„liq  programma  bajarilishining  favqulotda  tо„xtash  bilan 

bog„liq holatlarini oldini olish uchun ishlatiladi. 

 

Polimorfizmni  amal  qilishini  misolda  kо„rishimiz  mumkin.  Ikkita  ajdod  (Tasvir_1)      va 



avlod  (Tasvir_2)  sinflarni  yaratilgan  bо„lib,  ajdod  sinfda  biror  tasvirni  kо„rsatish  va  yashirish 

amallarini  bajaruvchi  Kursat  va  Yashir  metodlari  mavjud  bо„lsin.  Bu  metodlar  о„z  navbatida 

mantiqiy  parametrli  Chiz  metodiga  murojaat  qilsin.  Chiz  metodi  ajdod  va  avlod  sinflarida 

turlicha amalga oshirilgan va mos ravishda tо„rtburchak va aylana tasvirlarini chizadi (о„chirish 

tasvirni  fon  rangida  chizish  bilan  amalga  oshiriladi).  Natijada  sinflar  shajarasida  Kursat  va 

Yashir metodlari har xil tasvirlarni kо„rsatadi va yashiradi. 

 

Polimorfizm  namoyon  bо„lishining  ikkinchi  kо„rinishi  sinflardan  tashqarida  yaratilgan 



Polimorfizm  protsedurasi  orqali  amalga  oshirilgan.  U  Tasvir_1  turidagi  (Tasvir)  ramziy 

parametrga ega, murojaat paytida ushbu parametrga  mos amaldagi sinf obyektiga mos ravishda 

Chiz metodi chaqiriladi: Tasvir.Chiz(Bor_Yoq).   

 

 



Mos ilovaning kо„rinishilari va matni quyida keltirilgan. 


 

   



 

 

a) tasvirlarni kо„rsatish;  



 

 

 



b) tasvirlarni о„chirish:  

2-rasm. Shakl chizish protsedurasi misolida polimorfizm. 

 

 

 



unit Unit1; 

interface 

… 

Type 


  TTasvir_1 = Class(TWinControl) 

public 


 Procedure Yashir; 

 Procedure Kursat; 

 Procedure Chiz(Bor_Yoq: Boolean); Virtual;  end; 

TTasvir_2 = Class(TTasvir_1) 

    public 

      Procedure Chiz(Bor_Yoq: Boolean); override; 

  End; 

  var 


  Form1: TForm1; 

  Tasvir1 :TTasvir_1; 

  Tasvir2 :TTasvir_2; 

Implementation 

 

Procedure TTasvir_1.Kursat; 



 Begin Chiz(True) end; 

Procedure TTasvir_1.Yashir; 

 Begin Chiz(False) end; 

Procedure TTasvir_1.Chiz(Bor_Yoq: Boolean); 

Begin 

  With Form1.Canvas Do 



    Begin 

      If Bor_Yoq Then 

       Begin  Pen.Color := ClRed; 



 

        Brush.Color :=ClRed 



       End 

        Else 

       Begin 

        Pen.Color := Form1.Color; 

        Brush.Color :=Form1.Color 

       End; 

       Rectangle(100,100,200,200); 

      End; 

End; 

Procedure TTasvir_2.Chiz(Bor_Yoq: Boolean); 



Begin 

  With Form1.Canvas Do 

     Begin 

      If Bor_Yoq Then 

       Begin 

        Pen.Color := ClRed; 

        Brush.Color :=ClRed 

       End 

        Else 

       Begin 

        Pen.Color := Form1.Color; 

        Brush.Color :=Form1.Color 

       End; 

       Ellipse(400,100,500,200); 

      End; 

End; 


Procedure Polimorfizm(Tasvir : TTasvir_1; Bor_Yoq: Boolean); 

Begin 


 Tasvir.Chiz(Bor_Yoq); 

End; 


{$R *.dfm} 

procedure TForm1.FormCreate(Sender: TObject); 

begin 

 Tasvir1 :=TTasvir_1.Create(Form1); 



 Tasvir2 :=TTasvir_2.Create(Form1); 

end; 


procedure TForm1.Show_Tasvir1Click(Sender: TObject); 

begin 


 Tasvir1.Kursat; 

end; 


procedure TForm1.Hide_Tasvir1Click(Sender: TObject); 

begin 


 Tasvir1.Yashir; 

end; 


procedure TForm1.Show_Tasvir2Click(Sender: TObject); 

begin 


 Polimorfizm(Tasvir2,True); 

end; 


procedure TForm1.Hide_Tasvir2Click(Sender: TObject); 

begin 


 Polimorfizm(Tasvir2,False); 


 

end; 



end. 

 


Download 0,5 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10   11




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish