Când se lucrează cu o interfață
grafică, apar diferite obiecte grafice:
ferestre, meniuri, butoane, bare de defilare obiecte
standard Windows etc. Utilizatorul unui
program cu interfata grafica poate utiliza atat tastatura dar, în plus poate utiliza si mouse-ul cu ajutorul căruia poate alege diferite obiecte
grafice de pe ecran și poate da anumite comenzi prin apăsarea unuia din
butoanele acestui dispozitiv.
Programele cu interfețe grafice sunt de obicei programate
într-o modalitate gestionată de evenimente. Sistemele de operare sunt un alt
exemplu clasic de programe dirijate de evenimente.
Se numeste eveniment
orice modificare care are loc, fie în starea dispozitivelor de intrare, fie în
cea a obiectelor grafice de pe ecran: apăsarea sau eliberarea unei taste,
deplasarea mouse-ului, apăsarea sau eliberarea unui
buton al mouse-ului, deschiderea sau închiderea unei
ferestre, efectuarea unui clic de mouse pe un obiect
de control (buton, caseta de validare, bara de defilare etc.), intrarea
cursorului de mouse în câmpul activ al unui obiect
grafic sau părăsirea acestuia etc. Pot exista, desigur, și alte tipuri de
evenimente, dar aici ne interesează numai cele legate de interfața grafică a
aplicației.
Interacțiunea dintre operator și aplicație într-un sistem bazat pe evenimente decurge astfel: operatorul provoacă generarea unui eveniment, acționând asupra tastaturii, mouse-ului sau a altui dispozitiv de intrare, iar programul "răspunde" la acest eveniment prin executarea unei anumite acțiuni. Acest mod de lucru impune o nouă concepție în proiectarea programelor, numită programarea orientată pe evenimente.
În programarea procedurală
tradițională, procesul de calcul este în întregime ghidat de instrucțiunile
programului. Imediat ce s-a încheiat executarea unei instrucțiuni, se trece la
instrucțiunea următoare, respectând fluxul de instrucțiuni al programului
respectiv. Aceasta se referă și la interacțiunea dintre program și utilizator.
Chiar dacă programul este interactiv, initiațiva
privind ce date trebuie introduse și în ce moment se introduc acestea aparține
programului. Operatorului uman nu îi rămâne decât să se conformeze
solicitărilor programului și să introducă date atunci când ele sunt cerute de
acesta. Este evident că un asemenea rol nu este deloc convenabil pentru om,
care dorește să aibă el inițiativa acțiunilor.
Apariția interfețelor grafice a permis introducerea unei
noi concepții în interacțiunea dintre operator și aplicatie,
astfel ca inițiativa să îi revină operatorului uman, iar programul să execute
comenzile acestuia. S-a trecut, astfel, de la programarea procedurală
tradițională la programarea orientată pe evenimente (engleză: Event-Oriented Programming),
cunoscuta și sub numele de programare ghidată de evenimente
(engleză: Event Driven Programming).
Programarea orientată eveniment este o paradigmă a programării calculatoarelor. Spre deosebire de programele tradiționale, care-și urmează propria execuție, schimbându-și câteodata doar cursul în puncte de ramificație (instrucțiuni test, etc), cursul execuției unui program orientat eveniment este condus în mare parte de evenimente externe.
Programele orientate eveniment sunt formate de obicei dintr-un număr de programe mici numite handlere de eveniment, care sunt apelate ca răspuns la evenimente externe și dintr-un coordonator (dispatcher), care apelează handlerele de evenimente, folosind de obicei o coadă a evenimentelor, care să rețină evenimentele care nu au fost procesate.
În multe cazuri, handlerele de evenimente pot declanșa ele însele evenimente, ducând la o cascadă de evenimente.
Programarea orientată eveniment accentuează ca și virtuți, flexibilitatea și asincronicitatea.
In BorlandC++ Builder exista un
designer (wizard) pentru proiectarea interfețelor
grafice, care ajută la realizarea unor programe ce folosesc obiecte
standard Windows și utilizează programarea orientată pe
evenimente. Până acum in limbajul C/C++ s-a folosit programarea clasică
care utilizează comenzile procedurale pentru a selecta diferite funcții
definite de programator sau predefinite. Interfața
grafică in BorlandC++Builder
permite utilizarea obiectelor TLabel de exemplu la
care se pot alege diferite dimensiuni, fonturi,
culori.
Designer-ul
este un generator de cod de program C, care definește o clasă Form de tipul TForm (clasa
ferestrei aplicatiei) pe care se gasesc
obiecte derivate din alte clase (Label, Button, Edit, ComboBox,
Image, List, Meniu etc.)
Programatorul
proiectează o machetă de formular (din clasa TForm)
pe care plasează obiectele de pe o Paletă de obiecte, pe
care le personalizează modificându-le proprietățile cu ajutorul unei Palete
de proprietăți afișate de Inspectorul
de obiecte (obiect al designer-ului). Unele proprietati
ale obiectelor din macheta de formular pot fi modificate de catre
programator chiar si cu ajutorul mouse-ului (spre
exemplu dimensiunile unui buton).
Activarea
inspectorului de obiecte se face din meniu View al aplicatiei alegand optiunea Object Inspector.
Practic
programatorul are doua posibilitati de realizare a aplicatiei: in linie de cod editand
programul sursa si/ sau utilizand un editor grafic cu
ajutorul caruia va amplasa componentele grafice ale aplicatiei in macheta de formular. Daca in modul grafic prelucrarile sunt minimale (de obicei se stabilesc anumite
valori ale unor proprietati ale obiectelor ca
dimensiune, culoare, aspect etc) modul program
permite o prelucrare avansata (evaluarea unor expresii, prelucrari
pe siruri de caractere etc.). In plus, programatorul
are posibilitatea de a comuta intre un mod de lucru sau altul prin optiunea: Toggle Form / Unit din meniul View sau alegand simbolul: de pa bara de meniuri.
Obiecte
inserate in formular Inspector
de obiecte: Proprietati Evenimente Cod
sursa formular