1-ma’ruza: Dasturlash tillari faniga kirish. Obyektga yо‘naltirilgan programmalash. Obyektga yo’naltirilgan loyihalash. Reja



Download 248,13 Kb.
bet8/10
Sana31.08.2021
Hajmi248,13 Kb.
#160513
1   2   3   4   5   6   7   8   9   10
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 248,13 Kb.

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




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