Vorislikni aniqlanishi.
Bu misoldan ko`rinib turibdiki, Init protsedurasi Line, Col va ObjPos.Init komponentalarini vorislik bo`yicha ishlatmoqda.
Obyektlarni aniqlashni xuddi shu yo`sinda davom ettirib belgini, uning ranglar atributi bilan birga aniqlovchi obyekni aniqlashimiz mumkin. Bunda yangi obyekt ObjSym vorisi bo`lib, unga kerakli maydonlar va atiribut bilan ishlovchi metodni ko`shish kerak bo`ladi. Hosil bo`lgan obyekt ObjPosga nisbatan uchinchi bosqich vorisi bo`ladi.
ObjPosga nisbatan vorislik bosqichi ObjSym bilan bir bosqichda bo`lgan obyektlarni ham yaratish mumkin. Misol uchun ekranga satr chiqaradigan obyekt yaratmoqchi bo`lsak, u ObjPos vorisi bo`ladi.
Vorislikda hosil bo`luvchi yangi turlarda ajdod obyektlardagi identifikatorlarni qaytadan e`lon qilish mumkin emas. Lekin bu cheklanish metodlarga taalluqli emas, ya`ni har bir voris obyekt yuqoridagi aniqlangan metodlarni, yangidan e`lon qilishi mumkin (o`ziga xoslikdan kelib chiqqan holda). Bunga misol sifatida Print metodini ko`rsatishimiz mumkin. Bu hollarda har bir obyekt uchun o`z metodi (Print) ishlaydi. Vorislikda ham obyektlar iyerarxiyasidagi oxirgi aniqlangan metod ishlaydi.
Oby`ekt 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.
ObjPosVarPtr: ^ ObjPos;
ObjSymVarPtr : ^ ObjSym;
Bu yerda ham dinamik obyektlar bilan ishlash protseduralari va qiymat berishning yuqoridagi qoida amal qiladi.
OYP da vorislik va polimorfizm
Do'stlaringiz bilan baham: |