Sunteți pe pagina 1din 13

March 14, 2013 [MEDII DE PROGRAMARE VIZUAL]

Curs 2 Definirea i clasificarea limbajelor de programare


Limba, conform DEX-ului, este sistem de comunicare alctuit din sunete articulate, specifice omului, prin care acesta i exprim gndurile sau dorinele. Noiunea de limbaj: este definit ca un sistem pentru comunicare. Limbajele scrise folosesc simboluri (care sunt caractere) pentru a construi cuvinte. ntreg setul de cuvinte formeaz vocabularul limbajului. Modul n care cuvintele pot fi combinate pentru a fi nelese este definit de sintaxa i gramatica limbajului. Sensul dat de cuvinte sau combinaii de cuvinte este definit de semantica limbajului. n domeniul computerelor, limbajele umane sunt denumite limbaje naturale. Din nefericire computerele nu sunt de ajuns de sofisticate pentru a nelege limbajele naturale. Prin urmare comunicarea cu computerele se face prin intermediul unor limbaje specifice computerelor denumite limbaje de programare. Limbajele de programare sunt sisteme convenionale (limbaje artificiale) create de om i care servesc la exprimarea sub form de aciuni executabile mijlocit sau nemijlocit de ctre sistemul de calcul a algoritmului sau logicii de rezolvare a unei probleme. Noiunea de limbaj de programare: este definit ca fiind ansamblul format de un vocabular i un set de reguli gramaticale, necesar instruirii unui computer pentru a realiza anumite activiti. Altfel spus limbajul de programare este o notaie sistematic prin care se descrie un proces de calcul. Orice limbaj (natural sau artificial) presupune definirea sintaxei, semanticii i pragmaticii lui. Sintaxa este un set de reguli ce guverneaz alctuirea propoziiilor dintr-un limbaj. n cazul limbajelor de programare echivalentul propoziiei este programul. Semantica este un set de reguli ce determin nelesul sau semnificaia propoziiilor ntr-un limbaj. Pragmatica indic utilitatea practic a limbajului (uurina utilizrii, independena de sistemul de calcul etc.) Dup modul cum au evoluat n timp limbajele de programare pot fi: limbaje de prima generaie: limbajul main (machine language); limbaje de generaia a doua: limbajul de asamblare (assembly language); limbaje de generaia a treia: limbajele de nalt nivel (high-level programming languages); limbaje de generaia a 4-a: limbaje mai apropiate de limbajul uman dect limbajele de nalt nivel; limbaje de generaia a 5-a ndreptate spre exploatarea bazelor de cunotine, crearea sistemelor expert i spre rezolvarea problemelor legate de inteligena artificial.

Limbajul main
Reprezint nivelul cel mai elementar al limbajelor de programare. Cnd un computer urmeaz instruciunile unui program se spune c programul este n execuie (running). nainte de a fi executat programul trebuie s fir rezident n memorie.. Adic programul trebuie s ocupe un set de bytes consecutivi n memorie. Totodat programul trebuie scris ntr-un limbaj main intern. Fiecare tip de procesor are propriul limbaj main. Acesta este 1 | IE, an II

March 14, 2013 [MEDII DE PROGRAMARE VIZUAL] conceptul de baz cu privire la modul de execuie a unui program. Faptul c programul ce se execut este stocat (chiar i parial) n memoria principal (RAM) duce la concluzia c numai prin schimbarea programului din memoria RAM computerul poate trece la execuia altui proces (task)/program. Aa cum s-a prezentat mai sus toate computerele au un limbaj main intern (specific tipului de procesor). Acest limbaj este codat ntr-o reprezentare binar i este foarte greoi (plictisitor) de utilizat pentru scrierea unui program. Majoritatea instruciunilor programului vor conine astfel dou pri: o parte care se refer la operaia de codare se vor indica ordinea operaiilor; o parte care se refer la adresa din memorie - indic locaia de memorie ce se va utiliza ca operand al instruciunii. operation address meaning code 00010101 10100001 load c(129) into accumulator 00010111 10100010 add c(130) to accumulator 00010110 10100011 store c(accumulator) in location 131 Astfel programatorii care utilizeaz limbajul main vor trebuie s fie ateni n ce zone de memorie se vor stoca date i n ce zone de memorie se vor executa programele (instruciunile). Astfel pot aprea erori de programare datorate suprapunerii scrierii instruciunilor peste date. Prin urmare programarea n limbaj main presupune o bun capacitate de a interpreta datele i instruciunile la nivel de bit. Totodat aceasta reprezint si posibilitatea de a se genera alte programe i de a le executa. Concluzii: este limbajul pe care computerul l nelege n mod direct; n limbajul main programele se scriu n cod binar: succesiuni de 0 i 1; fiecare instruciune din limbajul main este o combinaie de 4 bits (LOAD-0000; ADD0001); programatorul trebuie s cunoasc detaliat structura hardware a computerului; programatorul trebuie s gestioneze fr greeal alocarea adreselor de memorie pentru un program; pot aprea multe erori datorit: concepiei programului, sintaxei, suprapunerii adreselor de memorie, etc.

