I тарау. Объектілі бағдарлы программалау объект ұғымы


Абстрактылы ата-аналық түр



бет6/25
Дата06.02.2022
өлшемі0,87 Mb.
#79285
түріПрограмма
1   2   3   4   5   6   7   8   9   ...   25
Байланысты:
ОБП
мультимедиа
Абстрактылы ата-аналық түр

Бастапқыда 3 түр алынған: Point("нүкте"), Circle( дөңгелек), Ring("Сақина"), бiрақ программа көрсетiлген кескiн бойынша құрылған.
Point объектiсi қолданылмағандықтан, оның конструкторы жоқ. Circle түрiнiң конструкторы туылу блогiне қосалқы жазылған. Басқа жағдай үшiн Ring түрiнде (қосалқы емес) конструктор қарастырылған. Ол "бос " болып табылады. Виртуальды әдiстерi бар әр объектiге оның әдiстерiн қолданбай тұрып, алдын ала оның конструкторiне назар аударылуы керек. Конструкторла виртуалды бола алмайды.
TestRing конструкторiне фигура туылмас бұрын назар аударылған. Өйткенi Ring.Init блогi Circle.Init-ке назар аударады, ал соңында Show блогы орындалып фигура экранға шығады. Бiрақ Show әдiсi виртуальды және алдын ала қосылуы керек. Circle түрiндегi виртуальды әдiстертердiң қосылуы Krug.Init конструкторының бiрiншi әректi болып табылады. Ал Show блогына ол жұмыстың соңында назар аудылады. Ring өзiнiң Hide виртуальды әдiсi жоқ болғандықтан, ататегiнiң әдiсiн қолданған. Виртуальды әдiстер мұра қалдырады.
Виртуальды емес әдiстер қарапайым блоктар сияқты программаны компиляциялаған кезде қосылады (ерте байланысу). Виртуальды әдiстер үшiн әр түрге компилятор олардың адрестерi жазылған ВӘК (виртуальды әдiстер кестесi) кестiн жадыда құрады. ВӘК кестесi орындалу кезiнде қолданылады ("қожайын"-әдiспен кеш байланысу). Конструкторге назар аударған кезде, ол объектiдегi арнайы алаңға осы түрдегi объектiнiң BӘК кетесiне нұсқау жазылады. Fly әдiсi Show және Hide әдiстерiмен ВӘК кестесi арқылы байланысады.
Обектiнi динамикалық жадыда орналастыруға болады. Бұл оларды құруға ыңғайлы жағдай туғызады. Мысалы динамикалық обектiлердi тудыра отырып оларды виртуальды әдiстерiмен де байланысуға болады. Ол үшiн New процедурасының екiншi параметiрiне конструкторге назар аудару жазылады. TestCircle түрiне ^Circle нұсқауын қолданамыз және "ұшатын" дөңгелектiң туылу келесi түрде жазылады:
New(Circle,Init(151,182,30,5)); Cicrle^.Fly(100);
New процедурасының екi параметiрi болған жағдайда керектi алаңдарға жадыдан орын алуды конструктор бiрiншi болып iстейдi. Dispose процедурасы жадыдағы объектiлердi жадыдан босатады. Ол үшiн жадыдағы объектiлердi босататын арнайы процедура блогiн iске қосылады. Объектiдегi мұндай процедура -деструктор деп аталынады. Десторукторды консторуктор сияқты бағдарламашы өзi жазады. Деструктор виртуальды болып келедi , ал конструктор бола алмайды.
Point объектiсiнде үш X,Y, Visable берiлгендер алаңы бар, GetX,GetY функциялары X пен Y-тiң мәндерiн қайтарады. Show процедурасы берiлген координатада нүктенi экранда көрсетедi, ал Hide нѕктенi "сөндiредi". IsVisable функциясы нүктенiң экранда көрiп тұрғанын немесе сөнiп тұрғанын анықтайды. Х нүктесiн (0,0) координатасында көрсету программасының бөлiгi.
Объктiлiердiң ағаш тәрiздi құрылымын құрғанда, бағынышты объектiде, оның тегi болатын объектiсiндегi берiлгендердi, олардың қасиеттерiнiң өзгеру немесе өзгермеуiне тәуелсiз, қайта сипаттауға болмайтындығын ескеру керек. Ал әдiстердi қайта анықтауға болады. Егер бiр-бiрiне байланысқан объектiлердiң аттары бiрдей әртүрлi әдiстерi болса, онда оларды қандай объектiмен жұмыс iстеуiне байланысты шақырылады. 


Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   ...   25




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

    Басты бет