Obyekt qiymatlarini berish. Obyektlarni vorislik xususiyatidan kelib chiqqan holda, obyekt turidagi o‘zgaruvchilar uchun qiymat berishning quyidagi qoidasi aniqlangan. Obyekt o‘zgaruvchilarga faqat o‘z turidagi o‘zgaruvchi qiymatini berib qolmasdan, balki shu o‘zgaruvchi turidan hosil bo‘luvchi turdagi o‘zgaruvchilar qiymatlarini berish mumkin. Xuddi shu qoida protsedura va funksiyalar uchun ularning «obyekt» turidagi parametrlar qiymatini berishda amal qiladi.
Misol uchun
Var
ObjPosVar : ObjPos;
ObjSymVar : ObjSym;
...
ObjPosVar : ObjSymVar;
ObjSymVar qiymatlarini ObjPosVar ga o‘tkazish uchun yuqoridagi qiymat berish yetarli. Bunda ObjPos ning ga vorislik bilan o‘tgan maydonlari mos qiymat bilan to‘ldiriladi. Umuman aytganda, obyektlar uchun qiymat berish
Ajdod ß Voris
sxema bilan amalga oshadi. Bu holda chap tomondagi o‘zgaruvchining barcha maydonlarining qiymat olishi kafolatlanadi, aks holda vorisdagi «ortiqcha» maydonlar qiymati aniqlanmay qolishi mumkin.
Obyekt turidagi o‘zgaruvchilar dinamik bo‘lishi mumkin, ya’ni ular ko‘rsatgich ko‘rinishi sifatida aniqlangan bo‘lishi mumkin.
Var
ObjPosVarPtr: ^ ObjPos;
ObjSymVarPtr : ^ ObjSym;
Bu yerda ham dinamik obyektlar bilan ishlash protseduralari va qiymat berishning yuqoridagi qoida amal qiladi.
OYPda polimorfizm. Obyektlarga mos turdagi qiymatlarni berishdagi turlar moslashuvi protsedura va funksiyalarga parametrlarni berishda ham saqlanib qoladi. Obyekt turidagi formal parametrga o‘z turidagi yoki shu turdan hosil bo‘lgan turdagi faktik parametrlarni berish mumkin. Obyektlarning bunday muvofiqlashuv xususiyatiga polimorfizm deyiladi. Misol tariqasida ekranga belgi yoki satrni chop qiluvchi obyektlarni ko‘ramiz.
...
{bu yerda ObjPOs,ObjSym va ObjStr obyektlar e’loni bo‘ladi}
Procedure PrintObj(Var Obj:ObjPos); {polimorf obyektni e’lon qilish}
Begin
Obj.Print
End;
Var
ObjSymVar : ObjSym;
ObjStrVar : ObjStr;
Begin
ObjSymVar.Init(10,10,’*’);
ObjStrVar.Init(20,20,’Polimorflik xossasini namoyon qilish’);
PrintObj(ObjStrVar);
PrintObj(ObjSymVar);
...
End.
Biz oldindan barcha obyektlarda PRINT metodini aniqlagan edik. Polimorf obyektni aniqlaydigan protsedurada faqat bitta yozuvi bor. Lekin tashqi ko‘rinishi bo‘yicha to‘g‘ri bo‘lsa ham, bu misol to‘g‘ri ishlamaydi. Faktik parametr turi qanday bo‘lishiga qaramasdan faqat OBJPOS obyektidagi PRINT ishlaydi, chunki obyektlarda statik metodlar ishlatilgan.
Do'stlaringiz bilan baham: |