Sunteți pe pagina 1din 45

I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.

ro

1
Cursul 1/Sem2
1. Conceptul de program (recapitulare!)
Programul este un ansamblu de instructiuni, scrise intr-un limbaj de programare, pe care calculatorul
le executa pentru a indeplini o anumita sarcina .

Programul trebuie sa contina doua categorii de informatii:
a) descrierea datelor de intrare, de iesire si auxiliare care vor fi prelucrate;
b) descrierea algoritmului aplicat pentru prelucrarea acestor date.
Program = Date + Algoritm
Aceasta formula pune in evidenta legatura stransa dintre date si algoritm si atentia care trebuie sa li se
acorde ambelor componente la elaborarea programului.






I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

2
+ Octave/Matlabetc

2. Paradigme de programare
Model: o reprezentare simplificata sau o abstractizare a unui sistem.
Paradigma: permite specificarea unui model de rezolvarea a unei probleme.
Observatii:
Paradigma de programare - o clasa de limbaje: daca limbajul de programare in care va fi
implementata solutia, ofera aceleasi constructii si mecanisme ca si paradigma atunci
implementarea, verificarea solutiei se fac mult mai simplu.
De multe ori, un limbaj de programare poate apartine mai multor paradigme; astfel C++ include
caracteristici ale paradigmelor imperativa si procedurala, ca predecesorul C, dar si ale celei de
orientare pe obiecte.
Paradigma Imperativa : Se caracterizeaza printr-un model abstract al unui calculator cu o memorie
foarte mare, modelul clasic von Neumann. Solutiile se gasesc prin prelucrari care cuprind asignari,
citiri, operatii aritmetice si logice, selectii ( if-else ) pentru controlul fluxului executiei. Din aceasta
clasa de limbaje fac parte cele de asamblare sau BASIC.
Paradigma Procedurala: Extinde cea anterioara cu un mecanism de abstractizare, cel al procedurilor
cu parametri. Alte facilitati sunt iteratia, recursivitatea, selectia. Din aceasta clasa fac parte limbajele
FORTRAN, Pascal, C. Un sistem se modeleaza ca un set de algoritmi ( proceduri ) si unul de date. Desi
mecanismul de abstractizare oferit de aceasta paradigma, procedurile, reprezinta un mecanism puternic,
dezavantajul este cel al slabei legaturi dintre procedura si datele manipulate.
Paradigma Procedurala cu Tipuri de Date Abstracte: Clasa de limbaje include CLU, Ada, Modula-
2; un TDA este un model matematic pe care se defineste un set de operatori; implementarea si
reprezentarea datelor pot fi realizate in variante diferite, cu performante diferite. Exemplu: o stiva are
operatorii Push, Pop, IsEmpty, si se poate implementa ca tablou, lista simplu sau dublu inlantuita.
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

3
Paradigma Orientare pe Obiecte: Notiunea de baza este cea de obiect, o entitate logica, compus din
date si operatorii asupra acestora. Limbaje din aceasta clasa sunt Smalltalk, C++, Objective-C, CLOS
(the Common Lisp Object System ), Java etc.
"Daca procedurile si functiile sunt verbe, iar blocurile de date sunt substantive, un program procedural
este organizat in jurul verbelor, in timp ce un program orientat pe obiecte este organizat in jurul
substantivelor" - G.Booch: "Object-Oriented Analysis with Applications", Addison-Wesley, 1994.
Definitia data de Booch Programarii Orientate pe Obiecte: "POO este metoda de implementare in
care programele sunt organizate ca si colectii de obiecte ce coopereaza intre ele, fiecare obiect
reprezentand instanta unei clase; fiecare clasa apartine unei ierarhii de clase, clasele fiind unite
prin relatii de mostenire".
Exemple:












I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

4


Cele trei caracteristici ale paradigmei OO sunt:
Incapsularea - este mecanismul care leaga datele de operatorii asupra lor; este deci mecanismul care
permite crearea unui obiect; un obiect este o instantiere ( o variabila ) a unui tip, clasa, creat de
utilizator;
Mostenirea - este mecanismul care permite crearea de noi obiecte, din cele existente; noile obiecte
preiau, mostenesc, metode si date de la obiectul parinte, putand sa modifice altele; acest mecanism face
posibil ca un obiect sa fie un exemplar specific al unui caz mai general;
Polimorfismul - este mecanismul caracterizat de expresia " o interfata, metode multiple "; permite unei
interfete sa fie folosita cu o clasa generala de actiuni, deci obiecte de tipuri diferite sa execute aceeasi
operatie.
Scrierea unui program OO implica determinarea obiectelor necesare; acestea vor realiza prelucrarile
care definesc comportarea sistemului. Obiectele sunt responsabile pentru modificarea datelor proprii,
sunt deci self-contained.
Pentru Paradigma OO ( programarea OO ) - POO au fost dezvoltate metodologii diferite de proiectare -
Coad - Yourdon, Booch Rumbaugh.
In esenta, proiectarea OO cuprinde urmatoarele activitati:
Identificarea entitatilor, deci a obiectelor ce apar in domeniul aplicatiei, prin evidentierea
substantivelor din enuntul problemei
Pentru fiecare obiect se identifica datele si operatiile, prin evidentierea adjectivelor si verbelor
ce caracterizeaza substantivul respectiv
Identificarea relatiilor dintre entitati
Crearea unei ierarhii de clase in C++ plecand de la aceste entitati
Implementarea claselor si a sistemului
Testarea si punerea la punct.
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

5
3. Minimul de resurse necesare pentru a elabora programe in Java


Un program in limbajul Java parcurge urmatoarele etape:
1. Conceperea programului. Aceasta etapa include formularea problemei, alegerea modului de
rezolvare, stabilirea structurilor de date si alegerea algoritmului de calcul si se face, cel putin in cazul
aplicatiilor mici, fara a folosi calculatorul.
2. Editarea fisierului (fisierelor) sursa. Se editeaza pe calculator unul s-au mai multe fisiere de text,
care contin programe in limbajul Java. Acestea se numesc fisiere sursa. Pentru editarea lor se poate
folosi orice editor de texte simplu (cum sunt Edit din sistemul MS-DOS sau Notepad sub Windows sau
orice editor in mod text din sistemele Unix sau Linux). Fisierele sursa au extensia java.
3. Compilarea. Fisierele sursa, editate in limbajul Java, se compileaza pentru a obtine programele
binare sub forma de coduri de octeti (bytecode). In acest scop se foloseste un compilator, iar fisierele
obtinute prin compilare au extensia class. Daca exista erori de sintaxa, compilatorul le semnaleaza si nu
genereaza cod de octeti. Programatorul trebuie sa elimine erorile respective din fisierul sursa si sa il
compileze din nou. Acest procedeu se repeta pana cand se elimina toate erorile de sintaxa si se obtine
fisierul cu extensia class corespunzator.
4. Testarea si depanarea programelor. Codul de octeti obtinut prin compilare (fisierul cu extensia
class) nu ami contine erori de sintaxa, dar poate contine erori semantice sau de conceptie. Un astfel de
program va putea fi executat, dar rezultatele nu vor fi corecte. Pentru a depista astfel de erori,
programul este executat cu date de test, confruntandu-se rezultatele obtinute prin program cu cele
corecte pentru datele respective. Daca apar neconcordante, programul trbuie depanat, adica trebuie
gasite instructiunile gresite si inlocuite cu altele corecte. Pentru depanare se poate folosi un program
depanator.
5. Executarea. Pentru executarea unei aplicatii Java este necesar sa se foloseasca un interpretor JVM
Compilatorul Java, numit javac;
Interpretorul Java, numit java;
Vizualizatorul de miniaplicatii numit appletviewer;
Depanatorul de programe Java numit jdb (Java debugger);
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

6
Generatorul de fisiere de documentatie javadoc;
O colectie arhivata de pachete de clase necesare pentru elaborarea programelor.

Se ofera, de asemenea, o serie de aplicatii si miniaplicatii demonstrative, pentru care se dau si
programele sursa, care pot fi foarte utile pentru o mai buna insusire a limbajului de catre programatori.
Dintre cele patru etape enumerate mai sus, compilarea se face folosind compilatorul javac, executarea
aplicatiilor se face folosind interpretorul java, iar executarea miniaplicatiilor (appleturilor) se face
folosind vizualizatorul appletviewer.


4. Prima aplicatie in limbajul Java
4.1. Editarea programului
Ca o prima aplicatie, ne propunem sa scriem un program in limbajul Java, care sa afiseze pe ecranul
calculatorului cuvintele "Cursul 2!". Este evident ca aceste cuvinte vor apare pe ecran numai daca
executarea aplicatiei noastre a reusit cu adevarat!
Pentru aceasta, folosind un editor de texte, vom edita un fisier numit PrimaAplicatie.java, in
care vom introduce urmatorul program:
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

7
/* Prima aplicatie in limbajul Java.
Programul afiseaza un text pe ecran.
*/
class PrimaAplicatie {
public static void main(String args[]) {
System.out.println("Cursul 2!");
}
}

Editam, compilam si rulam programul cu NetBeans (IDE-Integrated Developmnet Environment)
Pentru download: www.netbeans.org

4.2. Forme sintactice folosite:
4.2.1. Forma sintactica a definitiei unei clase
Intrucat Java este un limbaj de programare orientat pe obiecte, programul insusi este considerat un
obiect care apartine unei clase.
O clasa se defineste, respectand urmatoarea forma generala:
class <nume_clasa> {
<corpul_clasei>
}
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

8
In exemplul de mai sus, simbolul neterminal <nume_clasa> a fost inlocuit de noi cu numele aplicatiei
PrimaAplicatie, iar <corpul_clasei> , consta in cazul nostru, din metoda (procedura) main(),
pentru care s-a respectat forma generala data in continuare. Cuvantul cheie class si cele doua acolade
sunt simboluri terminale, prezenta lor fiind obligatorie.

4.2.2. Forma sintactica a metodei main()
public static void main(String args[]) {
<corpul_metodei_main>
}
Prima linie a acestei forme sintactice contine cuvintele cheie public static void, numele
metodei, main si declararea unui parametru, String args[]. Corpul metodei main este cuprins
intre doua acolade, care sunt si ele obligatorii. Semnificatiile tuturor acestor componente vor fi
explicate in capitolele urmatoare. Pentru inceput, consideram doar ca aceasta forma sintactica este un
sablon care trebuie respectat.
4.2.3. Forma sintactica a unei aplicatii simple
Substituind in forma sintactica a clasei simbolul neterminal <corpul_clasei> prin forma sintactica
a metodei main, obtinem urmatoarea forma sintactica a unei aplicatii simple, in care clasa aplicatiei
contine o singura metoda:
class <nume_clasa> {
public static void main(String args[]) {
<corpul_metodei_main>
}
}
Aceasta forma va fi respectata de noi in toate exemplele de aplicatii pe care le vom da in prima parte a
acestui manual. Vom introduce apoi si aplicatii care contin mai multe metode. Orice aplicatie trebuie
sa contina metoda main(). Definirea claselor care nu sunt aplicatii (si deci nu contin metoda main),
este o problema care se va trata in studiul mai aprofundat legat de Programare orientata pe obiecte in
limbajul Java
In exemplul nostru, corpul metodei main este alcatuit dintr-o singura instructiune:
System.out.println("Cursul 2!");
In aceasta instructiune este invocata metoda println(), care apartine dispozitivului de iesire out
(in cazul nostru ecranul) din clasa System. Prin aceasta metoda se cere sa se afiseze pe ecran linia de
text: "Prima noastra aplicatie a reusit".
4.2.4. Comentarii in fisierele sursa
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

9
Comentariile sunt texte explicative, care nu sunt luate in consideratie de catre compilator, dar pot fi
utile omului pentru o mai buna intelegere a programului.
Fisierele sursa in limbajul Java pot contine trei forme de comentarii:
a/ comentarii care se pot extinde pe mai multe linii din fisier succesive si sunt scrise sub forma
/* <textul_comentariului> */
b/ comentarii "de sfarsit de linie", care au forma
// <textul comentariului>
in care textul comentariului se extinde de la simbolul // pana la sfarsitul liniei pe care acesta se afla;
c/ comentarii pentru documentarea automata a programului, scrise sub forma:
/** <textul comentariului> */
si se deosebesc de cele de la punctul a numai prin faptul ca incep prin simbolul /**.

4.2.5. Indentarea
Se numeste indentare decalarea inceputului liniilor de text fata de marginea din stanga a paginii.
In limbajul Java, compilatorul admite ca instructiunile programului sa fie scrise una in continuarea
celeilalte. Sfarsitul unei instructiuni este detectat de compilator prin prezenta terminatorului ';' (punct si
virgula). Trecerea la linie noua in fisierul sursa nu este necesara pentru compilator, ci pentru o mai
usoara urmarire a programului la citirea lui de catre om. Tocmai in acest scop, este recomandabil sa se
respecte anumite conventii de "punere in pagina " a textului programului.
Atunci cand o forma sintactica este cuprinsa in alta, cea din interior este indentata, adica deplasata spre
dreapta fata de cea in care este cuprinsa. De exemplu, in forma class, acolada de inceput a corpului
clasei este pusa pe prima linie, iar acolada de sfarsit este aliniata exact sub prima litera a liniei de
inceput, respectiv a cuvantului cheie class. In schimb corpul clasei (respectiv metoda main()) a
fost scris decalat spre dreapta. Aceeasi conventie s-a aplicat si in cazul metodei main(): Acolada
care precede corpului metodei a fost pusa pe linia de titlu, iar acolada de sfarsit a fost pusa sub prima
litera a acestuia; in schimb corpul metodei a fost decalat spre dreapta.
Aplicarea conventiei de indentare prezentata aici are urmatoarele avantaje:
- se poate urmari cu usurinta unde cum sunt incorporate diferite forme sintactice una in alta;
- se poate verifica cu usurinta daca nu s-a uitat sa se puna acolada de inchidere a unei astfel de
forme;
- se poate verifica cu usurinta carei forme ii corespunde fiecare acolada.

4.3. Compilarea si executarea programului
Compilarea si executarea programului se fac in regim interactiv, prin dialog cu sistemul de operare al
calculatorului. Intucat promptul sistemului (simbolul pe care acesta il afiseaza cand asteapta o
comanda de la utilizator) difera de la un sistem de operare la altul, in cele ce urmeaza vom considera ca
acesta este simbolul $. De asemenea, pentru a distinge comenzile introduse de utilizator de textele
afisate de calculator, le vom reprezenta pe primele cu caractyere italice (inclinate).
Compilarea si executarea exemplului PrimaAplicatie se va face din subdirectorul care contine fisierul
sursa al aplicatie si va decurge astfel:

> javac PrimaAplicatie.java
> java PrimaAplicatie
Cursul 2!
>
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

10

Prima comanda din secventa de mai sus a pus in functiune compilatorul javac, dandu-i ca parametru
numele fisierului sursa PrimaAplicatie.java. Ca rezultat al compilarii, in subdirectorul nostru,
in care se gaseste si fisierul sursa, a aparut fisierul PrimaAplicatie.class, care contine
programul compilat sub forma de cod de octeti (bytecode). Se poate verifica aceasta cu usurinta, dand
comanda dir. Compilatorul nu a semnalat erori, intrucat acestea nu au existat in program, astfel ca,
dupa incheierea compilarii, s-a revenit in sistemul de operare, care a afisat din nou promptul $,
asteptand o noua comanda.
A doua comanda a pus in executie interpretorul java, dandu-i ca parametru numele clasei
PrimaAplicatie (de data aceasta fara extensia class). Interpretorul a executat programul si - ca
rezultat - pe ecran a aparut afisat textul:
Cursul 2!
dupa care comanda a fost redata sistemului de operare, care a afisat iarasi promptul $.

4.4. Cazul prezentei in program a unor erori de sintaxa
Daca in program exista erori de sintaxa, compilatorul le semnaleaza si nu genereaza cod de octeti, deci
programul nu poate fi executat. Programatorul trebuie sa corecteze aceste erori, dupa care sa ceara
recompilarea. Este posibil ca si de aceasta data sa se constate erori, care trebuie corectate. Se reitereaza
acest ciclu compilare-corectare pana cand se constata ca nu s-au mai semnalat erori.
Ca exemplu, sa consideram fisierul sursa PrimaAplicatie1.java in care s-a alterat fisierul din
exemplul anterior, introducandu-se intentionat o eroare. Incercarea de a compila acest fisier decurge
astfel:
> javac PrimaAplicatie1.java
PrimaAplicatie1.java:7:String not terminated at end of line.
System.out.println("Cursul 2!);
^
PrimaAplicatie1.java:8: ')' expected.
}
^
2 errors
>
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

11
La semnalarea erorilor, compilatorul furnizeaza urmatoarele informatii:
- numele fisierului sursa, urmat de numarul liniei din fisier in care s-a gasit eroarea si de explicarea
erorii. De exemplu: in fisierul PrimaAplicatie1.java, linia 7, s-a gasit un sir de caractere (engl:
string) care nu este terminat pana la sfarsitul liniei, adica ghilimelele cu care s-a inceput acest sir nu se
inchid pana la sfarsitul liniei respective;
- reproducerea liniei in care s-a constatat eroarea, semnalandu-se sub ea prin caracterul ^ locul in care
aceasta eroare a fost constatata; in exemplul nostru, se indica pozitia la care incepe sirul de caractere in
cauza.
- numarul total de erori constatate.
Cea de a doua eroare semnalata in exemplul de mai sus este mai subtila: intrucat nu s-a depistat in
linia 7 sfarsitul sirului (caracterul " prin care trebuie sa se incheie acesta), se considera ca toate
caracterele existente pana la sfarsitul liniei respective fac parte din acest sir. Compilatorul cauta, deci,
in continuare paranteza prin care ar trebui sa se incheie argumentul metodei println(). Constata
ca, in linia 8, a gasit deja acolada de sfarsit al metodei main() fara sa fi intalnit paranteza cautata,
ceeace a si semnalat. Au fost deci constatate in total 2 erori, desi efectiv exista una singura.
4.5. Afisarea pe ecran a unor texte
Prezentam modul in care se pot realiza in limbajul Java aplicatii, al caror unic obiectiv este afisarea pe
ecran a unor mesaje sub forma de text.
Orice text este format din una sau mai multe linii de text, iar fiecare linie de text este un sir de
caractere, care se termina cu un caracter special de sfarsit de linie.
Prin caracter intelegem aici orice simbol tipografic elementar: o litera, o cifra, un semn de punctuatie
etc.
4.5.1. Metodele print si println
Pentru afisarea pe ecran a sirurilor de caractere se pot folosi urmatoarele doua instructiuni:
System.out.print(<sir_de_caractere>);
System.out.println(<sir_de_caractere>);
Prin <sir_de_caractere> se intelege o succesiune de caractere oarecare, cuprinse intre ghilimele,
de exemplu "abcd 123 *&^ XYmn". Iata exemple de astfel de instructiuni:
System.out.print("Acesta este un exemplu de sir");
System.out.println("Acesta este un exemplu de sir");
Prima instructiune afiseaza pe ecran sirul de caractere primit ca argument, fara a trece la linia
urmatoare. In schimb, a doua instructiune, dupa ce a afisat acest sir da si comanda de trecere la
inceputul liniei urmatoare. In engleza print inseamna "tipareste". Denumirea println este o
prescurtare de la print line (tipareste o linie).
Mentionam ca, in limbajul Java, orice instructiune se incheie cu simbolul ';' (punct si virgula).
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

12
Exemplu:
class Afisari {
public static void main(String argv[]) {
System.out.print("Acesta este ");
System.out.print("un exemplu de");
System.out.println(" linie de text");
System.out.print("Iar aceasta");
System.out.println(" este o alta linie");
}
}
Variante pentru compilarea si executarea acestui nou program:
1. NetBeans:................................
2. Din linie de comanda:
>javac Afisari.java
>java Afisari
Se va afisa:
Acesta este un exemplu de linie de text
Iar aceasta este o alta linie
$
Observatie: cand in program s-a folosit metoda print(), afisarea sirului de caractere urmator s-a
facut pe aceeasi linie, in continuarea ultimului sir afisat. Pentru ca intre cuvinte sa apara un spatiu liber,
a fost necesar sa avem grija sa-l introducem fie la sfarsitul unui sir (de ex. dupa "Acesta este "), fie la
inceputul celui urmator (de ex. " linie de text"). In schimb, cand s-a folosit metoda println(), dupa
afisarea sirului corespunzator s-a trecut la linie noua.
Putem folosi metoda println() fara a afisa nimic, numai pentru a trece la linie noua, ca in
urmatorul exemplu de program:
class Afisari1 {
public static void main(String argv[]) {
System.out.println("Prima linie");
System.out.println();
System.out.println();
System.out.println("A patra linie");
}
}
Variante pentru compilarea si executarea acestui nou program:
1. NetBeans:.....................
2. Din linie de comanda:
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

13
>javac Afisari1.java
>java Afisari1
Se va afisa:
Prima linie

A patra linie
$
Observam cu usurinta ca efectul celor doua instructiuni succesive System.out.println() a fost
afisarea a doua "linii vide" (liniile a doua si a treia).
4.5.2. Concatenarea sirurilor
Prin concatenarea a doua siruri se obtine un nou sir, format din cele doua puse unul dupa altul. In
limbajul Java, concatenarea sirurilor se indica prin operatorul '+'. Astfel, rezultatul concatenarii
"Acesta este "+"un sir concatenat"
va fi sirul:
"Acesta este un sir concatenat"
Operatia de concatenare este asociativa, astfel ca expresia:
"Acesta "+"este "+"un "+sir"
genereaza sirul:
"Acesta este un sir".
Remarcam ca, in toate cazurile, a trebuit sa avem grija sa introducem, acolo unde erau necesare, si
spatiile libere dintre cuvinte.
Ca exemplu putem da programul:
class Afisari2 {
public static void main(String argv[]) {
System.out.println("Acesta " + "este un " + "sir");
}
}
Variante pentru compilarea si executarea acestui nou program:
1. NetBeans:.......................
2. Din linie de comanda:
>javac Afisari2.java
>java Afisari2
Acesta este un sir
>
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

14
Am obtinut rezultatul asteptat, adica afisarea unui singur sir, rezultat din concatenare.
fisierului sursa), deci va fi pus in executie tot prin instructiunea java Afisari2.
5. Unitatile lexicale ale limbajului Java
Unitatile lexicale, numite si lexeme (engl. token, lexeme) sunt unitatile lexicale minime ale limbajului.
Acestea sunt simboluri, formate din unul sau mai multe caractere, care au o anumita semnificatie in
limbaj. Dupa rolul indeplinit, unitatile lexicale sunt: identificatori, cuvinte cheie, cuvinte rezervate,
literali, separatori, operatori, comentarii si spatii.
5.1. Identificatori
Numele date programelor sau componentelor acestora (clase, variabile, metode etc.) se numesc
identificatori. Identificatorii se aleg de catre programator, respectand anumite reguli.
In limbajul Java, identificatorii sunt siruri formate din litere, cifre si caractere de subliniere ('_'), care
incep cu o litera. Lungimea identificatorului nu prezinta importanta, insa acesta nu poate contine spatii
libere sau alte caractere, decat cele mentionate aici.
Exemple de identificatori valabili:
PrimaClasa
aplha
viteza
v15XB7
pretDeVanzare
pret_de_vanzare
Este clar acum ca si exemplele date anterior ( Afisari, main, String, argv, system,
out, print, println) sunt, de asemenea, identificatori.
Se obisnuieste ca numele de clase sa inceapa cu litera majuscula. De asemenea, se obisnuieste ca
separarea intre cuvinte, in cadrul identificatorilor compusi din mai multe cuvinte ale limbajului natural,
sa se faca incepand fiecare cuvant cu litera majuscula, dar se poate face si prin caracterul de subliniere
'_'. Acestea nu sunt insa reguli sintactice, ci doar conventii neobligatorii.
Programatorul poate adopta orice identificatori care respecta regulile si conventiile de mai sus. Desigur
insa ca folosirea unor identificatori care au semnificatie pentru om, cum ar fi viteza sau PretDeVanzare
este preferabila celor fara semnificatie, cum ar fi v15XB7, deoarece usureaza intelegerea programului.
Amintim insa ca, pentru calculator, identificatorii nu au nici o alta semnificatie, deci, din acest punct de
vedere, toate exemplele de identificatori date aici sunt la fel de bune.
5.2. Cuvinte cheie si cuvinte rezervate
In orice limbaj de programare, exista un set de cuvinte, numite cuvinte cheie, care sunt considerate
simboluri sintactice si nu pot fi folosite in program ca identificatori.
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

15
In limbajul Java, exista urmatoarele cuvinte cheie:
abstract double int strictfp
boolean else interface super
break extends long switch
byte final native synchronized
case finally new this
catch float package throw
char for private throws
class goto protected transient
const if public try
continue implements return void
default import short volatile
do instanceof static while
Dintre acestea, const si goto nu sunt folosite in prezent, dar ele au fost introduse in tabela
cuvintelor cheie in vederea unei eventuale utilizari viitoare.
Observam acum ca toate exemplele de cuvinte cheie date la inceputul acestui subcapitol (class,
public, static, void) sunt prezente in tabela de mai sus.
5.3. Cuvinte rezervate
Se considera cuvinte rezervate acele cuvinte, care nu pot fi folosite ca identificatori, avand semnificatii
speciale. Cuvintele cheie sunt si ele considerate in majoritatea limbajelor, inclusiv Java, drept cuvinte
rezervate. In afara de acestea, in limbajul Java exista urmatoarele cuvinte rezervate: true, false,
null.
Primele doua sunt valorile logice adevarat si fals, iar al treilea are semnificatia de referinta nula. De
fapt, aceste cuvinte rezervate sunt o forma speciala de literali.
5.4. Literali
Literalii sunt reprezentarile in fisierele sursa ale valorilor constante. Exemple de literali:
- caractere: 'a', 'A', '+', '$', '5';
- siruri de caractere: "sir de caractere", "abc$79.28#^z";
- numere intregi: 14726, -25413;
- numere reale: 12.7389, -0.05673, 2.3075E12, -1.4237E-5;
- valori logice: true, false;
- referinta nula: null.
Am subliniat faptul ca literalul este forma sub care o anumita valoare este reprezentata in fisierul
sursa, deci in programul scris in limbaj de nivel superior (in cazul nostru in limbajul Java). Reamintim
ca forma de reprezentare a acelorasi valori in memoria interna a calculatorului (forma interna) este
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

16
diferita de cea externa. Vom reveni asupra regulilor de scriere a literalilor in capitolul urmator, cand
vom prezenta tipurile de date din limbajul Java.
5.5. Separatori
Separatorul este un caracter care delimiteaza formele sintactice sau le separa intre ele. In limbajul Java
se folosesc urmatorii separatori:
{ } ( ) [ ] ; , .
Spatiul liber si operatorii indeplinesc, de asemenea, rolul de separatori.
Aproape toti acesti separatori au fost deja folositi in exemplele date in acest capitol.

5.6. Operatori
Operatorii sunt simboluri ale unor operatii. Am folosit deja simbolul + ca operator de concatenare
(deci simbol al operatiei de concatenare). Operatorul opoate fi format din unul sau mai multe caractere.
Entitatea asupra careia se aplica operatorul se numeste operand. Dupa numarul de operanzi deosebim:
operatori unari, care se aplica unui singur operand, de ex. operatorul - in expresia -x; utilizarea
operatorului unar se face, de regula, sub forma "prefix" operator operand, in care operatorul
se pune in fata operandului; uneori insa se foloseste si forma "postfix"
operand operator
in care operatorul se pune dupa operand;
operatori binari, care se aplica asupra a doi operanzi, fiind situat intre acestia; de ex. operatorul de
concatenare + in expresia "acesta este "+" un exemplu" sau operatorul de adunare a doua
numere + in expresia 17+28.Operatorii binari se folosesc sub forma "infix"
operand1 operator operand2
in care operatorul este situat intre cei doi operanzi;
operatori ternari, care se aplica asupra a trei operanzi; in limbajul Java exista un singur operator
ternar ( ? :) folosit in expresiile conditionale. Operatorul ternar se scrie sub forma
operand1 ? operand2 : operand3
in care operand1 are o valoare logica (true sau false), iar ceilalti doi operanzi reprezinta
actiuni.
Din exemplele de mai sus, observam ca semnificatia unui operator poate sa depinda de context, ca in
cazul operatorului +, care a fost folosit atat pentru operatia de concatenare a sirurilor, cat si pentru cea
de adunare a numerelor.
Lista a operatorilor folositi in limbajul Java (se vor discuta si analiza in cursurile si laboratoarele
urmatoare):
+ - * / % ++ --
== <= >= !=
& | ~ ^
&& || !
<< >> >>>
= += -= *= /= &= |= ^= ~= <<= >>= >>>=
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

17
() [] {} .
new instanceof
?:
Din punct de vedere matematic, operatorii sunt functii cu unul, doua sau trei argumente
(argumentele fiind operanzii).
Aplicatie (Tema: de rulat si analizat programul !!!!!!)

Considerand urmatoarele
instructiuni scrise
intr-un program Java,
care sunt valorile lui
n si x dupa executarea
fiecarei instructiuni?
int n=0, x=1;
n=x++ + x++;
n=n++ - x++;
n=x-- - x++;
class A1{
public static void main(String [] args){
int n=0, x=1;
n=x++ + x++;
n=n++ - x++;
n=x-- - x++;
System.out.println ("n = +n+x = +x);
}
}

5.7. Comentarii
Dupa cum s-a aratat deja, in fisierele sursa pot fi introduse comentarii, care au rolul de a da omului,
care citeste programul respectiv, anumite explicatii necesare pentru o mai buna intelegere a acestuia.
Din punct de vedere sintactic, intregul comentariu este privit ca o singura unitate lexicala, care este
ignorata de catre compilator, deci nu are efect asupra codului de octeti generat de acesta.
5.8. Spatii
Intre unitatile lexicale ale programului pot fi introduse oricat de multe spatii libere, fara ca acestea sa
aiba influenta asupra sintaxei sau semanticii programului. Mai multe spatii libere succesive sunt tratate
de compilator ca si cand ar fi un singur spatiu.
5.9. Conceptul de tip de date
Prin tip de date (data type) se intelege o multime de valori, careia i se asociaza o multime de operatii
asupra valorilor respective.
In fiecare limbaj de programare exista un set de tipuri de date primitive, numite si tipuri de date
fundamentale sau elementare. Acestea sunt tipuri predefinite in limbajul respectiv, deci ele nu trebuie
sa fie definite de catre programator. Cu ajutorul acestor tipuri primitive, programatorul poate sa
construiasca propriile sale tipuri de date derivate. In acest scop, limbajul de programare ii pune la
dispozitie anumite modalitati de construire.
In principiu, majoritatea limbajelor de programare admit ca tipuri de date primitive numerele intregi si
reale, caracterele si valorile logice (booleene). Pot exista insa mai multe tipuri de numere intregi sau
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

18
reale, care sa difere intre ele prin lungimea zonei de memorie alocate. Pot exista, de exemplu, numere
intregi reprezentate pe unul, doi, patru sau opt octeti, ele fiind considerate tipuri de date diferite.
In cele ce urmeaza, vom descrie tipurile de date primitive ale limbajului de programare Java, aratand
pentru fiecare modul de reprezentare in memorie, multimea de valori si multimea de operatii.
Tipurile de date primitive in limbajul Java
In limbajul Java exista urmatoarele tipuri de date primitive:
A. Tipul de date void este folosit pentru a arata lipsa unui tip de date (in engleza, void
inseamna gol, vid, lipsa, fara valoare. Este folosit acolo unde sintaxa instructiunii cere un tip de date,
dar - in situatia data - in locul respectiv nu trebuie indicata o anume valoare. Un exemplu este folosirea
tipului void in definirea metodei main().
B. Date logice: tipul boolean, care contine valorile logice true (adevarat) si false (fals).
C. Date sub forma de caractere: tipul char, care contine toate caracterele: litere, cifre, semne de
punctuatie, simboluri matematice etc.
D. Date numerice:
D1. Numere intregi de diferite lungimi
byte - numere intregi reprezentate intern pe un octet;
short - numere intregi reprezentate intern pe doi octeti;
int - numere intregi reprezentate intern pe patru octeti;
long - numere intregi reprezentate intern pe opt octeti;
D2. Numere reale (in virgula mobila) cu diferite precizii
float - numere reale in simpla precizie (reprezentate intern pe patru octeti);
double - numere reale in dubla precizie (reprezentate intern pe opt octeti).

5.10. Variabile. Declaratii de tip
Conceptul de variabila
In matematica, variabila este un simbol caruia i se asociaza o valoare dintr-o anumita multime
de valori, care constituie domeniul de definitie al variabilei respective.
In programare, valoarea variabilei trebuie sa fie reprezentata in memoria calculatorului la o
anumita adresa, iar in locul domeniului de definitie trebuie specificat tipul de date
corespunzator. De asemenea, simbolul variabilei este inlocuit printr-un nume, care este un
identificator. In consecinta, numim variabila o zona de memorie care poarta un nume si care
pastreaza o anumita valoare, apartinand unui tip de date.
Programatorul care foloseste un limbaj de nivel inalt, cum este si limbajul Java, nu trebuie sa
cunoasca adresa de memorie, la care este plasata valoarea variabilei, si nici reprezentarea
interna a acesteia, fiind suficient sa-i cunoasca numele si tipul. Alocarea de spatiu in memorie
pentru fiecare variabila se face, dupa caz, de catre compilator sau interpretor. In schimb, numele
si tipul trebuie declarate de catre programator.
In limbajul Java, orice variabila trebuie declarata inainte de a fi utilizata. Prin declararea
variabilei se intelege precizarea, pentru compilator, a tipului si numelui acesteia. Initializarea
variabilei se face atunci, cand acesteia i se da pentru prima data o valoare si deci i se aloca
spatiu in memorie. Daca, la declararea variabilei, aceasta nu este si initializata in mod explicit,
atunci ea este initializata cu o valoare implicita, care va fi specificata la descrierea fiecarui tip.
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

19
6. Anexe
6.1. Anexa 1: Utilizare NetBeans

La fiecare laborator se va utiliza mediul de dezvoltare NetBeans in scopul scrierii si rularii
programelor scrise in Java: va fi creat un proiect in NetBeans (ex: Laborator N) , care va fi
salvat in directorul personal F:\Constructii\<nume student>.
1. Crearea unui proiect nou
Pentru a crea un proiect nou selectam File -> New Project. Se va deschide o fereastra cu
tipurile de proiecte pentru care se ofera suport. Se va alege General -> Java Application
si se apasa Next.

Se va deschide o fereastra in care trebuie introduse numele si locatia noului proiect. Se deselecteaza
caseta CreateMainClass, si se apasa Finish. Se va oberva in fereastra Projects noul
proiect creat, care contine: un director pentru fisierele sursa, un director pentru fisierele test si doua
directoare cu alte informatii utilizate in proiect.

2. Crearea claselor
Pentru a crea o noua clasa, se va selecta New -> New File. Se va deschide o fereastra cu mai
multe tipuri de aplicatii.

Functie de tipul de clasa necesar, se alege optiunea si se apasa Next. Se introduce numele noii
clase create, se selecteaza proiectul in cadrul caruia se creaza clasa (din lista Projects) si se
apasa Finish. Se va observa faptul ca numele clasei este adaugat in directorul cu fisiere sursa din
fereastra Projects.

3. Compilarea si rularea unui program Java
Se deschide clasa ce trebuie compilata, alegand-o din fereastra Projects, directorul Source
Packages. Pentru compilare:
- Se selecteaza Build -> Compile nume_clasa.java ( sau se apasa F9)
- Se executa click dreapta pe clasa selectata, si se selecteaza Compile File

Se observa in fereastra Output, situata in partea inferioara a interfetei NetBeans, rezultatul
compilarii programului: erorile (daca sunt) sau mesajul BUILD SUCCESSFUL.

In ultimul caz, se va selecta Run -> Run Main Projects (daca se doreste lansarea in
executie a intregului proiect) sau Run File (daca se doreste doar rularea clasei respective).
Rularea clasei se face si prin comanda Run File din meniul pop-up afisat la executarea de click
dreapta pe clasa selectata.

4. Rularea unui program Java impreuna cu o lista de argumente pentru metoda main()
Se selecteaza din fereastra Projects proiectul care contine clasa ce trebuie rulata. Se face
click dreapta, si se alege optiunea Properties.

I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

20
Se alege categoria Run, si apoi numele clasei principale din proiect (clasa se poate selecta
utilizand butonul Browse). Se introduc argumentele metodei principale in campul Arguments. Se
apasa Finish.

6.2. Anexa 2: Programarea orientata spre obiect POO (introducere)
Obiecte i clase
n programarea orientat spre obiect (POO) se pune accentul pe realizarea unui model care s se
aproprie ct mai mult de un sistem real. Obiecte pot fi caracterizate prin:
enumerarea unor proprieti specifice care reunite definesc starea obiectului
enumerarea unui set de aciuni pe care un obiect le poate realiza, care mpreun alctuiesc
comportamentul acestuia.
Exemplu: un automobil are o stare definit de (viteza curent, viteza maxim, puterea motorului, numr
de nmatriculare, culoare) i un comportament care poate include (accelerare, frnare, schimbarea
vitezelor).
Obiectele software sunt structuri de date care modeleaz obiectele reale, fiind la rndul
lor caracterizate prin starei comportament.
Starea unui obiect va fi descris prin intermediul variabilelor iar comportamentul su va fi
implementat cu ajutorul metodelor.
O variabil poate fi definit ca un ansamblu de cinci elemente: numele care identific variabila,
tipul datelor cu care acesta opereaz, o valoare particular a variabilei la un moment dat, aria ei
de vizibilitate n cadrul programului i adresa din memoria heap unde datele sunt salvate.
Metodele sunt subrutine sau funcii asociate cu un obiect i care se execut n mediul descris de
acesta.
Obs: Obiectele software pot modela i concepte abstracte cum ar fi zbor sau plat.

Figura 1 Reprezentarea grafic a unui obiect software

Clasele sunt tipuri de date, definite de programator, care modeleaz prile componentele ale unui
sistem real. O clas este un proiect sau un prototip, care definete caracteristicile comune tuturor
obiectelor de un anumit tip. n acest fel se pot crea obiecte de tipul persoan, student, profesor, punct,
zbor, destinatie, unghi, sau orice alt tip de obiect de care avem nevoie.

I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

21
O clas va specifica att starea (variabilele) i comportamentul (metodele) sale proprii ct i pe
cele ale tuturor obiectelor ce apartin tipului definit de clas. Variabilele vor defini ceea ce
este clasa iar metodele descriu ce tie ea sa fac.

Folosind modelul oferit de clas se pot crea orict de multe obiecte, fiecare obiect fiind o
instan a clasei. Obiectele asfel create vor avea aceleai variabile i metode dar valorile
variabilelor vor fi n general diferite. De exemplu, fiecare persoan are o anumit nlime i
culoare a ochilor sau fiecare automobil are alt numar de inmatriculare, aceste caracteristici
nefiind comune tuturor obiectelor din categoria respectiva.

Fiecare obiect va avea acelai comportament, adic toate obiectele de un anumit tip vor avea
aceleai metode vor ti sa fac acelai lucru. Un obiect concret va avea alocat un bloc separat
de memorie pentru a-si salva starea, adic valoarea variabilelor sale, dar metodele asociate
obiectului vor fi salvate intr-un spatiu comun pentru obiectele de acelai tip.

Un obiect software este o structur de date, dotat cu metode care utilizeaz i modific aceasta
structura.
Exemplu: un obiect software care modeleaz un automobil va avea variabile care s identifice starea
curent a mainii: viteza 50 km/h, viteza maxim 220 km/h, puterea motorului 110 CP, numrul
de nmatriculare - CT 01 ABC, culoarea - alba etc. Aceste variabile sunt numite variabile instan,
deoarece conin starea unui obiect main concret, iar n terminologia orientat pe obiect, un obiect
concret este denumit instan.


Figura 2. Obiect software care modeleaza un automobil concret
n afara variabilelor sale, obiectul software care descrie un automobil are, de asemenea, metode pentru
accelerare, frnare si schimbarea vitezelor. Aceste metode sunt cunoscute ca metode instan,
deoarece ele verific sau modifica starea unei instane concrete a tipului automobil. back
........Un alt exemplu:
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

22

Exercitii propuse:
Ex1:

Se consider algoritmul alturat descris n
pseudocod.
S-a notat cu x%y restul mpririi numrului natural x
la numrul natural nenul y i cu [z] partea ntreag a
numrului real z.
a) Scriei numerele afiate dac se citete valoarea
x=168.
b) Scriei o valoare care poate fi citit pentru
variabila x astfel nct, n urma executrii
algoritmului, s se afieze dou valori egale.
c) Corespunztor algoritmului dat, scriei programul
Java si schema logica.







I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

23
Ex2:
a. Scriei valoarea pe care o va
afia algoritmul alaturat dac
se citete numrul 16389;
b. Realizati si rulati programul
Java corespunzator.
c. Scriei cea mai mic valoare
de patru cifre distinctecare
poate fi citit pentru variabila
n, astfel nct s seafieze
valoarea 0.



Ex3:

Se consider algoritmul alturat, descris n
pseudocod.
S-a notat cu [z] partea ntreag a numrului real z, iar cu
x%y restul mpririi numrului natural x la numrul natural
nenul y.
a) Scriei valoarea care va fi afiat dac se citete
numrul x=140.
b) Scriei o valoare care poate fi citit pentru x (x1)
astfel nct valoarea afiat s fie 6.
c) Corespunztor algoritmului dat, scriei programul Java si
schema logica
d) Scriei valorile naturale din intervalul [7,28] care pot fi
introduse pentru variabila x, astfel nct, dup executarea
programului, valoarea afiat s fie 1.


Ex4:
Se consider algoritmul alturat, descris n
pseudocod.
S-a notat cu [z] partea ntreag a numrului real z, iar cu
x%y restul mpririi numrului natural x la numrul natural
nenul y.
a) Scriei ce se afieaz dac numrul citit este
n=9458.
b) Scriei cea mai mare valoare cu exact 3 cifre,
care poate fi citit pentru n astfel nct s se
afieze, n aceast ordine, numerele 9 7.
c) Scriei programul Java corespunztor
algoritmului dat.
d) Scriei n pseudocod un algoritm echivalent celui
dat n care s se nlocuiasc structura ct
timp...execut cu o structur repetitiv de alt
tip.


I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

24
Ex5:

Se consider algoritmul alturat, descris n
pseudocod.
S-a notat cu [z] partea ntreag a numrului real z, iar cu
x%y restul mpririi numrului natural x la numrul natural
nenul y.
a) Scriei valoarea care va fi afiat dac se citete
numrul x=140.
b) Scriei o valoare care poate fi citit pentru x (x1)
astfel nct valoarea afiat s fie 6.
c) Scriei programul Java corespunztor algoritmului
dat.
d) Scriei valorile naturale din intervalul [7,28] care
pot fi introduse pentru variabila x, astfel nct, dup
executarea programului, valoarea afiat s fie 1.

Ex6:
Se consider algoritmul alturat, descris n
pseudocod.
a) Dac se citete pentru n valoarea 10, scriei
valorile care se afieaz, n forma rezultat n
urma executrii algoritmului,
b) Scriei o valoare format din exact dou cifre care,
dac se citete pentru n, determin ca printre
tripletele de valori afiate s existe unul alctuit
din trei numere consecutive.
c) Scriei programul Java corespunztor
algoritmului dat.
d) Scriei n pseudocod un algoritm echivalent cu cel
dat care s utilizeze exact dou structuri
repetitive.

Tema:
Arhiva C1_Sem2_nume+prenume.rar va contine:
a. Fisierul C1_Ex1-Ex6_nume_prenume.doc, ce contine redactarea
raspunsurilor la Ex1 Ex6 in Wordpad/Word/OfficeOrg;
b. Folderul C1_Ex1-Ex6_java, ce contine proiectul NetBeans corespunzator
programelor rezolvate (Atentie: NU arhiva in arhiva...se supara gmail!)
C1_Sem2_nume+prenume.rar se va trimite prin e-mail, la adresa
constructii201320014@gmail.com. La subject: C1_Sem2_nume+prenume;
Termen: 18 martie 2014, e.n.
Punctaj maxim (Data trimiterii temei)
<= 18.03. 2014 25.03. 2014 01.04.2014 08.04.2014
100 pct 80 pct 60 pct 50 pct
==============================================================
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

25
6.3. Anexa * (Sfat: De rulat toate aplicatiile de mai jos!!!)
I. Terminologie Java
JDK Java Development Kit conine instrumentele folosite pentru dezoltarea de software, n el
fiind inclus i un mediu de execuie JRE (Java Runtime Environment). Pe lng maina virtual
Java, JDK mai conine compilatorul de Java, un instrument de vizualizare a applet-urilor, un
generator de documentaii, utilitare specifice mediului de dezvoltare Java i exemple de programe
Java.
SDK este o alt denumire pentru JDK, deoarece, ncepnd cu lansarea lui Java 2, compania Sun s-
a referit la acesta cu numele de Java Software Development Kit.
JRE - Java Runtime Environment este un mediu de execuie Java care conine toate bibliotecile de
rulare necesare la executarea oricrui program Java precum i o main JVM.

Exist trei ediii de JDK (J2SE, J2EE, J2ME), fiecare din ele fiind livrat cu cte o main JVM i cu
toate instrumentele standard necesare dezvoltrii de aplicaii; la acestea se adauga in prezent [W12]
Java Embedded, Java FX, JavaDB, Java Card, Java TV:
J2SE Java 2 Standard Edition este livrat cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea i distribuirea de aplicaii Java de uz general. Aceast ediie conine o main Java
optimizat pentru partea de client;
J2ME - Java 2 Micro Edition este o versiune livrat cu un set restrns de biblioteci de rulare i cu
o main Java optimizat pentru dispozitive integrate sau portabile. Are dou linii paralele de
dezvoltare, PersonalJava i EmbeddedJava.
J2EE - Java 2 Enterprise Edition este o versiune care conine tot ceea ce se afl n J2SE, la care
se adaug un set de interfee API (Application Program Interface) i biblioteci de dezvoltare i
distribuire a aplicaiilor la nivel de ntreprindere (sisteme de prelucrare de tranzacii, servere Web,
servicii de mesagerie etc. J2EE simplific aplicaiile tip ntreprindere prin construirea lor pe baza
unor componente modulare standardizate, prin oferirea unui set complet de servicii acelor
componente i prin preluarea multor detalii a comportamentului automat al aplicaiei, fr o
programare complex. Prin automatizarea multor sarcini ale procesului de dezvoltare a aplicaiilor
care sunt dificile i care ar necesita timp, tehnologia J2EE permite dezvoltatorilor de sisteme de tip
ntreprindere s se concentreze asupra mbuntirii strategiei de afaceri, dect s creeze
infrastructura acesteia.

JVM - Java Virtual Machine este software-ul care execut toate aplicaiile Java. Const din
cteva fiiere care sunt plasate n directoarele din JDK sau JRE, unul din fiiere fiind o interfa
care instaniaz JVM-ul i face posibil ca aceasta s lucreze pe sistemul de operare nativ din
calculator. Pentru utilizator, numele mainii JVM este java, nume standard al comenzii necesare
pentru a rula JVM, nume ce trebuie urmat de numele programului. Termenul JVM are dou
semnificaii:
1. Fiierul binar care exist n sistemul de fiiere, instalat pe calculator cnd s-a instalat JDK sau
JRE;
2. Instan particular care se ncarc n memoria calculatorului cnd se execut un program, fiind
executat ca un proces din sistemul de operare. Fiierul binar nu este ncrcat i nici nu se
schimb, ceea ce permite ca s fie rulate n acelai timp mai multe instane ale mainii JVM.

* E. Petac, C. Serban I nformatica aplicata. Ghid practice J ava, Publisher: Crizon, Constanta, 2012,
369 pp., ISBN 978-606-8476-00-04
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

26
.jar este extensia ce corespunde unui fiier arhiv Java, creat cu utilitarul jar din Java. Folosind
opiunea jar, comanda java permite lansarea n execuie a unui program Java care este stocat ntr-
un fiier jar.
.class este extensia fiierului obinut (numit de clase), dup compilarea de ctre compilatorul de Java
a unui fiier cu cod surs Java (care are extensia .java). Fiierele de clase reprezint forma executabil a
programelor Java. Codurile de octei sunt coduri de dimensiunea unui octet pentru JVM.
JavaBeans numele componentelor de cod Java reutilizabile. Orice program Java sau orice bloc de
program Java poate fi scris ca o clas JavaBean.

Java API
Java API este o colecie de componente software care pot fi utilizate n realizarea de programe.
Elementele acestei colecii sunt grupate n biblioteci de clase i interfee numite pachete (packages).
Gruparea elementelor se face n funcie de funcionalitatea pe care acestea o ofer. O implementare
complet a platformei Java ofer printre altele urmtoarele:
Elemente de baza : Obiecte, iruri de caractere, numere, structuri de date, date calendaristice,
timp , intrare/ieire etc;
Appleturi: Un set de standarde utilizate n realizarea programelor care ruleaz n interiorul unui
navigator Web;
AWT/Swing : Set de instrumente pentru realizarea de interfee grafice (GUI);
Servleturi : Un set de standarde utilizate n realizarea servleturilor;
Programarea retelelor : URL , TCP , UDP , sockets, adrese IP;
Procesarea documentelor XML : Simple XML Parsing (SAX) , Document Type Definition
(DTD) , Document Object Model (DOM);
Securitate: Semnturi digitale, controlul accesului, managementul cheilor publice i al celor
private;
Componente Software : Cunoscute sub numele de JavaBeans, acestea pot fi utilizate n cadrul
altor arhitecturi de componente;
Serializarea obiectelor : Asigur persistena i comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation).
Java Database Connectivity : Standardizeaz accesul la sistemele de baze de date relaionale;
Internaionalizarea aplicaiilor : Setarea localizrii, formatri texte.
n plus, exist un API pentru grafica 2D i 3D, mesagerie electronic, animaie, telefonie, sunet i
multe alte domenii. Figura 8.1. prezint componentele care sunt incluse n Java 2 SDK versiunea
7.
ncepand cu versiunea 6, platforma Java ofer, n plus fa de versiuniele anterioare:
Suport pentru limbajele scriptice, de exemplu PHP, Ruby, JavaScript, i Python;
Un numr de noi elemente JDBC (Java Database Connectivity), incluznd o memorie
integrat pentru baze de date.
Adugarea Java DB, o distribuie integrat pentru baza de date Apache Derby, nglobat 100%
de Java i folosit considerabil n foarte multe aplicaii Java open source, pentru a simplifica
procesul de instalare prin oferirea unor baze de date n afara aplicaiei. Construciile din
interiorul bazei de date permit utilizatorilor ntr-un mod foarte uor s seteze i s ruleze
uniti de testare la fel ca la o baz de date adevarat, fr s aib neplaceri cu setrile i
configurarea;
O serie de progrese n domeniul monitorizrii aplicaiei, n managementul acesteia, i n
debugging avand la baza Java Monitoring, Management Console, JConsole; nu trebuie facuta
nici o modificare aplicaiei ce se doreste a fi monitorizata;
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

27
Control mai precis asupra fiierelor sistem locale;
Suport pentru servicii JAX-WS Web i JAXB 2.0 XML;
mbuntiri n API-urile de Swing i AWT i mbuntiri ale sintaxei.


Figura 8.1 Componentele Java 2 SE versiunea 7 [W96 ]
Android este o platform software i un sistem de operare pentru dispositive si telefoane mobile
bazat pe nucleul Linux, dezvoltat iniial de compania Google, iar mai trziu de consoriul
comercial Open Handset Alliance [W39]. Android permite dezvoltatorilor s scrie cod gestionat n
limbajul Java, controlnd dispozitivul prin intermediul bibliotecilor Java dezvoltate de Google.
Utiliznd limbajul de programare Java, dezvoltatorii pot crea diferite tipuri de aplicaii pentru
telefoane mobile. Deoarece aplicaiile Java sunt executate pe dispozitive, timpul de rspuns este
foarte scurt, ceea ce permite aplicaii cu grad nalt de interactivitate (jocurile de aciune). Exemple
de aplicaii Java sunt:
Divertisment: jocuri, animale virtuale, animaii, funcia compunere muzic, karaoke etc;
Organizarea vieii: liste de cumprturi, instrumente pentru bugetul personal, agend pentru
antrenamente sportive etc;
Cltorie: harta scalabil a metroului londonez, conversie valutar, dicionar englez-spaniol
pentru restaurante, ceas universal etc;
Instrumente de informare: tiri i informaii financiare cu un click, interfa utilizator activ,
motoare de cutare optimizate etc.

Java Community Process [W97] este o organizaie deschis format din dezvoltatori de aplicaii
Java i liceniatori. A fost iniiat de Sun Microsystems, i servete scopului de a dezvolta i revizui
specificaiile tehnologiei Java, pachetele de informaii i pachetele de compatibilitate ntre
tehnologii. JCP este condus de dou comitete executive. Unul este axat pe J2EE i J2SE iar cel de-
al doilea se concentreaz pe J2ME. Proiectele de specificaii care au loc la JCP sunt numite Java
Specification Requests (JSRs [W98]). Comitetul executiv al Java Community Process (JCP) a
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

28
anunat aprobarea Java Specification Request (JSR) pentru urmtoarea versiune a platformei Java,
Enterprise Edition (Java EE) 7 JSR 342.
Java EE 7 va mbunti platforma Java EE pentru medii de tip cloud. Cloud computing [RR10]
calculare n nor, mai concret calcul n Internet (data fiind analogia de reprezentare a
Internetului printr-un nor) este un concept modern n domeniul informaticii, reprezentnd un
ansamblu distribuit de servicii de calcul, aplicaii, acces la informaii i stocare de date, fr ca
utilizatorul s aib nevoie s cunoasc amplasarea i configuraia fizic a sistemelor care furnizeaz
aceste servicii. Aplicaiile i produsele bazate pe platforma Java EE 7 vor putea s funcioneze cu
mai mult uurin n cloud-uri publice sau private i s i distribuie funcionalitatea sub form de
servicii care suport caracteristici precum arhitectur multitenancy i scalare orizontal.
Multitenancy permite ca o singur instan a cererii sa serveasca mai multe organizatii.

Tipuri de aplicaii Java

Cu ajutorul API, Java suport o varietate mare de aplicaii. Principalele tipuri de programe Java sunt:
1. Applet-uri Java [W101] - sunt cele mai rspndite programe Java. Toate appleturile urmeaz o
serie de convenii care le permit s ruleze n interiorul unui navigator (browser) Web care
ncorporeaz o main virtual Java. Appleturile sunt incluse n pagile Web la fel ca i
imaginile i adaug dinamism acestora.
2. Aplicatii Java [W102] - limbajul Java poate fi folosit i pentru dezvoltarea de aplicaii, fiind o
puternic platform software. Aplicaiile pot rula independent de un navigator web i au
caracteristicile oricror alte programe, cu deosebirea c, pentru a le rula, n sistem trebuie s
existe instalat un intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime
Environment [W17]).
3. Servlet-uri Java [W103] - sunt programe Java care pot interaciona cu diferii clieni i care se
execut numai pe partea de server, ca efect al unei cereri primite. Acestea afieaz numai
rezultatul procesrii, sub forma unui fiier HTML (HyperText Markup Language).
Implementarea de tip cerere/rspuns se face pe baza protocolului HTTP (HyperText Transfer
Protocol).

II. Elaborarea programelor n Java

Kitul de instalare Java SDK - Java SE Development Kit poate fi obinut gratuit de la adresa
http://www.oracle.com/technetwork/java/javase/downloads/index.html. Pentru platforme Windows
kitul este livrat sub forma unei arhive autoextractabile, n versiuni care conin sau nu mediul de
dezvoltare NetBeans. Instalarea Java SDK se va face predefinit n directorul c:\jdk1.7.x_xx i va
conine subdirectoarele bin, demo, include, jre i lib. Principalele instrumente ale
pachetului JDK se gsesc n cadrul subdirectorului bin:
javac.exe compilatorul java
java.exe - interpretorul Java
appletviewer.exe instrument de vizualizare applet-uri
javadoc.exe - instrument de generare documentaie
jar.exe - utilitar pentru crearea de arhive jar
javap.exe - dezasamblor de fiiere bytecode
jdb.exe - debugger
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

29

Elaborarea unui program n limbajul Java necesit parcurgerea urmtoarelor etape:

1. Conceperea programului: sunt incluse formularea problemei, alegerea modului de rezolvare,
stabilirea structurilor de date i alegerea algoritmului de calcul

2. Editarea fiierului (fiierelor) surs: se editeaz pe calculator unul sau mai multe fiiere de text
(fiiere surs) cu extensia .java, care conin programe n limbajul Java. Pentru editarea lor se poate
folosi orice editor de texte simplu (Notepad sub Windows sau orice editor (Emacs, XEmacs) n mod
text din sistemele Unix sau Linux). Editorul NotePad, inclus n sistemele de operare Windows, poate fi
lansat n execuie din meniul Start, selectnd Programs > Accesories > NotePad.

3. Compilarea: fiierele surs se compileaz pentru a obine programele binare sub form de cod de
octei (bytecode); se folosete un compilator, iar fiierele obinute prin compilare au extensia .class;
compilatorul semnaleaz eventualele erori de sintax i nu genereaz cod de octei n aceast situaie;
dup eliminarea erorilor respective, fiierul surs va fi compilat din nou, procedeul repetndu-se pn
cnd se elimin toate erorile de sintax i se obine fiierul cu extensia .class corespunztor.

4. Executarea: pentru executarea unei aplicaii Java se foloeste interpretorul Java (JVM) java.exe

5. Testarea i depanarea programului: codul de octei obinut prin compilare (fiierul cu extensia
class) nu conine erori de sintax, dar poate conine erori semantice sau de concepie. Programul va
putea fi executat, dar rezultatele nu vor fi corecte. Pentru a depista astfel de erori, programul este
executat cu date de test, confruntndu-se rezultatele obinute prin program cu cele corecte pentru datele
respective. Dac apar neconcordane, programul trebuie depanat, adic trebuie gsite instruciunile
greite i nlocuite cu altele corecte. Pentru depanare se poate folosi ca program depanator jdb.exe.
Pentru etapele 2-5 este indicat folosirea unui mediu integrat de dezvoltare IDE (Integrated
Development Environment) [W18], cum ar fi: NetBeans (www.netbeans.org), JCreator
(www.jcreator.com), Eclipse (http://www.eclipse.org/downloads/), DrJava
(http://drjava.sourceforge.net/ ), BlueJ (http://www.bluej.org/ ) etc. Acesta ofer, pe lng funciile
standard de editare, i recunoaterea cuvintelor cheie Java, editarea codului folosind culori i stiluri
diferite, integrarea cu un mediu de vizualizare a documentaiei Java, gestionarea proiectelor de mari
dimensiuni, autocompletarea codului surs i alte faciliti care uureaz munca programatorului.

II.1. Elementele unui program simplu Java
Lansat n execuie, programul Ex1 de mai jos, permite scrierea pe ecranul monitorului a irului de
caractere Primul program n Java. Pentru a obine acest rezultat trebuiesc parcurse urmtoarele etape:
Editarea codului surs ntr-un editor text;
Salvarea codului surs n fiierul cu numele Ex1.java;
Rularea compilatorului javac care traduce codul surs n bytecode;
Lansarea interpretorului Java (maina virtual Java), responsabil cu interpretarea codului
bytecode n instruciuni cod main, specifice platformei pe care ruleaz aplicaia.
Ex1.java
1. // Un program simplu
2. class PrimulExemplu
3. {
4. public static void main(String args[])
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

30
5. {
6. System.out.println(Primul program in Java !);
7. }
8. }

nainte de a exemplifica paii necesari execuiei unui program Java, vom utiliza codul surs al
programului Ex1 pentru prezentarea elementelor de baz ale unui program simplu Java. Numerele
corespunzatoare liniilor au fost introduse n scopul prezentarii elementelor cheie ale programului.

Nr.
linie
Semnificaie cod
1.
Caracterul // indic prezena unui comentariu, utilizat, n general, pentru a oferi
diferite explicaii; exemplu: ce ar trebui s realizeze programul
2.
Orice cod surs Java ncepe prin definirea unei clase. Fiecare clas are un nume
unic; codul surs pentru o clas trebuie salvat ntr-un fiier surs care are acelai
nume ca i clasa. Prin convenie, numele unei clase ncepe cu o liter mare i este
precedat obligatoriu de cuvntul rezervat class. Sintaxa pentru definirea unei clase
este
class nume_clasa {
corpul clasei
}
Corpul clasei este ncapsulat de perechea de acolade (3. si 8.)
4.
Clasele conin date i metode. Clasa Ex1 are o singur metod, numita main.
Aceast metod are o mare importan n structura oricrei aplicaii Java. Metoda
main a unui obiect este punctul din care JVM (Masina Virtuala Java) ncepe
execuia unui program. JVM va cuta ntodeauna o metod cu urmtorul
identificator (semntur): public static void main (String args[]). n
Java, metodele unei clase sunt identificate n mod unic prin nume i prin tipul
parametrilor de intrare. Aceste proprieti alctuiesc mpreun semntura metodei.
n aplicaiile Java care sunt formate din mai multe clase, una dintre aceste clase
trebuie s conin o metod main. Clasa care conine metoda main este punctul de
lansare al aplicaiei. Programul Ex1, fiind unul foarte simplu, utilizeaz o singur
clas, prin urmare ea este cea care conine metoda main. Pentru ca JVM s
gseasc metoda main, aceasta trebuie s posede exact semntura indicat mai sus.
6.
Aceast linie ilustreaz o facilitate de baz a programrii orientate spre obiect:
reutilizarea codului. n loc s scrie instruciunile necesare pentru tiprirea textului
pe ecranul monitorului, programatorul utilizeaz obiectul System.out. Acest
obiect posed metoda println. Obiectul Ex1 trimite obiectului System.out un
mesaj prin care solicit acestuia ca metoda println s afieze irul specificat ntre
parantezele apelului metodei. Programatorul nu trebuie s cunoasc cum se
realizeaz aceast operaie, ci doar cum s utilizeze metodele obiectului
System.out.
7.
Sfritul definiiei metodei main este marcat printr-o acolad nchis. Similar,
nceputul definiiei metodei este marcat printr-o acolad deschis (5.). Acelai
procedeu s-a aplicat i n cazul definiiei clasei (3. si 8.)

I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

31
II.2 Rularea programului n linie de comand

II.2.1. Editarea codului surs
Pentru a edita codul surs al programului Ex1 se poate folosi editorul Notepad. Se lanseaz n
execuie acest editor i se insereaz ntr-un nou document codul de mai sus, dup care se salveaz
fiierul sub numele Ex1.java. Pentru a salva codul surs ntr-un fiier, se selecteaz din meniul
aplicaiei Notepad opiunea File>Save As. n urma acestei aciuni va apare caseta de dialog Save
As: n caseta de text File name, trebuie introdus textul Ex1.java. nainte de a apsa butonul Save
trebuie selectat opiunea All Files din meniul Save as type. Exist i varianta de completare a numelui
fiierului sub forma Ex1.java, pentru a se evita adugarea de ctre Notepad a extensiei .txt,
situaie care ar face ca fiierul s nu fie recunoscut de compilatorul Java.
Din meniul Save in se poate selecta directorul unde va fi salvat fiierul. n exemplul de mai
sus, directorul este C:\Studenti.
Java este un limbaj case-sensitive, deci n procesul de editare al codului surs trebuie s se in
seama de tipul literelor: compilatorul va interpreta diferit ex1.java fa de Ex1.java sau Public
fa de public.

II.2.2 Compilarea codului surs
Utilitarele javac.exe si java.exe se afla n subdirectorul bin al directorului de instalare al kit-
ului Java. Astfel, programele Java ale caror surse se afla n subdirectorul bin, vor putea fi compilate i
interpretate. n aceste condiii se ajunge la suprancrcarea directorului bin, iar gestiunea programelor
se va face foarte greu. Pentru a compila i interpreta programe cu surse aflate oriunde pe hard-disc,
trebuie setat variabila de mediu PATH cu calea catre cele doua utilitare.
Setarea variabilei PATH se face folosind comanda set path=C:\Program
Files\Java\jdk\1.7.0_06\bin in Start ->Run->cmd sau procednd ca mai jos (figura 8.4):
Settings->Control Panel->System->Advanced->Evironment Variables->System Variables->PATH-
>Edit->se adaug calea ctre subdirectorul bin. De ex, C:\jk1.7.0_06\bin;

Figura 8.4 Setarea variabilei Path
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

32

Pentru a testa daca totul este configurat corespunzator, se va deschide o fereastr MS-DOS
(Start ->Run->cmd) i se va tasta java -version sau javac help. Rezultatul comenzilor nu trebuie s fie
un mesaj de eroare legat de comanda necunoscut (ex mesaj eroare: javac is not recognized as an
internal or external command, operable program or batch file)
Urmtorul pas este compilarea fiierului care conine codul surs Ex1.java n fiierul de tip
bytecode Ex1.class. Din meniul Start se selecteaz opiunea Run iar n caseta de text Open se
introduce comanda cmd. Atunci cnd se execut aceast comand, va apare o fereastr DOS care va
conine un prompt DOS (figura 8.5).

Figura 8.5 Fereastra cmd
Un prompt DOS indic directorul curent. Pentru a putea compila fiierul cod surs, trebuie
modificat directorul curent astfel nct acesta s devin directorul n care este salvat fiierul
Ex1.java. Dac directorul n care a fost salvat fiierul surs este C:\Studenti atunci trebuie
introdus urmtoarea comand la prompterul DOS i apsat tasta Enter (return) : cd c:\Studenti.
n acest moment, prompt-ul DOS ar trebui s se modifice n C:\Studenti>. Dac dorim
s modificm prompterul DOS astfel nct acesta s indice un director aflat pe alta
partiie dect cea curent, trebuie introdus comanda x: nainte de comanda cd, de
schimbare a directorului, unde x este litera care indic partiia unde se gsete
directorul respectiv.
Comanda dir afieaz coninutul directorului C:\Studenti figura 8.6).

Figura 8.6 Rezultatul executiei comenzii dir

n acest moment se poate compila fiierul Ex1.java. La prompterul DOS trebuie introdus
comanda javac Ex1.java care va lansa n execuie compilatorul Java. n cazul n care nu exist erori,
compilatorul va genera fiierul bytecode Ex1.class. Dac exist erori, acestea vor fi afiate n consol.
Dup o compilare fr erori prompterul DOS va reapare. n acest moment mai este doar un pas
pn la lansarea n execuie a primei aplicaii Java.
II.2.3 Rularea programului
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

33
n acelai director trebuie introdus la promptul DOS comanda java Ex1. Rezultatul trebuie s
fie afiarea n fereastra DOS a mesajului Primul program Java! ( figura 8.7).

Figura 8.7 Rezultatul executiei programului Ex1
Rularea programului Ex1, prezentat mai sus, va conduce de fiecare dat la acelai rezultat.
Aceasta se datoreaz naturii statice a datelor de intrare, respectiv irul de caractere Primul program
Java!, care nu se modific ntre lansrile n execuie ale programului. Dac se dorete obinerea altui
rezultat, trebuie modificat codul surs al programului. Aceast metod nu este ns foarte practic. O
alt variant ar fi modificarea programului astfel nct el s primeasc datele de intrare n momentul
lansrii n execuie.

II.2.4 Rularea programului folosind NetBeans
II.2.4.1 Crearea unui proiect nou
Pentru a crea un proiect nou selectm File -> New Project. Se va deschide o fereastr cu tipurile de
proiecte pentru care se ofer suport. Se va alege General -> Java Application si se apas Next.
Se va deschide o fereastr n care trebuie introduse numele i locaia noului proiect. Se deselecteaza
caseta CreateMainClass, i se apas Finish. Se va oberva n fereastra Projects noul proiect creat, care
conine: un director pentru fiierele surs, un director pentru fiierele test i dou directoare cu alte
informaii utilizate n proiect.

II.2.4.2 Crearea claselor
Pentru a crea o noua clas, se va selecta New -> New File. Se va deschide o fereastr (figura 8.8)
cu mai multe tipuri de aplicaii.


Figura 8.8 Creare clas

I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

34
Funcie de tipul de clas necesar, se alege opiunea corespunztoare i se apas Next. Se introduce
numele noii clase create, i se apas Finish. Se va observa faptul c numele clasei este adugat n
directorul cu fiiere surs din fereastra Projects.

II.2.4.3 Compilarea i rularea unui program Java
II.2.4.3.1. Se deschide clasa ce trebuie compilat, alegnd-o din fereastra Projects, directorul Sources.
Se selecteaz Build -> Compile nume_clasa.java (sau se apas tasta F9). Se observ n fereastra
Output, situat n partea inferioar a interfeei NetBeans, rezultatul compilrii programului: erorile
(dac sunt) sau mesajul BUILD SUCCESSFUL. n ultimul caz, se va selecta Run -> Run Main
Projects (dac se dorete lansarea n execuie a ntregului proiect) sau Run File (dac se dorete doar
rularea clasei respective).

II.2.4.3.2. Rularea unui program Java mpreun cu o list de argumente pentru metoda main()
Se selecteaz din fereastra Projects proiectul care conine clasa ce trebuie rulat. Se face click
dreapta, i se alege opiunea Properties (figura 8.9):


Figura 8.9 Rularea programului cu o list de argumente

Se alege categoria Run, i apoi numele clasei principale din proiect (clasa se poate selecta utiliznd
butonul Browse) i argumentele metodei principale. Se apas Finish.


II.2.5. Crearea unei interfee grafice
Se alege din fereastra Projects proiectul n care se dorete crearea unei interfee grafice, i se face
click dreapta. Se selecteaz New -> JFrameForm, se introduce numele noii clase (ex. MyFrame) i a
pachetului din care face parte (opional). Se apas Finish. Se observ n partea stng a interfeei
NetBeans fereastra Palette, care cuprinde toate componentele grafice ce pot fi utilizate n aplicaii. De
asemenea, NetBeans afieaz n partea central aria de desenare a interfeei grafice (figura 8.10).

I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

35


Figura 8.10 Aria de desenare a interfeei grafice


II.2.5.1 Adugarea unei componente grafice
Pentru adugarea unui container tip JPanel, se selecteaz din fereastra Palette componenta
JPanel, i se deseneaz pe aria de desenare. n partea inferioar a ferestrei Palette este afiat fereastra
Properties, cu caracteristicile componentei selectate, ce pot fi vizualizate i modificate (figura 8.11).

Figura 8.11 Adugarea unei componente grafice

II.2.5.2 Adugare etichet, adugare cmp de text i schimbare nume variabil
Pentru a schimba numele variabilei corespunztoare unei componente grafice, se selecteaz
componenta, se face click de dreapta, se selecteaz Change Variable Name i se introduce denumirea
dorit (figura 8.12).

I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

36



Figura 8.12 Adugarea unei etichete


II.2.5.3 Adugarea unui asculttor de evenimente
Se selecteaz butonul execut, se face click de dreapta, se selecteaz Event -> Action ->
actionPerformed (figura 8.13):


Figura 8.13 Adugarea unui asculttor de evenimente

Dup selectarea asculttorului, se va deschide o fereastr cu codul surs n care a fost generat
automat metoda executaButtonActionPerformed i un comentariu TODO n care se cere adugarea
codului corespunztor aciunii.
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

37

8.2.4.4 Crearea pachetelor jar

Primul pas n crearea unui pachet jar este selectarea proiectului principal: File -> Set Main Project:

Figura 8.14.a Crearea pachetelor jar: pasul 1

Se vor seta proprietile pachetului: se selecteaz File -> nume_proiect Properties:

Figura 8.14.b Crearea pachetelor jar: pasul 2

Se introduce numele clasei principale, i se apeleaz Build -> Clean and Build Main Project:
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

38

Figura 8.14.c Crearea pachetelor jar: pasul 3

Se va observ n fereastra Output calea catre pachetul jar construit.


II.3 Introducerea datelor

II.3.1 Citirea datelor de intrare din linie de comand
Programul Ex1, prezentat anterior, va fi modificat astfel nct s poat citi datele de intrare din linia de
comand. Principalul rol al unui program este s colecteze date de intrare de la o surs oarcare, cum ar fi linia de
comand (promt-ul DOS) sau dintr-un fiier existent pe disc. Aceast operaie odat terminat, programul va
efectua calcule sau alte operaii asupra acestor date urmnd s prezinte rezultatele n consol, sau s le salveze
ntr-un fiier. Atunci cnd un program este lansat n execuie din linia de comand, interpretorul preia irul de
caractere prezent la linia de comand n momenul apsrii tastei Return i interpreteaz primul cuvnt ca fiind
numele programului i restul cuvintelor drept datele de intrare pentru programul respectiv. De exemplu, dac se
lansaz comanda, java Ex1 Program modificat! interpretorul va ncerca s execute programul Ex1
cu parametrul de intrare Program modificat!. Pentru a explica cum programul Ex1 primete mesajul
specificat n linia de comanda, trebuiesc mai inti cunoscute mai multe detalii despre sintaxa metodei main.
Semntura metodei main este: public static void main (String args[]). Rolul principal n
introducerea datelor de intrare n metoda main este jucat de parametrul String[] args al metodei. Toate
metodele primesc datele de intrare sub forma unei liste de parametri. Lista de parametri pentru o metod este
format din perechi de cuvinte. Primul cuvnt reprezint tipul de date crora argumentul trebuie s aparin iar al
doilea cuvnt este indentificatorul argumentului metodei, sau numele sub care acesta este folosit n cadrul
metodei. n cazul metodei main, tipul este String (ir de caractere) iar numele argumentului este args.
Perechea de paranteze [], indic faptul c argumentul metodei main este de tip tablou. Un tablou este o colecie
liniar de elemente de acelai tip, unde accesul la elementele tabloului este realizat prin utilizarea unui indice.
Un indice este o valoare intreag care corepunde poziiei elementului n cadrul tabloului. Numerotarea
tablourilor n Java ncepe predefinit de la 0 i nu de la 1. Ca urmare, metoda main primete ca parametru un
tablou de iruri de caractere care poart numele args. Primul element al acestui tablou este args[0], al doilea
args[1] i aa mai departe. Atunci cnd se lanseaz comanda java Ex1 Program modificat!
parametrul de intrare este convertit de catre JVM ntr-un tablou de iruri de caractere cu un element , Program
modificat! , accesibil prin apelul args[0] n cadrul metodei main. Codul surs pentru programul Ex1
modificat astfel nct s primeasc date de intrare din linia de comand este prezentat mai jos :

// Un program simplu
class Ex1 {
public static void main (String args[]) {
System.out.println(args[0]);
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

39
}
}

Pentru introducerea unui numr mai mare de date de intrare se foloseste sintaxa
java Ex2 27 39 45, caz n care tabloul args va avea urmtoarea compoziie :
args[0] va avea valoarea 27
args[1] va avea valoarea 39
args[2] va avea valoarea 45

II.3.2 Citirea datelor de intrare de la tastatur
Toate operaiile de citire/scriere sunt realizate de metode care aparin claselor grupate n
pachetul specializat java.io. Un pachet este o colecie de clase care pot fi utilizate n elaborarea
altor programe. n Java o surs de date poart denumirea de flux de intrare iar o destinaie este
denumita flux de iesire.


Figura 8.15 Fluxuri de date

Exist trei tipuri de fluxuri de date (figura 8.15) conectate la orice program Java.
System.in flux de intrare care este conectat la tastatur;
System.out flux de ieire pentru mesajele normale, conectat la monitor;
System.err flux de ieire pentru mesajele de eroare, conectat la monitor.

Programul Ex3 citete caractere de la tastatur pn cnd este apsat tasta Return (Enter) i le
salveaz ntr-un ir de caractere (un obiect de tipul String ) ; caracterele salvate n irul respectiv sunt
trimise ctre monitor (dispozitivul standard de ieiere).

import java.io.*;
class Ex3
{
public static void main (String args[]) throws IOException
{
InputStreamReader fluxIntrare =
new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(fluxIntrare);
String date;
System.out.println("Introduceti sirul:");
date = in.readLine();
System.out.println("Sirul introdus este: " + date );
}
}
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

40

Linia import java.io.*; informeaz interpretorul Java c n cadrul programului se folosesc
obiecte ce aparin claselor ce fac parte din acest pachet. Simbolul * indic faptul c oricare dintre
clasele pachetului poate fi folosit.
Instruciunea throws IOException, adugat metodei main, este necesar deoarece atunci
cnd se lucreaz cu operaii de intrare/ieire pot apare diferite erori. Java este un limbaj robust care
oblig programatorul s trateze, adic s indice un comportament n cazul apariiei acestor erori. n
cazul de fa se indic metodei main s delege mainii virtuale Java tratarea erorilor, care va opri
programul n cazul apariiei unei erori.
Liniile din codul surs care urmeaz sunt responsabile cu construirea unui flux de intrare avnd
ca surs de date tastatura (InputStreamReader) i conectarea acestuia la un cititor echipat cu o
zon tampon (BuffererdReader). Este prea devreme pentru a explica toate detaliile, deci, pentru
moment, vom considera aceste instruciuni ca fiind necesare pentru a citi date de la tastatur.

InputStreamReader fluxIntrare =
new InputStreamReader( System.in );
BufferedReader in = new BufferedReader( fluxIntrare );


Cele dou instruciuni pot fi combinate ntr-o singur instruciune astfel:

BufferedReader in =
new BufferedReader(new InputStreamReader(System.in));

Programul citete un ir de la tastatur cu ajutorul metodei readLine() a obiectului de tip
BufferedReader cu numele br. Aceast metod salveaz linia de text introdus de la tastatur n
date, un obiect de tip String.
Programul Test_tast testeaz dac un numar ntreg, citit de la tastarur, este pozitiv;

import java.io.*;
class Test_tast{
public static void main (String args[]) throws IOException{
BufferedReader in=new BufferedReader(new
InputStreamReader(System.in));
System.out.println(Introduceti n: );
int n=Integer.parseInt(in.readLine());
if (n > 0) {
System.out.println(n + este pozitiv);
}
}
}

Programul Test_lin_cmd testeaz dac un numr ntreg, preluat din linie de comand, este pozitiv:

class Test_lin_cmd {
public static void main (String args[]) {
int n=Integer.parseInt(args[0]);
if (n > 0) {
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

41
System.out.println(n + este pozitiv);
}
}
}


II.3.3 Citirea datelor de intrare dintr-un fiier
Programul Test_cit_fis citete fiierul al crui nume este specificat ca argument la execuia
programului i afieaz coninutul acestuia la ieirea standard System.out:

import java.io.*;
class Test_cit_fis {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
try {
FileInputStream fisier = new FileInputStream(args[i]);
int n;
while ((n = fisier.available()) > 0) {
byte[] b = new byte[n];
int result = fisier.read(b);
if (result == -1) break;
String s = new String(b);
System.out.print(s);
} // end while
fisier.close();
} // end try
catch (FileNotFoundException e) {
System.err.println("Fisierul " + args[i] + " nu exista");
}catch (IOException e) {
System.err.println(e);
}
System.out.println();
} // end for
} // end main
}

II.3.4 Scrierea datelor intr-un fiier
Programul Test_scr_fis citete date de la intrarea standard System.in i le scrie ntr-un fiier
specificat ca argument la lansarea n execuie a programului:

import java.io.*;
class Test_scr_fis{
public static void main(String[] args) {
FileOutputStream[] fos = new FileOutputStream[args.length];
for (int i = 0; i < args.length; i++) {
try {
fos[i] = new FileOutputStream(args[i]);
}catch (IOException e) {
System.err.println(e);
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

42
}
} // end for

try {
while (true) {
int n = System.in.available();
if (n > 0) {
byte[] b = new byte[n];
int result = System.in.read(b);
if (result == -1) break;
for (int i = 0; i < args.length; i++) {
try {
fos[i].write(b, 0, result);
}catch (IOException e) {
System.err.println(e);
}
} // end for
} // end if
} // end while
} catch (IOException e) {
System.err.println(e);
}
for (int i = 0; i < args.length; i++) {
try{
fos[i].close();
}catch (IOException e) {
System.err.println(e);
}
}
} // end main
}

I I .3.5 Crearea unui applet
Applet-urile se difereniaz prin structura programului i modul n care acestea sunt lansate n
execuie. n cazul unui applet, browserul cu care este vizualizat pagina web care conine applet-ul este
responsabil cu lansarea interpretorului. n plus, codul oricrui applet are o structur specific.
II.3.5.1. Etapele crerii unui applet
a. Scrierea codului surs i salvarea n fiier
import java.applet.*;
import java.awt.*;
/**
* Applet-ul App1 afiseaza mesajul "Primul applet in Java!".
*/
public class App1 extends Applet {
public void paint(Graphics g) {
// Afiseaza textul " Primul applet in Java!"
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

43
g.drawString("Primul applet in Java!", 50, 25);
}
}
Salvarea se va face n fiierul App1.java .
b. Compilarea appletului
Se folosete comanda javac App1.java; n urma execuiei comenzii este creat
fiierul de tip bytecode App1.class.

c. Rularea appletului
Applet-urile pot fi rulate prin intermediul unui browser. Acesta poate fi Microsoft Internet
Explorer, Mozilla Firefox, Apple Safari, Google Chrome, Opera etc, sau oricare alt program similar
care suport appleturi Java. Rularea se mai poate face i printr-un program special care este distribuit
odat cu pachetul JDK i care se numete appletviewer, prezent in folderul bin, dupa instalarea
versiunii de Java..
c.1. Pentru a rula un applet dintr-un browser, este necesar crearea unui fiier de tip HTML care va
conine un marcaj ce indic browser-ului cum se numete fiierul bytecode. Aceste marcaje sunt
specifice standardului HTML i se numesc tag-uri.
Pentru majoritatea aplicaiilor este suficient folosirea urmtorului fisier HTML (exemplu.html)
<html>
<head><title>Un applet Java </title>
</head>
<body>
<applet code=App1.class width=400 height=400>
</applet>
</body>
</html>

c.2. Dac se opteaz pentru vizualizarea applet-ului (figura 8.16) folosind programul appletviewer, se
folosete sintaxa
appletviewer exemplu.html

I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

44

Figura 8.16 Aplicaia appletviewer

Observatie: n NetBeans, pentru a crea o clas nou de tip applet, se va selecta New -> New File; se
va deschide o fereastr cu mai multe tipuri de aplicaii; se alege opiunea Applet i se apas Next. Se
introduce numele noii clase create, i se apas Finish. Se va observa faptul c numele clasei este
adugat n directorul cu fiiere surs din fereastra Projects. n final se compileaz i se ruleaz clasa
respectiv.

II.3.5.2 Crearea unei aplicaii Java care ruleaz ntr-o fereastr
O alternativ la realizarea unui applet este crearea unei aplicaii Java care s ruleze ntr-o
fereastr (figura 8.17). La fel ca i n cazul unui applet, codul unei aplicaii Java care ruleaz ntr-o
fereastr are o structur specific.

Programul Ex1, rescris pentru a rula ntr-o fereastr, este urmtorul:

import java.awt.*;
import java.awt.event.*;

class Ex1_frame extends Frame {
public Ex1_frame() {

Panel panel=new Panel();
panel.add(new Label("Primul program Java!"));
add(panel);

addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});
}

public static void main(String args[]) {
Ex1_frame mainFrame = new Ex1_frame();
I nformatica aplicata-note de curs constructii20132014@gmail.com; http://www.cdsd.ro

45
mainFrame.setSize(400, 400);
mainFrame.setTitle("Ex1_frame");
mainFrame.setVisible(true);
}
}



Figura 8.17 O aplicaie Java care ruleaz ntr-o fereastr



* E. Petac, C. Serban I nformatica aplicata. Ghid practice J ava, Publisher: Crizon, Constanta, 2012,
369 pp., ISBN 978-606-8476-00-04

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