Кіріспе
Компьютерлік бағдарламалау парадигмасы
Компьютерлік бағдарламалауда, оқиға басқару бағдарламалау – бағдарламаның ағыны сыртқы оқиғалармен анықталатын бағдарламалау парадигмасы. Типтік оқиғаларға тышқан, пернетақта, сенсорлық панельдер және сенсорлық экрандардан түсетін сигналдар, немесе сыртқы сенсорлардан келетін деректер, немесе басқа бағдарламалар мен жіптерден (thread) бағдарламалық түрде (хабар алмасу арқылы) туындаған оқиғалар, немесе желілік оқиғалар жатады. Оқиға басқару бағдарламалау графикалық пайдаланушы интерфейстері мен желілік серверлерде қолданылатын басым парадигма болып табылады. Оқиға басқару қолданбасында, әдетте, оқиғаларды күтетін және олардың бірі анықталғанда кері шақыру функциясын (callback function) іске қосатын оқиға циклы болады. Оқиға басқару бағдарламаларын кез келген бағдарламалау тілінде жазуға болады, бірақ жоғары деңгейдегі абстракцияларды ұсынатын тілдерде бұл міндет оңайырақ. Олар оқиға басқару моделіне толық сәйкес келмесе де, үзіліспен жұмыс істеу және қателіктерді өңдеуде көптеген ұқсастықтар бар.
In computer programming, event driven programming is a programming paradigm in which the flow of the program is determined by external events. Typical event can be UI events from mice, keyboards, touchpads and touchscreens, or external sensor inputs, or be programmatically generated (message passing) from other programs or threads, or network events. Event driven programming is the dominant paradigm used in graphical user interfaces applications and network servers. In an event driven application, there is generally an event loop that listens for events and then triggers a callback function when one of those events is detected. Event driven programs can be written in any programming language, although the task is easier in languages that provide high level abstractions. Although they do not exactly fit the event driven model, interrupt handling and exception handling have many similarities.
Оқиғалар тізбегі
Оқиғаларды алу/жіберу оқиғалар циклы көптеген қолданбаларда ортақ болғандықтан, көптеген бағдарламалау аялары оның іске асырылуын өздері қамтамасыз етеді және пайдаланушыдан оқиғаларды өңдеушілер үшін ғана код беруді күтеді. IBM-нің алғашқы бағдарламалау тілі RPG, оның 1960 жылдардағы дизайн тұжырымдамасы жоғарыда талқыланған оқиға басқарылатын бағдарламалауға ұқсас болды, кірістіру/шығарудың негізгі циклін ("бағдарлама циклі" деп аталады) құрастырды, онда есептеулер цикл басында орнатылған "көрсеткіштерге" (флагтарға) сәйкес жауап берді.
Оқиғаларды басқарушылар
Нақты логика оқиғаларды өңдеу процедураларында қамтылған. Бұл процедуралар негізгі бағдарлама жауап беретін оқиғаларды өңдейді. Мысалы, GUI бағдарламасындағы командалық батырманы тышқанның сол жақ батырмасымен бір рет басу басқа терезе ашуға, деректерді дерекқорға сақтауға немесе қолданбадан шығуға мүмкіндік беретін процедураны іске қосуы мүмкін. Көптеген IDE бағдарламашыға GUI оқиға үлгілерін ұсынады, бұл бағдарламашыға оқиға кодын жазуға көбірек назар аударуға мүмкіндік береді. Жүйелі бағдарламада оқиғалар тарихын қадағалау әдетте оңай болса, оқиғаларды өңдеу процедуралары сыртқы оқиғаларға жауап ретінде орындалатындықтан, оқиғаға негізделген бағдарламада оларды кез келген ретте шақырғанда жұмыс істеуі үшін дұрыс құрылымдауға ерекше назар қажет. Оқиғаларды өңдеу процедураларын жазудан бөлек, оларды оқиғалармен байланыстыру қажет, осылайша оқиға болғанда дұрыс функция шақырылады. UI оқиғалары үшін көптеген IDE екі қадамды біріктіреді: батырманы екі рет басу, сонда редактор пайдаланушы батырманы басқан кезде байланыстырылған (бос) оқиға өңдеушісін жасайды және оқиға өңдеушісін өңдеу үшін мәтін терезесін ашады.
Жалпы қолданылу
Қазіргі кезде қолданылып жүрген GUI архитектураларының көпшілігі оқиға басқару негізінде жұмыс істейді. Windows жүйесінде оқиға циклы бар. Java AWT фреймворкі барлық UI өзгерістерін "Оқиға жіберу тізбегі" деп аталатын бір тізбекте өңдейді. Сол сияқты, JavaFX Java фреймворкіндегі барлық UI жаңартулары JavaFX қолданба тізбегінде жүзеге асырылады. Node.js сияқты көптеген желілік серверлер мен фреймворктар да оқиға басқаруға негізделген.