105
x, y: integer; color: word;
Constructor Init(ax, ay: integer; acolor: word);
Procedure Draw(acolor: word): virtual;
Procedure Show;
Procedure Hide;
Procedure MoveTo(dx, dy:integer);
End;
Umuman olganda, maydonlar oddiy o’zgaruvchi
kabi tasvirlanadi, ixtiyoriy
ma’lumotlar strukturasi va o’z navbatida boshqa ob’ekt ham bo’lishi mumkin.
Metodlar esa oddiy protsedura va funksiyalarni tasvirlashga o’xshaydi.
Ob’ekt- bu ma’lumotlar tipidir. Shuning uchun uni qandaydir “shablon”
(qolib) deb qabul qilib uning ekzimplyarlarini (nusxalarini)
konstruktor yordami-
da aniqlaydilar. Bunday nusxalar xohlagancha bo’lishi mumkin. Constructor so’zi
procedure so’zining o’rnida ishlatiladi. Ob’ektda virtual metodlar bo’lmasa, u
holda konstruktor ishlatilmaydi. Aksincha agar bitta
metod virtual tasvirlangan
bo’lsa, u holda hech bo’lmaganda bitta konstruktor tasvirlanadi.
Konstruktorga
murojaat qilish ixtiyoriy virtual metodga murojaat qilishdan oldin kelishi
kerak.
Kostruktorning asosiy vazifasi ob’ekt maydonlarini
aniq qiymatlar bilan
to’ldirishdir. Bir ob’ektning har xil nusxalari (ekzimplyarlari) faqat qiymatlari bi-
lan, ya’ni maydonlar qiymatlari bilan farq qiladi. Keltirilgan
misolda Init kon-
struktori nusxani to’liq aniqlash uchun ma’lumotlarni ax, ay, acolor parametrlari
orqali qabul qiladi.
Draw protsedurasi TGraphObj ob’ektining avlodlarida turlicha ishlatilib har xil
figuralarni (nuqta- PutPixel, chiziq- Line va hokazo) tasvirlash (chiqarish)
uchun
qo’llaniladi.
Ob’ektning hamma xususiyatlarini tasvirlash uchun ob’ekt metodlarini ochib
berish, ya’ni protsedura va funksiyalarni tasvirlash kerak. Tasvirlash (protsedura va
funksiya) ob’ektni tasvirlashdan keyin joylashtirilishi talab qilinadi.
Bu qoidalarni hisobga olib tasvirlashni davom ettiramiz
va quyidagilarni hosil
qilamiz.
Type
TGraphObj=object
End;
Constructor TGraphObj.Init;
Begin x:=ax; y:=ay; color:=acolor; end;
Procedure TGraphObj.Draw;
Begin;
106
{bu protsedura “o’g’il” ob’ektlarda ishlatiladi}
End;
Procedure TGraphObj.Show;
Begin Draw(Color) end;
Procedure TGraphObj.Hide;
Begin Draw(GetBKColor) end;
Procedure TGraphObj.MoveTo;
Begin Hide; x:=x+dx; y:=y+dy; Show end;
Metodlarni tasvirlash jarayonida
Metod nomidan oldin ob’ekt nomi
qo’shiladi, ya’ni metodning tarkibiy (murakkab-составное) nomi hosil bo’ladi.
Bunday nomlanish aniq bir protsedurani nimaga qarashli ekanligini bildiradi.
Ob’ekt
maydonlarini protseduralarda qayta tasvirlash mumkin emas. Masalan,
bu fragment
Constructor TGraphObj.Init;
Var
x, y: integer; color:word; {Xato!}
Begin … end;
Ko’rinib turibdikim, abstrakt ob’ekt TGraphObj ekranga ma’lumot
chiqarish
uchun ishlatilmayabdi. Shuning uchun uning metodi Draw ish bajarmaydi. Ammo
Hide, Show va MoveTo metodlari Draw metodiga murojaat qilib ish bajaradi.
Do'stlaringiz bilan baham: