Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
МҰРАГЕРЛЕУ
Айталық, нү кте объектісінен басқ а шең бер объектісі қ атысатын программа қ ұ райық. Ә рине бұ л жаң а типтің сипатталуын Dot типі сияқ ты басынан бастауғ а болады. Дегенмен, бұ л жаң а шең бер – типтің Dot типімен ортақ ө рістері жә не ә дістері бар. Яғ ни, шең бер де нү кте сияқ ты оның центрін анық тайтын a, b координатасымен сипатталады. Дегенмен, қ ұ рылатын нысанғ а шең бердің радиусын беретін ө ріс қ осу керек. Ал ә дістерге келетін болсақ, жаң а Ring типіне Move ә дісі қ олданылады, нү ктенің орнын ауыстыруы мен экранда шең бердің ауысуы бірдей жү зеге асады. Ал Init, Show жә не Hide ә дістерін жаң адан жасауғ а тура келеді. Сонымен, жаң а Ring типі Dot типінің кейбір ә дістерін қ айталайды. Ендеше бар типтің негізінде оғ ан жаң а ө рістер мен ә дістерді қ оса отырып, жаң а тип жасауғ а бола ма? Бұ л мұ рагерлеу деп аталатын объектілік типтердің қ асиеттерінің арқ асында жү зеге асады. Мә селе мұ рагерлеу туралы болғ андық тан генеологиялық терминологияғ а сә йкес жаң а нысанды жасауғ а негіз болатын бар типті ата-бабасы немесе ата-аналық тип деп атайды. Ал қ ұ рылатын объектіні ұ рпағ ы деп атайды. Ұ рпақ автоматты тү рде ө зінің ата-бабасының барлық ө рістері мен ә дістерін мұ рағ а алады. Мұ рагерлеу қ асиеті НБП-да қ олданылады. Оның арқ асында бар нысанның негізінде кө птеген жаң а нысандар қ ұ руғ а болады. Осы нысандарғ а негіздей отырып, нысандарды кө птеп кұ ра беруге болады жә не де ә рбір нысанның кө п ұ рпағ ы болуы мү мкін, бірақ оның ата-бабасы біреу ғ ана болады. Ал енді Dot жә не Ring типтеріне оралайық. Ұ рпақ типінің сипаттауында ата-аналық типтің атауы кө рсетілуі керек. Type Ring=object(Dot); Rad=integer; End; Ring типінің сипатталуында шең бердің радиусын анық тайтын Rad ө рісі бар. Бұ л ө ріс dot типінде болмағ ан жә не де Ring типі ө зінің ата-бабасының ө рістерін мұ рағ а алады (нү кте координаталары a, b). Егер Ring типінің сипаттамасын сә йкес ә дістермен толық тырсақ, тө мендегідей болады: Ring=object(Dot); Rad: integer; Procedure Init(x, y, r: integer); Procedure Show; Procedure Hide; End; {------------------------} Procedure Ring.Init; Begin a: =x; b: =y; Rad: =r; end; {------------------------} Procedure Ring.Show; Begin SetColor (white); Circle (a, b, Rad); End; {------------------------} Procedure Ring.Hide; Begin SetColor (black); Circle(a, b, Rad); End; Осы жерден ұ рпақ -нысанның ә дістері ата-ана объектісінің бірдей атаулы ә дістермен алмастырылатынын кө руге болады. Басқ а сө збен айтқ анда, егер Ring.Move ә дісіне қ атынас жасалса, жү йе алдымен Ring объектісінің сипаттамасында осындай атаудың бар-жоқ тығ ын анық тайды. Егер бар болса, осы жаң а ә діс қ олданылады. Егер жоқ болса, ата-бабасынан мұ рағ а алғ ан ә дісті қ олданылады. Ескерту! Тек ә дістерді ғ ана қ айта анық тауғ а болады. Ал ұ рпақ -нысанындағ ы ө ріс атаулары ата-анасының нысанындағ ы ө ріс атауларымен сә йкес келмеуі тиіс. Ұ рпақ объектісі жарияланғ аннан кейін оның ө рістерімен жұ мыс істеу ү шін оның экземплярын жасауғ а болады. Var Ring1: Ring.
|