Limbajul de asamblare
Permite folosirea codurilor simbolice pentru adrese, date i operaii. Atenia necesar evitrii ocuprii acelorai adrese de memorie este foarte solicitant (greoaie) n programarea n limbaj main. Astfel dac programatorul modific un program i decide s mai introduc ceva atunci toate celelalte adrese de memorie utilizate pn atunci se vor schimba i trebuie s examineze ntregul program din nou i s decid iari cu privire la modul cum va aloca memoria datelor i instruciunilor. Astfel au aprut ncepnd cu 1950 limbajele de asamblare care sunt forme mai prietenoase ale limbajului main. Astfel comenzile limbajului main au fot nlocuite de comenzi mnemonice (gestioneaz memoria!!! nu e foarte ortodox). Astfel limbajul de 2 | IE, an II

March 14, 2013 [MEDII DE PROGRAMARE VIZUAL] asamblare are grij s converteasc comenzile mnemonice n comenzile corespunztoare limbajului main. Programatorul poate folosi adrese simbolice pentru reprezentarea datelor. Acest limbaj va atribui adresele n limbaj main i va verifica dac datele distincte nu se suprapun la stocare. Astfel scurtul program de mai sus se poate scrie n limbaj de asamblare astfel: Operation address code LOAD A ADD B STORE C Evident acest limbaj evit o multitudine de erori de alocare a memoriei. Limbajul de asamblare presupune existena unui program numit assembler (asamblor) care s traduc programele n limbaj main. Asamblorul nlocuiete codarea mnemonica (cum ar fi ADD) cu coduri binare corespunztoare limbajului main i aloc adrese de memorie pentru toate variabilele simbolice utilizate (A, B, C ) i se asigur c aceste adrese sunt distincte. Astfel prin uurarea procesului de programare s-a introdus un nou nivel de procesare pentru computer. Astzi limbajele de asamblare sunt nc utilizate pentru unele programe critice deoarece aceste limbaje confer programatorului un control foarte precis a ceea ce se ntmpl n computer. Limbajele de programare nc necesit ca programatorul s aib foarte bune cunotine cu privire la structura intern a computerului. Limbajele de asamblare sunt i ele specifice computerului pe care ruleaz astfel c programatorul trebuie sa-i rescrie programul pentru un alt tip de computer. Concluzii: programele se scriu n mod text pentru ca apoi sa fie traduse intr-o form binar corespunztoare limbajului main; limbajul de asamblare este tradus n limbaj main de ctre assembler; operaia se numete asamblare; limbajele de asamblare nc solicit programatorului cunoaterea de multe detalii hardware; sunt specifice anumitor tipuri de computere; limbajul de asamblare mpreun cu limbajul main formeaz categoria limbajelor de nivel sczut (low-level languages).

Limbajele evoluate (High level Languages)


Evident c de la apariia computerului tot s-a pus problema de a se obine un proces de programare ct mai uor. Aceasta ar presupune ca activitatea de programare sa se poat face cu un bagaj de cunotine cu privire la funcionarea intern a computerului ct mai mic. Dup cum s-a vzut anterior limbajul main i limbajul de asamblare presupune o bun cunoaterea funcionrii interne a computerului. O alt direcie pentru uurarea programrii ar fi aceea ca programele s fie prezent ate ntr-o limb ct mai familiar persoanei care dorete s programeze (s rezolve o anumit problem). Astfel au aprut programarea de nalt nivel care permite formularea soluiilor problemei de rezolvat n termeni mai apropiai de cei folosii de oameni. Aceste limbaje au fost concepute pentru a permite programrii s fie mult mai uoar i cu mai puine erori iar

3 | IE, an II

March 14, 2013 [MEDII DE PROGRAMARE VIZUAL] programatorul nu trebuie s cunoasc detalii cu privire la structura intern a unui anumit tip de computer. Aceste limbaje sunt mult mai apropiate de limbajul uman. Primul limbaj evoluat a fost FORTRAN II aprut n 1958. Programul prezentat mai sus se poate scrie n acest limbaj astfel: C=A+B Se observ c spre deosebire de limbajul main i limbajul de asamblare expresia de mai sus este mul mai uor de neles, mai rapid de scris i evit multe erori de scriere. Pentru a putea fi executate, ca i n cazul limbajului de asamblare, computerul nu nelege n mod direct aceste limbaje evolute i de aceea ele trebuie procesate printr-un program specializat care traduce limbajele evolute n limbajul main intern al computerului respectiv. Instruciunile n limbajele evoluate se numesc enunuri i se aseamn mult cu limbajul uman sau cu conveniile de scriere n matematic. Dup modul cum se face aceast transpunere a programelor evoluate exist dou tipuri de astfel de programe specializate: interpretor: traduce succesiv instruciunile de nalt nivel ntr-o form intermediar care este apoi executat. compiler (compilator): traduce instruciunile de nalt nivel direct n limbaj main. Avantajul interpretorului este c poate execut un program imediat. Compilatorul necesit mai mult timp. Programele produse de compilator ruleaz mul mai rapid dect cele produse de interpretor. Majoritatea programelor evolute au la dispoziie att compilator ct i interpretor. De obicei interpretorul se folosete n timpul realizrii unui program pentru testarea unor mici seciuni ale programului. Unele limbaje evoluate sunt concepute s lucreze numai cu interpr etor (BASIC, LISP). Un alt mare avantaj al limbajelor evoluate este acela c dac limbajele sunt standardizate atunci fiecare productor de computere (procesoare) va putea s realizeze compilatorul care s respecte standardele i s traduc programele n limbajul main specific productorului. Astfel devine posibil ca un program, respectndu-se aceste standarde, s poat fi compilat pe diverse computere i apoi executat. Prin scrierea unui program ntr-un limbaj evoluat se face o economie imens de timp. Astfel programatorul pierde mai puin timp pentru scrierea ntr-un limbaj mult mai apropiat de cel uman dect dac acelai program ar fi scris n limbaj main. Timpul de compilare al programului este de ordinul secundelor.

Generatia a 4-a cuprinde limbajele orientate ctre utilizatorii finali. Folosind aceste limbaje,
utilizatorii neinformaticieni pot s-i rezolve singuri propriile probleme, dialognd cu calculatorul. Se elimin etapa de programare i se asigur o implicare i un interes mai mare din partea utilizatorului. Majoritatea specialitilor grupeaz limbajele din generaia a 4-a n urmtoarele produse: limbaje de interogare (SQL) generatoare de rapoarte (Easytrieve Plus, Datatrieve, Mark V. etc) generatoare de aplicaii i/sau proiecte (FOCUS, Mantis, Natural, NOMAD2, IDEAL MAPPER, pachete de aplicaii DeskTop Publishing) generatoare de grafice (independente Tell-al graph, SAS, ADRS/B6 ncorporate n spreadsheet-uri LOTUS, EXCEL, QUATTRO, ncorporate n SGBD - FoxGraph); instrumente de sprijinire a deciziilor (programe de calcul tabelar-Quattro, Lotus, Excel sau pachete program statistice SPSS, SAS etc) 4 | IE, an II

March 14, 2013 [MEDII DE PROGRAMARE VIZUAL]

Generatia a 5-a cuprinde limbajele care sunt sau vor fi ndreptate spre exploatarea bazelor de
cunotine, crearea sistemelor expert i mai general spre rezolvarea problemelor legate de inteligen artificial. Un rol deosebit revine limbajelor pentru programarea orientat pe obiecte (Samlltalk, C++, MANDALA, LISP, PROLOG). Folosind alt criteriu de clasificare modalitatea de descriere a problemei de rezolvat, limbajele de programare pot fi grupate n: Limbaje procedurale Limbaje neprocedurale Limbajele procedurale descriu pas cu pas algoritmii de rezolvare a unei probleme. n aceast categorie se nscriu limbaje de nivel nalt ca BASIC, COBOL, FORTRAN, PASCAL, etc. Limbajele neprocedurale sunt limbaje de nivel foarte nalt care definesc scopul urmrit fr a da detalii asupra modului de rezolvare a acestuia. Din aceast categorie fac parte Smalltalk, Prolog, Lisp, Clips etc. J.E. Sammet mparte limbajele n: Limbaje procedurale (LP), de nivel nalt, numite i limbaje algoritmice folosite pentru descrierea algoritmic printr-un set ordonat de instruciuni; Limbaje neprocedurale (LNP), de nivel foarte nalt, n care succesiunea instruciunilor din program nu influeneaz dect n foarte mic msur succesiunea execuiei; Limbaje specializate orientate pe problem/aplicaie, limbaje cu caracter neprocedural, bazate pe o mulime de funcii ce pot fi referite explicit; Limbaje conversaionale, care asigur dialogul utilizator-sistem pe parcursul execuiei unui program.

Metode i tehnici de programare


Programe i produse program definire i clasificare
Programul reprezint totalitatea instruciunilor i/sau comenzilor pregtite i ordonate n prealabil conform unei logici prestabilite, stocate n memoria calculatorului i utilizate pentru rezolvarea unei anumite probleme. Ansamblul activitilor de concepere, dezvoltare i ntreinere a programelor se numete programare. Conceptul de program sau produs program desemneaz att programul propriu-zis ct i operaiile manuale i documentaia necesare pentru dezvoltarea, utilizarea i ntreinerea lui. Programele pot fi grupate n: Programe de baz ce servesc ca interfa logic ntre resursele sistemului informatic i programele de aplicaii; Programele aplicative ce se compun din programe care coordoneaz calculatorul n execuia/realizarea sarcinilor precise de prelucrare a datelor conform cerinelor utilizatorului final. 5 | IE, an II

March 14, 2013 [MEDII DE PROGRAMARE VIZUAL] Pe piaa programelor informatice sunt profilate dou tendine: Cumprarea de ctre utilizatorii finali, direct de la furnizori, a programelor la cheie, ce folosesc limbaje conversaionale i naturale i care pot fi folosite pe o gam larg de calculatoare; Abandonarea, n activitatea de programare, a limbajelor tehnice i a limbajelor procedurale, n favoarea limbajelor neprocedurale i a celor naturale, care se apropie de limbajul uman. Exist mai multe metode de elaborare a produselor program. Caracteristicile principale ale acestor metode se regsesc n metodele i tehnicile utilizate i n prezent.

Metoda programrii clasice


Prin programarea clasic se face referire la primii ani de dezvoltare a programelor, respectiv nceputul anilor 50, perioad n care existau puine reguli, majoritatea viznd scrierea programelor. De aceea, programarea clasic este impropriu numit metod, ns se face delimitarea de evoluiile ulterioare din domeniul programrii calculatoarelor. Programarea clasic presupune conceperea monolitic a programului prin parcurgerea unor 1 etape : analiza problemei n vederea stabilirii exacte a cerinelor informaionale ale utilizatorilor; elaborarea schemei logice a programului; scrierea programului surs; compilarea i asamblarea programului; testarea i corectarea programului; exploatarea programului. Dezvoltarea programelor n aceast perioad prezenta o serie de neajunsuri dintre care mai importante erau: elaborarea intuitiv sau artizanal a algoritmilor de rezolvare a problemei; existena numeroaselor operaii de salt (instruciuni GOTO) ce conduc la un timp mare de execuie a programului i fac dificil nelegerea programului i modificarea acestuia, chiar dac acesta dispune de documentaie; imposibilitatea desfurrii activitii de programare n echip; ineficiena i slaba productivitate a activitii de programare, mai ales n cazul programelor mai mari etc. Acestea sunt doar cteva din motivele care au determinat programatorii s identifice i s formuleze reguli care s-i ghideze n activitatea lor i care au condus la apariia unor metode de programare.

Metoda programrii modulare


Programarea modular poate fi considerat prima metod de programare propriu -zis. Premisele apariiei ei au fost create odat cu apariia limbajului FORTRAN, care oferea posibilitatea utilizrii subprogramelor i compilrii lor separate. Compilarea separat a dus la apariia bibliotecilor de subprograme.
1

Grama, A., Filip, M., Medii de programare in economie, Editura Sedcom Libris, Iai, 2000

6 | IE, an II

March 14, 2013 [MEDII DE PROGRAMARE VIZUAL] Programarea modular este o metod de concepere a programelor care presupune descompunerea problemei de rezolvat n mai multe subprobleme mai simple, conform preceptelor gndirii carteziene: orice problem, orict de complex ar fi, poate fi descompus n subprobleme rezolvabile mai uor dect problema iniial. n acest mod, programatorii se pot concentra numai asupra unei subprobleme, considernd-o ca o problem de sine stttoare, dar care este mai simpl i mai uor de rezolvat. Trebuie remarcat deja interesul pentru instituirea de reguli n conceperea programelor i nu doar pentru scrierea programelor, precum i considerarea lor ca activiti independente; proiectarea modulelor programului se face independent de limbajul de programare ales , doar la scrierea programelor inndu-se cont de specificul fiecrui limbaj. Fiecrei subprobleme i va corespunde, n principiu, un modul de program, iar produsul-program va fi constituit prin integrarea modulelor componente, dezvoltate separat. De aici deriv i numele metodei programarea modular. Modulul este considerat o unitate structural de sine stttoare, fie program, fie subprogram, fie o unitate de program2. Un modul poate fi format, la rndul su, din mai multe module. Modulele sunt relativ independente, ceea ce nseamn c modificarea unui modul nu implic neaprat modificarea celorlalte module. Astfel, n cazul modificrii structurii unui program, dac funcia pe care o realizeaz un modul nu este afectat, atunci acel modul va fi utilizat n continuare fr modificri. n fapt, obiectivul principal urmrit la proiectarea modulelor const n identificarea unor module ct mai generale i mai independente ntre ele, care s permit reutilizarea lor n cazul modificrii programelor. De asemenea, modulele pot comunica ntre ele prin transmiterea de date. Fiecare modul are rolul su bine precizat i realizeaz o funcie n cadrul ntregului program, n conformitate cu rezultatele descompunerii funcionale a problemei de rezolvat, realizat prin aplicarea strategiei descendente (top-down). De fapt, din abordarea modular s-a desprins coala descompunerii funcionale3. Metoda presupune identificarea funciilor pe care le va realiza programul n vederea rezolvrii problemei, asocierea unui modul pentru una sau mai multe din funciile identificate, stabilirea legturilor dintre module, obinndu-se astfel structura programului. Dup ce structura programului este clar definit, se trece la transpunerea modulelor n construcii sintactice specifice limbajului de programare ales (scrierea programelor -surs), compilarea acestora i realizarea celorlalte faze necesare obinerii programelor executabile. Avantajele programrii modulare sunt multiple, printre cele mai importante se numr: creterea calitii programelor obinute; ele conin mai puine erori, sunt mai uor de neles i de modificat. Sporirea productivitii i eficienei n activitatea de programare, prin facilitarea lucrului n echip i utilizarea bibliotecilor de subprograme. Uurarea testrii programului prin efectuarea unei testri la nivelul modulelor. Obinerea unor produse-program extensibile, ceea ce permite adugarea unor noi module n programul existent dac ulterior se dorete realizarea unei noi funcii.

2 3

Freniu, M., Prv, B., Elaborarea programelor. Metode i tehnici moderne, Editura Promedia, 1994 Oprea, D., Analiza i proiectarea sistemelor informaionale economice, Editura Polirom, Iai, 1999

7 | IE, an II

March 14, 2013 [MEDII DE PROGRAMARE VIZUAL]

Metoda programrii structurate


Metoda programrii structurate reprezint o dezvoltare a metodei programrii modulare prin introducerea unor noi principii, instrumente i tehnici, cu scopul unei mai bune stpniri a complexitii programelor mari. Complexitatea programului privete dificultatea elaborrii produselor-program odat cu creterea dimensiunii acestora. Complexitatea programelor crete exponenial i nu liniar cu dimensiunea sa. De aceea, obiectivul principal al programrii structurate a fost acela de a introduce ordine i rigoare n elaborarea de produse -program, ca o cale de stpnire a complexitii. Fr a intra n detalii, s spunem c pn n prezent metoda programrii structurate a reuit s realizeze doar parial obiectivul propus. Principiile programrii structurate au fost introduse de Bohm i Jacopini n 1966, atunci cnd ei au demonstrat c pentru a exprima logica intern a oricrui program sunt suficiente trei tipuri de structuri de control: structura secvenial, structura alternativ i structura repetitiv, iar fiecare din aceste structuri, ca parte dintr-un program, are o singur intrare i o singur ieire. Prin umare, programarea structurat ar putea fi definit ca programarea fr instruciunea GOTO. Programarea structurat a fost consacrat la nceputul anilor 70 prin contribuiile a numeroi autori: Dijkstra, Hoare, Mills, Baker, Wirth, Dahl, Warnier etc. n aceast perioad, aplicarea tehnicilor structurate era limitat la activitatea de scriere a programelor, urmrindu -se oferirea unor soluii la urmtoarele probleme: Cum ar trebui s arate un program? Care este legtura dintre structura static i structura dinamic a unui program? Cum poate fi controlat complexitatea unui program atunci cnd mrimea lui crete? Un alt obiectiv urmrit n programarea structurat privete modul de scriere a unui program astfel nct el s fie uor de neles i modificat. Claritatea unui program poate fi obinut, n afara utilizrii celor trei structuri de control fundamentale, prin respectarea urmtoarelor dou reguli: scrierea indentat a textului programului i inserarea de comentarii n textul programului. Metoda programrii structurate a evoluat continuu, n sensul introducerii disciplinei nu doar n scrierea programelor, ci i n celelalte faze ale elaborrii programelor: analiza, proiectarea, testarea etc. Astfel, programarea structurat poate fi definit ntr-un sens restrns i unul larg4. n sens restrns, programarea structurat face referire la activitatea de codificare (scriere a programelor) i reprezint o metod de construire a programelor n conformitate cu un set de reguli care solicit utilizarea unui format strict, a structurilor de control standard i a unui set de construcii logice. n sens larg, programarea structurat reprezint o metodologie care impune disciplin asupra formei programelor, n analiza, proiectarea, scrierea i testarea programelor; ea este o metodologie de programare pentru construirea de programe modulare, ordonate ierarhic, prin utilizarea structurilor de control standard. Astzi, prin programare structurat se face referire la sensul su larg, motiv pentru care se vorbete de filozofia structurat. n concluzie, meritul principal al tehnicilor structurate este acela de a fi preluat toate practicile i experienele acumulate n programare i de a le fi formalizat i standardizat. Programarea structurat preia principiile programrii modulare pe care le dezvolt, dar se deosebete de aceasta cel puin prin dou aspecte: modularizarea ierarhic a programelor i
4

Martin, J., McClure, C., Op. cit., pp. 41-42

8 | IE, an II

March 14, 2013 [MEDII DE PROGRAMARE VIZUAL] utilizarea structurilor de control fundamentale. Avantajele oferite de metoda programrii structurate sunt numeroase, reinnd n continuare doar cteva dintre acestea: creterea calitii programelor; sporirea flexibilitii programelor, ceea ce uureaz ntreinerea lor; organizarea raional a ntregului proces de dezvoltare a programelor; creterea productivitii n dezvoltarea programelor de aplicaie prin specializarea activitilor.

Metoda programrii orientat-obiect


Programarea orientat-obiect pune n centrul ateniei noiunea de obiect, considerat drept o entitate care se poate distinge de alte entiti i care are o semnificaie n contextul aplicaiei modelate. Obiectul asociaz datele i prelucrrile n cadrul aceleiai entiti, rmnnd vizibil doar interfaa obiectului. Obiectele cu proprieti similare, comportament similar i relaii similare fa de alte obiecte constituie o clas de obiecte. Un obiect comport un aspect static, reprezentat prin intermediul unor variabile de stare numite atribute i un aspect dinamic, reprezentat de comportamentul obiectului i implementat prin intermediul metodelor asociate obiectului respectiv. Aspectul static este ascuns de aspectul dinamic. n acest fel, abordarea orientat-obiect se distinge de abordarea structurat. n locul unei structurri separate a datelor i a funciilor (reprezentate de prelucrri), se modeleaz entiti active formate din structuri de date ascunse de funcii. Un program este privit ntr-o manier global, ca un ansamblu de obiecte care interacioneaz prin intermediul mesajelor, fiecare obiect avnd asociat propriul set de operaii. Obiectul, n viziunea programrii orientate-obiect, are urmtoarele caracteristici: identitate: obiectul este o entitate discret care poate fi distins de alte entiti; clasificare: obiectele cu aceleai atribute i operaii sunt grupate n clase, iar un obiect este considerat o instan a clasei din care face parte; polimorfism: aceeai operaie poate avea comportament diferit n funcie de obiectul la care este ataat, implementarea concret a unei operaii ntr-o anumit clas numindu-se metod; motenire: atributele i operaiile se transmit de la o clas la alta de-a lungul unei relaii ierarhice. Pentru transmiterea similaritilor de la o clas de obiecte la alta, n condiiile pstrrii diferenelor ntre acestea, se utilizeaz generalizarea i motenirea. Generalizarea este relaia dintre o clas i una sau mai multe versiuni rafinate ale ei, n care clasa care se rafineaz se numete superclas, iar fiecare versiune mai rafinat se numete subclas. Atributele i operaiile comune sunt grupate n superclas i se spune c sunt motenite de subclase. Punctele forte ale abordrii orientat-obiect constau n capacitatea de a modela obiecte complexe, de a exprima ntr-o manier integrat dinamica obiectelor, ncapsularea acestor obiecte pentru a ascunde implementarea lor, posibilitatea reutilizrii unor componente ale produsului-program. Punctele slabe sunt reprezentarea monolitic a aplicaiilor, ceea ce nu corespunde cu adevrat percepiei ce o avem asupra realitii i marele efort de abstractizare.

9 | IE, an II

March 14, 2013 [MEDII DE PROGRAMARE VIZUAL] Preceptele abordrii orientat-obiect au fost aplicate cu succes mai nti n domeniul programrii, iar de la nceputul anilor 90, ca i n cazul tehnicilor structurate, s -au accentuat preocuprile specialitilor pentru implementarea lor i n celelalte faze ale elaborrii programelor. n consecin, au aprut mai multe metode orientate-obiect de realizare a produselor-program. n vederea simplificrii procesului de dezvoltare a programelor prin abordarea orientatobiect, s-au nregistrat numeroase preocupri de integrare a diferitelor metode orientate-obiect existente. Dintre aceste ncercri, cea mai cunoscut i mai reuit s-a concretizat n standardul UML (Unified Modeling Language). UML a rezultat prin integrarea a trei din cele mai cunoscute metode orientate-obiect: OOD (Object Oriented Design) propus de Booch, OMT (Object Modelling Technique) propus de Rambaugh i OOSE (Object-Oriented Software Engineering) propus de Jacobson. n 1996, OMG Object Management Group i-a manifestat interesul pentru rezultatele muncii celor trei autori, n vederea adoptrii UML ca standard n modelarea orientat obiect. n urma colaborrii i cu ali specialiti din domeniu, UML a fost adoptat ca standard OMG n septembrie 1997, fiind astfel utilizat de majoritatea productorilor de instrumente de dezvoltare a sistemelor informatice i specialiti n domeniu. OMG i-a asumat responsabilitatea dezvoltrii ulterioare a standardului UML.

Programarea vizual
Complexitatea mediilor de dezvoltare a aplicaiilor i bariera artificial ce se interpune ntre programator i aplicaii sunt doar dou impedimente pe care le elimin programarea vizual. n plus, uurina de nvare i exploatare a limbajelor constituie un argument hotrtor n favoarea programrii vizuale. Obiectivul declarat al acesteia este ca programarea s devin mai uoar pentru programatori i mai accesibil nespecialitilor, indiferent de destinaia limbajului: proiectarea rapid a aplicaiilor, prototipizare, simulri etc. n oricare domeniu, limbajele vizuale trebuie s permit utilizatorului s se concentreze asupra problemei ce o are de rezolvat i mai puin asupra limbajului de programare propriu-zis Notaiile vizuale au fost utilizate, practic, de la apariia programrii, ele devenind treptat tot mai complexe. Programatorii au neles facilitile i puterea pe care le confer notaiile vizuale, mai ales n contextul tehnologiilor tot mai sofisticate. n mod natural, oamenii se raporteaz la lumea real n mod grafic, iar imaginile se constituie ca i component principal a gndirii creative. n aceste condiii, limbajele de programare textuale s-au dovedit destul de dificil de nvat pentru oameni de altfel creativi i inteligeni. Prin reducerea sau eliminarea complet a necesitii de a traduce ideile vizuale n reprezentri textuale, uneori artificiale, devine posibil atenuarea curbei de nvare a unui limbaj de programare. Programarea vizual mbrac mai multe forme i acoper o arie larg de aplicaii, de unde i diversitatea opiniilor i a punctelor de vedere. Astfel, unii specialiti consider c acest concept a aprut odat cu mediile de programare precum Visual Basic sau Visual C++. Pentru alii, Visual Basic este nereprezentativ pentru domeniul vast al tehnologiilor care poart eticheta vizual. Ei consider c programare vizual nseamn Prograph (Pictorius), Visual AppBuilder (Novell) sau Parts (Digitalk). Nu exist o definiie unanim acceptat pentru programarea vizual, dar majoritatea specialitilor sunt de acord c este limbaj de programare vizual acela care -i realizeaz toate 10 | IE, an II

March 14, 2013 [MEDII DE PROGRAMARE VIZUAL] sarcinile de programare ntr-o manier vizual, fr a face uz de reprezentarea textual. O definiie frecvent citat consider c programarea vizual nseamn utilizarea de expresii vizuale (grafice, icon-uri, desene) n procesul de programare5. Mai este ntlnit n literatura de specialitate termenul de programare vizual pur care are n vedere modul de proiectare al unui program, prin operare direct asupra unui set de elemente grafice. Operarea direct se realizeaz prin intermediul unor tehnici de interaciune, iar programul se dezvolt fr a scrie instruciuni sub form de text. Pentru Visual Basic i altele asemenea exist noiunea de limbaje de programare transformate vizual, care au implementate anumite tehnici de reprezentare vizual a informaiilor, ce se suprapun unor limbaje textuale6. Un alt concept este cel al mediilor de programare vizual, definite de unii autori ca i mediile n care sunt implementate limbajele de programare vizual. n alte opinii, mediile de programare vizual (Visual Programming Environment) asigur dezvoltarea rapid a aplicaiilor (RAD Rapid Application Development). Ele se caracterizeaz printr-un grad ridicat de utilizare a elementelor grafice i sunt utilizate n scopul accelerrii dezvoltrii i distribuiei aplicaiilor, motiv pentru care sunt denumite i medii de dezvoltare vizual a aplicaiilor. Ar fi poate util o separare ntre aceste dou concepte limbaje de programare vizual i medii de programare vizual. Primul are n vedere limbajele care se sprijin pe tehnicile vizuale pe ntreg parcursul procesului de programare: proiectarea, testarea, depanarea i execuia se realizeaz n acelai mediu vizual. Mediul de programare vizual lucreaz adesea cu reprezentri vizuale suprapuse elementelor textuale. Cele mai des ntlnite n practic sunt limbajele de proiectare a interfeelor grafice care, combinate cu elemente textuale sunt utilizate n proiectarea de aplicaii. Caracteristicile programrii vizuale, care se concretizeaz n simplificarea i optimizarea procesului de programare din punct de vedere al timpului necesar construirii aplicaiei au transformat mediul de programare vizual ntr-un mediu RAD. n categoria mediilor RAD se ncadreaz: Visual Basic, Visual FoxPro i Visual C + + (Microsoft), Delphi (Borland), Visual Objects (Computer Associates), PowerObjects (Oracle), Power Builder (Power Software), SQL Windows (Gupta), VisualAge (IBM). Liderul pieei RAD este Visual Basic, produs de Microsoft. Cei de la Microsoft au observat la timp apariia unei noi categorii de utilizatori, numit generic power users. Aceasta a derivat din cea a utilizatorilor finali i poate fi numit utilizatori finali avansai care, fr a fi profesioniti, au acumulat suficiente cunotine i i pot rezolva singuri o bun parte din problemele curente folosind aceste medii de programare. ntr-un mediu de dezvoltare vizual se cuprind7: mediul de lucru integrat, care asigur dezvoltarea aplicaiei i permite accesul la toate componentele unei aplicaii; instrumente vizuale de descriere a interfeei, folosite pentru a defini form-uri, ferestre de dialog, machete de rapoarte etc. Plasarea controalelor se face prin drag&drop, iar definirea proprietilor printr-un inspector de obiecte;

Shu, N.C., Visual Programming Languages: A Perspective and Dimensional Analysis, International Symposium on New Directions in Computing, Norway, 1985 6 Menzies, T., Evaluation Issues for Visual Programming Languages, www.cse.unsw.edu.au 7 Srbu, M., Dezvoltarea rapid a aplicaiilor, n Byte, nr. 10/1995, pp. 75 -77

11 | IE, an II

March 14, 2013 [MEDII DE PROGRAMARE VIZUAL] limbajul de programare, care este n continuare necesar, n ciuda tuturor facilitilor vizuale oferite de aceste medii de lucru. Acesta este mai mult sau mai puin orientat obiect (exemple: diverse variante de Basic, Pascal, limbaje xBase, SmallTalk); suportul pentru conectarea la diferite surse de date - conectivitatea prin ODBC (Open DataBase Connectivity) este cea mai frecvent ntlnit; componentele vizeaz obinerea unui spor de productivitate n dezvoltarea aplicaiilor i se refer la dou aspecte: utilizarea de componente prefabricate i reutilizarea codului de la o aplicaie la alta; suportul pentru activitile specifice distribuiei (compilarea aplicaiei, realizarea discurilor de instalare, a documentaiei etc.).

Figura de mai jos ilustreaz o parte dintr-o aplicaie scris n Visual Basic. Se observ c este vorba despre o fereastr intitulat CALCUL AMORTIZARE, ceea ce indic scopul utilizrii ei. Ea poart numele de form, termen ntlnit la noi i ca formular sau chiar form. Form-ul reprezint zona principal de lucru, o aplicaie constnd de regul din mai multe form-uri, legate ntre ele n funcie de logica ei. Practic, ntreaga aplicaie se desfoar n limitele form-urilor, pe care sunt plasate diverse componente ce au ataate secvene de cod. Aa cum se observ n figur, astfel de componente sunt: casetele de text (text box), etichete (label), butoane de comand (command button). Ele sunt denumite generic controale (n engl. controls) i sunt de fapt obiecte, descrise printr-o parte static (descriptiv) i una dinamic. Numrul lor este extrem de mare, n fiecare mediu de dezvoltare existnd posibilitatea de a lucra i cu controale externe (numite third-party components, deoarece pot fi create de alte firme i nglobate n aplicaii). n fine, trebuie precizat aici c nsi form-ul este tratat ca un obiect, avnd toate caracteristicile care sunt descrise n continuare. Ca i obiect programabil, un control este definit n primul rnd printr-un ansamblu de proprieti. O proprietate poate fi definit ca un atribut nominalizat al unui obiect programabil. Proprietile definesc att caracteristicile unui obiect (dimensiune, culoare, poziie pe ecran), ct i modul n care se comport un obiect (de exemplu, un obiect poate fi la un moment dat, activ sau inactiv, sau poate fi afiat pe form sau ascuns). Orice proprietate a unui obiect are o valoare care se poate modifica la proiectare i/sau execuie.

12 | IE, an II

March 14, 2013 [MEDII DE PROGRAMARE VIZUAL]


form-ul etichete

casete de text

butoane de comand

Form-ul CALCUL AMORTIZARE, realizat n Visual Basic

Orict de multe proprieti ar avea, un obiect este complet descris cu ajutorul metodelor, pentru c acestea indic ce face obiectul. Deci, proprietile descriu un obiect, n timp ce metodele permit unui obiect s fac ceva. Proprietile sunt date, metodele sunt secvene de instruciuni. O metod reprezint o procedur asociat sau incorporat, un bloc de cod care poate fi invocat pentru a asocia o anumit aciune unui obiect. n Visual Basic, o metod nu se poate modifica. Exist totui o clas special de metode care se pot modifica, nu mite proceduri eveniment. Procedura eveniment este un subprogram ataat unui obiect care conine rspunsul obiectului la proceducerea unui eveniment. Procedurile eveniment sunt cele care particularizeaz comportamentul unui obiect ntr-o aplicaie. n varianta Visual Basic - ca i a celorlalte medii vizuale de dezvoltare - programul const dintr-un ansamblu de rutine, cele mai multe avnd dimensiuni reduse. Acestea se numesc proceduri eveniment i fiecare trateaz un eveniment individual. O astfel de procedur se execut dac i numai dac se produce evenimentul pentru care ea a fost scris. Altfel spus, un program va rspunde unui eveniment care se produce la rulare numai dac a fost scris o procedur pentru evenimentul respectiv, altfel acesta va fi ignorat. Fiecare control plasat pe un form suport mai multe evenimente. De exemplu, o caset de text poate rspunde la unul din urmtoarele evenimente: clic, dublu clic, introducerea unui text. Dac pentru evenimentul clic este scris o procedur, atunci cnd ruleaz aplicaia i se execut clic pe caseta de text (se produce n acest fel evenimentul) se va lansa automat n execuie procedura definit. Cele prezentate mai sus ne ndreptesc s considerm mediile de dezvoltare vizual a aplicaiilor mai mult drept limbaje/medii multiparadigm, ele reunind principii ale: programrii vizuale (manipularea de reprezentri vizuale); programrii OO (lucrul cu obiecte, principiile ncapsulrii i reutilizrii); programrii dirijate de evenimente; programrii structurate (utilizarea structurilor de control fundamentale n cadrul procedurilor). 13 | IE, an II

S-ar putea să vă placă și