«Қазақстан тарихы, жалпы білім беру пәндері және ақпараттық жүйелер» кафедрасы


Конструкторды корректсіз қолданудың мысалы



бет26/64
Дата17.06.2022
өлшемі0.51 Mb.
#459285
түріЛекция
1   ...   22   23   24   25   26   27   28   29   ...   64
3. Конструкторды корректсіз қолданудың мысалы.
type TA = object
.........
constructor init; procedure Initialization;
.........
end; PA = ^TA;
TB = object(TA)
......... end; PB = ^TB;
procedure Initialization;
begin
Init; {конструкторды шақыру, Self.Init – рекомендацияға жат!}
........... end;
................ var B:PB;
................
new(B);
B^.Init; {мұраға алынған конструктор шақырылып тұр, бұлай етуге болады }
B^.Initialization; {VMT-ң көрсеткіші бұзылады!}
Келтіріліген мысалда TA классы және оның мұрагері TB жарияланған. TA классында конструктор жарияланған және осы конструктордың тәсілін ӛз ішіне алатын тәсіл жарияланған(бұлай етуге кеңес бермейміз). TB классында осы конструктор мен тәсіл мұраға алынған. B^.Init шақыруы мұраға алынған конструкторды дұрыс (коррект)шақыруға әкеледі. Бұған дейін компилятор B^ объектінің VMT ӛрісін инициализациялау кодын генерациялап қояды. Ӛйткені, адрестелетін В мәні TB типіне ие. Келесі B^.Initialization шақыруы мұраға алынған тәсілді шақыруға әкеледі, ал, оның ішінде конструктор қайтадан шақырылады. Осы тәсілдің ішінде конструкторды шақыру Self-ке қатысты орындалады, ал бұл Self осы тәсілдің контексінде TA типіне ие. Сондықтан, нәтижеде, Self ретінде берілген B^ объекті, қайта инициализацияланатын болады және оның VMT ӛрісіне ТА классының VMT адресі жазылады, ал бұл корректсіз(дұрыс емес).
Бақылау сұрақтары

  1. Кластар элементіне кіру мүмкіндігін басқару?

  2. Конструкторлар және деструкторлар түсінігі?

  3. Кластың функция-мүшесіне кіру мүмкіндігін сипаттау және топтау?

Ұсынылатын әдебиеттер

  1. Дьюхарсг С., Старк К. Программирование на С++. Пер. с англ. Киев. Диасофт, 1993-272с.

  2. Евангелос, Петрусос. Visual Basic и 6 VBA. Питер, 2000. 3. Йордон Э., Аргила Карл. Структурные модели в объектно-ориенттированном анализе и проектировании./Пер. с англ. П.Быстрова. М.:ЛОРИ, 1999.

  1. Калверт Ч.Самоучитель по программированию на С++ Builder. Киев, 2000 г.

  2. Гамма Э. Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирование. Паттерны проектирования. – СПб: Питер, 2001.



Достарыңызбен бөлісу:
1   ...   22   23   24   25   26   27   28   29   ...   64




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет