Sunteți pe pagina 1din 18

CAPITOLUL

I
I in interiorul
I
limbajului Java
Programarea calculatoarelor poate parea misterioasa ~i ceva care ar trebui lasat in
seama oamenilor de ~tiinta din universitati, dar nu este a~a. Cu putin timp ~i efort
puteti ajunge sa stapaniti cu u~urinta programarea calculatoarelor ~i sa preluati
controlul asupra calculatorului intr-un mod pe care nu l-ati fi crezut posibil. Dad
puteti sa cititi aceasta carte ~i sa luati notite, aveti toate aptitudiniIe necesare pentru
scrierea unui program pentru calculator. Un program este un set de instruqiuni pe
care calculatorul trebuie sa Ie urmeze. Aceste instructiuni sunt scrise intr-un limbaj
de programare, care este foarte asemanator cu limba engleza. Unul dintre Cele mai
populare limbaje de programare este Java. Probabil ati auzit deja toata rec1ama
zgomotoasa din jurullimbajului Java ~i toate discutiiIe despre modul in care Java a
revolutionat programarea calculatoarelor. Yeti fi in fruntea acestei revolutii, invatand
cum sa puneti calculatorulla munca cu ajutorul propriului program Java. Sa incepem
cu inceputul, de la elementele de baza, apoi avansand pas cu pas, pana dnd yeti
invata tot ce trebuie sa ~titi pentru a scrie un program Java.

- -.... ,.,
Java fara mistere
,.,~--
Programe pentru calculatoare
Probabil folositi un calculator personal; totu~i, calculatoarele persona1e reprezinta doar
unul dintre tipurile de calculatoare existente. Alte categorii de calculatoare sunt asistentii
digitali personali (personal digital assistant sau PDA), supercalculatoare rulate la nivelul
corporatiilor ~i rnicrocalculatoare folosite in automobile, aeronave ~i aparate electrocasnice.
Toate calculatoare1e au 0 trasatura comuna: efectueaza calcu1e ~i iau decizii de rniliarde
de ori mai repede decat 0 putem face noi, oamenii. Din punct de vedere tehnic, calculatoarele
pot executa numai doua tipuri de calcule - adunari ~i sdderi*.
Sunteti gata pentru primul test? De unde ~titi dad doua numere sunt egale? Le sddeti.
Dad diferenta este zero, numere1e sunt ega1e. Dad diferenta este un numar pozitiv, primul
numar este mai mare dedit al doilea . Dad diferenta este un numar negativ, primul numar
este mai rnic dedit al doi1ea. Aceasta este metoda prin care calculatoarele iau deciziile
logice.
Un programator instruie~te calculatorul sa efectueze calcu1e ~i sa ia decizii prin scrierea
unui program pentru calculator. Un program pentru calculator contine toate etape1e care
trebuie urmate intr-o anurnita ordine pentru efectuarea unui calcul specific sau pentru
luarea unei decizii logice.

Date
Multe instructiuni cer calculatorului sa manipu1eze informatii furnizate de programator,
de 0 persoana care utilizeaza calculatorul sau de un alt calculator. Aceste informatii sunt
nunute date.
Furnizati date unui program de fiecare data dind introduceti nume1e de identificare ~i
parola in calculator. Programul prime~te aceste informatii ~i Ie valideaza inainte de va
perrnite accesul la calculator. lata un alt test: ce calcule sunt folosite pentru validarea
numelui de identificare ~i a paro1ei? Sdderea! Programul scade numele de identificare ~i
parola furnizate din cele valide. Daca diferenta este zero, inseamna d acestea se potrivesc
~i accesul este perrnis.
Un programator poate introduce date direct intr-o instructiune, dad trebuie sa furnizeze
date. De exemplu, iata 0 instructiune care cere calculatorului sa adune doua numere
(numerele au fost plasate in instructiune de programator):
10 + 15

• "Creieml" matematic al calcnlatomlni, nnitatea aritmetica ~i logica (ALU), poate efectna don a categorii de opera!ii
elementare. Prima categorie este formata de opera!iile aritllletice, respectiv adnnarea, scaderea, Inlllnl!irea cn 2,
Impartirea cn 2 (din motive pe care Ie Yeti vedea ceva Illai tarzin) ~i allele. A dona categorie de opera Iii elelllentare
este formata din comparalii - avand dona 1JI1Illere, nnitatea aritmetica ~i logica poate stabili daca aces tea snnt egale
~i, daca nn , care dintre ele este mai mare. (nota tradncatomlni)
CAPITOLUL 1 in interiorullimbajului Java

Sunte~i surprins sa vedeti cat de simpla poate fi 0 instruc~iune? Daca este a~a, va puteti
bucura, deoarece multe dintre instructiunile pe care Ie scrieti in limbajul de programare
Java sunt u~or de inte1es ~i de scris.
De multe ori, in momentulin care scrie programul, programatorul nu are la dispozitie
datele care vor fi folosite in instruqiuni - cum ar fi identificatorul ~i parola unui utilizator.
Persoana care folose~te programul trebuie sa introduca aceste date in timpul rularii
programului.
Totu~i, instructiunile din program trebuie sa tina seama de aceste date, a~a ca
programatorul folose~te un inlocuitor pentru acestea. Puteti sa va ganditi la ace~ti inlocuitori
ca la un fel de etichete temporare pentru date. Programatorii numesc aceste etichete
varia bile, despre care yeti invata mai tarziu In carte. Exemplul urmator ilustreaza aceea~i
instructiune folosita pentru adunarea a doua numere, exceptand faptul ca literele A ~i B
sunt folosite ca inlocuitori pentru numere:
A + B
Calculatorul inlocuie~te aceste litere cu numere atunci cand persoana care folose~te
programul introduce numere in timpul rularii programului sau dnd numerele sunt fumizate
de un alt program.

Limbaje de programare
Un limbaj de programare, precum Java, permite programatorului sa scrie mai u~or
instruqiunile pentru calculator, deoarece aceste instruc~iuni sunt scrise folosind cuvinte
asemanatoare cu cele din limba engleza. Totu~i, calculatorul nu in~elege cuvintele din
limba engleza. Calculatorul In~elege numai instruc~iunile scrise In limbaj ma~ina.
Instruqiunile in limbaj ma~ina sunt formate din serii de zero ~i unu, care sunt intelese de
unitatea centrala de prelucrare (UCP), componenta in care au loc toate procesele de
prelucrare dintr-un calculator.
De~i programatorii au tendinta de a vorbi despre un singur limbaj de programare, de
fapt exista mai multe variante ale limbajului ma~ina. Ganditi-va ca toate aceste variante
sunt dia1ecte ale limbajului ma~ina. Fiecare unitate centrala de prelucrare Intelege un singur
limbaj ma~ina. Aceasta Inseamna ca un program scris Intr-un dialect poate fi rulat numai
pe calculatoarele echipate cu un UCP care Intelege dialectul respectiv. Din aceasta cauza,
programele sunt dependente de calclllator - sau dependente de ma~ina. Ca urmare, un
program In limbaj ma~ina scris pentru un calculator nu poate fi rulat pe un alt tip de
calculator.
Nu este nevoie sa fiti om de ~tiinta pentru a vedea care sunt prob1emele scrierii unui
program In limbaj ma~ina. In primul rand, ce om sanatos ar vrea sa scrie un program
folosind numai ~iruri de zero ~i unu? Noi gandim In cuvinte, nu In numere. De asemenea,
cine ar vrea sa scrie un program care poate fi rulat pe un singur tip de calculator?
Java fara mistere

Aparitia limbajului de asamblare a rezolvat cel putin una dintre aceste probleme.
Limbajul de asamblare este un alt limbaj de programare, care folose~te abrevieri ale
cuvintelor din limba engleza, numite insfmcfillni In limba) de asamblare, fiecare
reprezentand 0 opera tie elementara executata de calculator.
Programatorul trebuie mai intai sa decida ce opera tie este necesara, apoi sa foloseasca
instructiunea in limbaj de asamblare care cere calculatorului sa execute operatia respectiva.
Totu~i, calculatorul nu intelege decat ~iruri de zero ~i unu, a~a ca este folosit un program,
numit aS01nblor (assembler), care transforma instructiunile din limbaj de asamblare in
limbaj ma~ina.
lata un exemplu de program in limbaj de asamblare, care cere calculatorului sa efectueze
o operatie de adunare. Mai exact, instructiunea de mai jos insumeaza numerele 10 ~i 15.
ADD la, 15
Trebuie sa recunoa~teti ca limbajul de asamblare are un mare avantaj fata de limbajul
ma~ina - programatorul poate sa foloseasca cuvinte asemanatoare cu cele din limba engleza
pentru a scrie instructiuni. Totu~i, exista ~i 0 serie de dezavantaje critice.
Programatorii sunt nevoiti sa invete din limbajul de asamblare 0 multime de abrevieri
care nu sunt foarte intuitive, cum ar fi POP ~i PUSH. De asemenea, sunt necesare multe
instructiuni pentru executarea unor operatii fundamentale. Dar cea mai mare problema
este portabilitatea. Fiecare tip de calculator intelege propriul dialect al limbajului de
asamblare, ceea ce face aproape imposibila scrierea unui program in limbaj de asamblare
care sa ruleze pe diferite tipuri de calculatoare lara sa fie necesara rescrierea programului
sursa.
Limbajul de asamblare a evoluat in limbaje de programare de nivelinalt, care sunt
intuitive, deoarece folosesc cuvinte asemanatoare cu cele din limba engleza, instructiuni
(propozitii) ~i semne de punctuatie, care va permit sa instruiti calculatorul sa faca un
anumit lucru. C, c++ ~i Java sunt limbaje de programare de nivelinalt folosite pe scara
larga in prezent.
In plus, puteti scrie instructiuni care executa un set de operatii inrudite. Nu mai este
nevoie ca programatorul sa scrie 0 instructiune pentru fiecare opera tie. De asemenea,
programele scrise in limbaje de programare de nivelinalt pot fi rulate pe diferite tipuri de
calculatoare, lara sa fie necesara rescrierea programelor sursa.
lata cum functioneaza un limbaj de programare de nivelinalt: programatorul folose~te
cuvinte cheie din limbajul de programare pentru a cere calculatorului sa faca ceva. Cuvintele
cheie sunt similare cu cuvintele din limba engleza, cu ajutorul carora puteti forma propozitii
prin care cereti cuiva sa faca ceva.
A~a cum probabil ati ghicit deja, calculatorul nu intelege un program scris intr-un
limbaj de programare de ni vellnalt, deoarece calculatoarele Inteleg numai limbajul ma~ina.
Ca urmare, programul scris Intr-un limbaj de nivellnalt trebuie sa fie transformat in limbaj
ma~ina.
CAPITOLUL 1 In interiorullimbajului Java

Acest proces de transla~i e implica doua etape. Mai intai, programul este translatat intr-o
etapa intennediara, numita fi$ier obiect. Apoi, fi~ierul obiect este transfonnat in limbaj
ma~ina, care poate fi rulat pe calculator.
Translatarea unui program intr-un fi~ier obiect este numita compi/are ~i este Iacuta de
un program de translatie, numit compilator. Procesul de transfonnare a unui fi~ier obiect
in limbaj ma~ina se nume~te editarea legatllrilor (linking) ~i este executat de un program
numit editor de legatllri (linker).
Probabil va intrebati de ce programul nu este compilat direct in limbaj ma~ina. Motivul
este faptul ca un program are, de obicei, doua sau mai multe fi~iere obiect care trebuie sa
fie legate laolalta pentru a fonna programulln limbaj ma~ina. Din acest motiv, programatorii
numesc procesul de combinare a fi~ierelor editarea legatltrilor.
Compilarea ~i editarea legaturilor sunt caracteristici importante ale unul limbaj de
programare de nivelinalt, deoarece aceste doua procese permit rularea unui program pe
tipuri diferite de calculatoare, lara sa fie necesar ca programatorul sa rescrie programul.
Acest lucru este posibil datorita faptului ca exista compilatoare ~i editoare de legaturi
diferite pentru fiecare tip de calculator, capabile sa translateze un anumit limbaj de
programare de nivelinalt in limbajul ma~ina al fiecarui tip de calculator. De exemplu,
pentru un program scris in C++, puteti face compilarea ~i editarea legaturilor astfelincat
programul sa ru1eze pe diferite tipuri de calculatoare, lara a fi rescris.
lata versiunea tntr-un limbaj de programare de nivelinalt a exemplului in limbaj de
asamblare prezentat mai devreme in aceasta sectiune:
10 + 15

La inceputuri
In anii '50, doua limbaje de nivelinalt foarte raspandite erau FORTRAN (FORmula
TRANslator) ~i COBOL (COmmon Business Oriented Languages), care inca sunt folosite
~i-n prezent.
FORTRAN, dezvoltat de IBM, este un limbaj de programare de nivelinalt conceput
pentru efectuarea calcu1elor matematice complexe, In ap1icatii ~tiintifice ~i de inginerie.
COBOL, dezvoltat de guvemul federal american, este conceput pentru prelucrarea ~i
manipularea unor cantitati mari de date. Ambele limbaje i~i indeplineau foarte bine
obiecti vele, dar nu erau suficient de flexibile ~i Ie lipseau caracteristici1e necesare pentru
scrierea compilatoarelor ~i a sistemelor de operare.
Ca unnare, inginerii au incercat sa dezvolte un limbaj de programare mai flexibil ~i, ca
unnare, catre sfar~itul ani lor '60, Martin Richards a creat un nou limbaj de programare.
Acesta se numea BCPL ~i era folosit pentru scrierea compilatoarelor. La putin timp dupa
lansarea limbajului BCPL, Ken Thompson a dezvoltat 0 versiune 1mbunatatita, numita B.
Java fara mistere

Limbajul de programare B a fost folosit pentru crearea primelor versiuni ale sistemului de
programare Unix, la Bell Laboratories·.
Limbaje1e de programare BCPL ~i B aveau un mare dezavantaj In privinta modului In
care foloseau memoria. In prezent, memoria ca1culatoarelor este relativ ieftina, dadn anii
'60 era foarte scumpa, iar limbajele BCPL ~i B foloseau ineficient memoria ca1culatorului.
Ganditi-va ca memoria ca1culatorului este un set de cutii. In fiecare cutie puteti pune 0
stic1a de apa (datele). Trebuie sa rezervati 0 cutie Inainte de a putea pune acolo 0 stic1a de
apa. Ca urmare, este logic sa rezervati zece cutii daca vreti sa stocati zece stic1e cu apa ~i
cinci cutii daca vreti sa stocati cinci stic1e cu apa. In BCPL ~i B trebuie sa rezervati acela~i
numar de cutii, indiferent de numarul de stic1e pe care vreti sa 1e stocati. Ca urmare, de
fiecare data cand vreti sa stocati 0 stic1a cu apa, trebuie sa rezervati zece cutii. Aceasta
Inseamna ca noua cutii raman nefolosite ~i, ca urmare, sunt irosite.
In 1972, la Bell Laboratories, Dennis Ritchie a creat limbajul de programare C, care
elirnina dezavantaje1e din BCPL ~i B. Limbajul de programare C Incorpora multe dintre
caracteristicile limbajelor BCPL ~i B, dar introducea ~i unele noi, care, printre altele,
perrniteau unui programator sa specifice cu exactitate cantitatea de memorie necesara
pentru stocarea datelor In memoria ca1culatorului.
De~i limbajul de programare C a rezolvat problemele din BCPL ~i B, unii programatori
au ramas cu senzatia ca acesta nu are posibilitatea de a irnita modulln care vedem lumea
reala. Acesta este un dezavantaj important, deoarece programele sunt concepute sa simuleze
lumea reala In interiorul ca1culatoarelor. Ca urmare, limbajul de programare C nu putea
simula lumea reala, conform dorintelor programatorilor.
Vedem lumea reala ca 0 multi me de obiecte. aceste obiecte au atribute (date) ~i
comportamente. Sa luam ca exemplu 0 fereastra. Dimensiunile ferestrei sunt atributele
obiectului. Fereastra poate fi Inchisa sau deschisa, iar acestea sunt functii asociate ferestrei .
Limbajul de programare C este un limbaj procedural, care imita comportamentul din
lumea reala In interiorul ca1culatorului . Din nefericire, limbajul de programare C nu ofera
o modalitate de a combina comportamentul cu atributele.
In 1980, Bjarne Stroustrup, la Bell Laboratories, a dezvoltat un nou limbaj de
programare, numit C++. Cea mai importanta evolutie din C++ a fost capacitatea de a
combina atributele ~i funqii1e In obiecte. 0 data cu aceasta capacitate s-au dezvoltat ~i
modelul orientat spre obiecte ~i programarea orientata spre obiecte. (Vedeti cartea
Object-Oriented Programming DemystiJied pentru mai multe informatii despre acest
subiect.)
Probabil va Intrebati de ce Stroustrup a folosit simbolurile ++ In loc sa inventeze un
nume complet nou pentru limbaj . Simbolurile ++ reprezinta operatorul de incrementare
din C (~i din Java), despre care veti Invata mai tarziu In carte. Pentru moment, este important
sa retineti ca operatorul de incrementare adauga 0 unitate la valoarea curenta. Ca um1are,

• De fapt, prima versiune a sistenllllui de operare Unix a fost scrisii la nivel sC3znt,lnlimbajul de asamblare PDP-7.
(nota tradncatomlni)
CAPITOlUll in interiorullimbajului Java

numele c++ implicii faptul cii noullimbaj incorporeaza caracteristicile din C ~i adauga
altele noi. Puteti considera ca C++ este 0 extensie a limbajului de programare C.

Cum devine standard un limbaj de programare


V -ati intrebat vreodata cum este dezvoltat un limbaj de programare. Este nevoie de multa
perseverenta ~i de noroc. Sa ne intoarcem putin ~i sa revedem componentele unui limbaj
de programare. Toate limbajele de programare sunt formate din cuvinte cheie ~i
functionalitati.
Un cuvant cheie seamana cu un cuvant din limba engleza. Prin "functionalitate"
inte1egem actiunea executata de calculator atunci cand un cuvant cheie este folosit intr-un
program. Ganditi-va ca functionalitatea este definitia cuvantului cheie.
Primul pas in dezvoltarea unui limbaj de programare consta in elaborarea unei liste de
cuvinte cheie, impreuna cu actiunile asociate acestora. Ideal ar fi ca noul limbaj de
programare sa asigure 0 imbunatatire necesara fata de un limbaj de programare existent;
altfel, nimeni nu va folosi noullimbaj, cu exceptia dumneavoastra.
Pasul urmator este sa faceti publica aparitia noului limbaj in cadrul unei comunitati
tehnice ~i sa starniti interesul membrilor acestei comunitati. Dacii informatia ajunge la un
numar suficient de mare de utilizatori ~i exista posibilitatea obtinerii unor avantaje,
companiile importante din domeniu vor impune standardizarea noului limbaj de programare.
Standardizarea este procesul formal prin care comunitatea tehnica, prin intermediul
unei organizatii de standardizare, con vine asupra unui set de cuvinte cheie ~i a actiunilor
asociate. Organizatii de standardizare recunoscute sunt American National Standards
Institute (ANSI; www.ansi.org) ~i International Standards Organization (ISO; www.iso.ch).
Java Community Process (www.jcp.org) stabile~te standardele pentru limbajul de
programare Java.
Dupa stabilirea standardelor, producatorii de instrumente software dezvolta
compilatoare, editoare de legaturi ~i alte instrumente software care recunosc programe1e
scrise in noul limbaj de programare ~i translateaza aceste programe in limbaj ma~ina,
astfelincat sa poata fi rulate pe diferite tipuri de calculatoare. De asemenea, noullimbaj de
programare este predat in institutii de invatamant, sunt publicate ciirti des pre el, iar
programatorii 11 folosesc pentru scrierea programelor.

Apoi Java
C++ ~i alte limbaje de programare de nivel inalt au un dezavantaj comun: programele
scrise in aceste limbaje trebuie sa fie recompilate pentru a putea fi rulate pe diferite tipuri
de ca1culatoare. Organizatii1e comerciale aveau nevoie de un limbaj de programare care
sa Ie permita dezvoltarea unui program care sa poata fi rulat pe orice calculator lara a fi
necesara recompilarea programului.
Java tara mistere

De~i pe 0 cale ocolitoare, Sun Microsystems a Indeplinit aceasta cerinta prin introducerea
limbajului de programare Java. In 1991, Sun Microsystems a lansat proiectul Green, cu
scopul de a dezvolta un limbaj de programare potrivit pentru dispozitivele electronice
comerciale de larg consum, precum televizoarele ~i calculatoarele folosite in automobile.
Compania Sun se a~tepta ca aceasta noua piata de desfacere sa se dezvolte putemic.
James Gosling, unul dintre inginerii ~efi implicati In proiectul Green, a creat in acest
scop limbajul de programare Oak (stejar). Numele limbajului provine de la copacul aflat
!tinga biroullui Gosling. Totu~i, a aparut 0 problema. Exista deja un limbaj de programare
nurnit Oak. A~a ca Gosling ~i inginerii din proiectul Gosling s-au intalnit la 0 cafenea
pentru a ciiuta un nou nume pentru limbaj - ~i a~a s-a nascut Java.
Cerinta privind folosirea unui nou limbaj pentru dispozitivele electron ice nu s-a
materializat niciodata, dar In 1993 a Inceput dezvoltarea explozi va a sistemului World
Wide Web. Ceea ce odata era 0 retea de comunicatii pentru mediile academice ~i
guvemamentale a devenit un rnijloc de comunicare pentru mediile comerciale ~i publicul
largo
Pagina web a devenit un mediu cheie in comunicare. Fiecare pagina web era scrisa
manual, folosind limbajul HTML (Hypertext Markup Language) pentru afi~area textului
~i a imaginilor. Acestea sunt cunoscute sub numele de pagini web stat ice, deoarece
continutul ramane neschimbat de fiecare data cand paginile sunt vizualizate.
DezvoItatorii de pagini web aveau nevoie de 0 modalitate robusta de construire a
paginilor web dinarnice, care sa poata fi personalizate pentru fiecare vizitator al unui site
web. Ei voiau ca paginile web sa fie generate de un program care sa poata interactiona
automat ~i cu bazele de date ~i calculatoarele folosite Intr-o organizatie.
Limbajul de programare Java dezvoltate de Gosling era perfect pentru crearea paginilor
web dinarnice, cu conti nut interactiv care sa perrnita personalizarea paginii pentru fiecare
vizitator al site-ului. In plus, Java rula practic pe orice tip de calculator tara a fi necesara
recompilarea programelor.
Sun Microsystems a lansat oficiallimbajul Java in 1995 ~i, patru ani mai tarziu, acesta
a devenit limbajul preferat pentru aplicatiile la nivel de Intreprindere bazate pe World
Wide Web.
In prezent, limbajul de programare Java include mai multe versiuni, nurnite editii.
Versiunea cea mai raspandita este Java 2 Standard Edition (J2SE), pe care 0 yom explora
In aceasta carte. De asemenea, exista versiunea Java 2 Enterprise Edition (J2EE), folosita
pentru construirea aplicatiilor la nivel de corporatie. 0 alta versiune raspandita a limbajului
este Java 2 Micro Edition (J2ME), conceputa pentru dispozitive mobile, cum ar fi telefoanele
celulare ~i asistentii personali digitali (PDA - personal digital assistant). Puteti afla mai
multe despre J2EE din cartea J2EE: The Complete Reference, iar despre J2ME din J2ME:
The Complete Reference.
CAPITOlUll in interiorullimbajului Java

in interiorullimbajului Java
Sa vedem cateva elemente de baza ale limbajului Java. Un program este 0 serie de
instruqiuni scrise lntr-un limbaj de programare, care cere unui calculator sa execute anumite
sarcini. Acestea sunt asemanatoare cu indicatiile pe care le scrieti unui prieten ca sa-i
explicati cum sa ajunga la durnneavoastra acasa. Fiecare instruqiune trebuie sa fie exacta,
astfelindH calculatorul sa inteleaga ce vreti sa fad.
Bra indoiala, ati mai auzit tennenul aplicarie pentm calclllator. 0 aplicatie este, de
obicei, un grup de programe inrudite care, colectiv, arata calculatorului cum sa emuleze
lumea reala. De exemplu, un supennagazin local are 0 aplicatie de prelucrare a tranzactiilor,
folosita pentru Inregistrarea, prelucrarea ~i raportarea vanzarilor. Cea mai vizibila parte a
aplicatiei de prelucrare a tranzactiei este scanerul de la casa. Aplicatia este insa compusa
din multe programe.
Un program Java este fonnat din una sau mai multe clase scrise in limbajul de programare
Java. 0 clasa seamana cu 0 fonna de prajituri, folosita pentru a defini in interiorul
calculatorului un obiect din lumea reala. La fel cum 0 fonna de prajituri define~te aspectul
unei prajituri, 0 clasa define~te aspectul unui obiect. La fel ca 0 fonna de prajituri, 0 clasa
este folosita pentru crearea obiectelor propriu-zise in program. Veti vedea cum sa faceti
acest lucru in capitolul 7.
Aceste clase contin instructiuni care spun unui calculator ce sa fad ~i, in acela~i timp,
Ii fumizeaza datele de care are nevoie pentru a-~i indeplini sarcinile. Clasele sunt scrise
intr-un fi~ier de cod sursa Java folosind un editor. Un fi~ierde cod sursa Java este asemanator
cu un document dintr-un procesor de text, dar, in loc de text, codul sursa contine instruqiuni
scrise in limbajul de programare Java. Un editor este un procesor de text mai simplu, care
nu are toate functiile de fonnatare a textului pe care Ie gasiti de obicei intr-un procesor de
text.
Durnneavoastra sClieti codul sursa Java, care devine un program Java. Codul sursa
trebuie sa fie salvat pe disc intr-un fi~ier cu extensia • java.
Java funqioneaza altfel decat C++ ~i alte limbaje de programare de nivelinalt. Limbajele
de programare de nivelinalt trebuie sa fie compilate in cod obiect, care apoi este editat de
un editor de legaturi (linker) pentru a fonna programulin limbaj ma~ina rulat pe calculator.
Codul sursa Java nu este compilat in cod obiect, ci in cod de octeti, salvat intr-un fi~ier
cu extensia • class. Compilatorul Java este 0 componenta a pachetului Java 2 Software
Development Kit (J2SDK) care poate fi descarcat gratuit de pe site-ul web java.sun.com.

NOTA: Compilatoml Java este inclus ~i in mediile de dezvoltare integrata (IDE)


comerciale, precll1n Borland JBllilder. Pe longa compilatoml Java, lin medilt IDE include
~i 1111 editor, 1112 depanator ~i alte instrll1nente care va pot ajuta so economisiri timp.
Java fara mistere

Codul de octe~i generat de compilatorul Java este interpretat de ma~ina virtuaHi Java
(Java Virtual Machine - JVM), care translateaza codul de octe~i in limbajul ma~ina rulat
pe calculator. In prezent, pentru majoritatea tipurilor de calculatoare sunt disponibi1e ma~ini
virtua1e Java, care pot fi descarcate gratuit de pe site-ul web java.sun.com.
Ma~ina virtuala Java este cheia succesului cunoscut de acest limbaj, intrueat codul de
octeti produs de compilatorul Java poate fi citit de orice ma~ina JVM, indiferent de tipul
calculatorului pe care este rulata. Vechiul obiectiv al programatorilor a fost in sfar~it atins
- un program poate fi compilat 0 singura data ~i rulat, practic, pe orice calculator lara a fi
recompilat sau modificat.

Scrierea unui program Java pornind de la zero


Inainte de a intra in detaliile limbajului Java, sa tragem aer in piept ~i sa scriem, sa compilam
~i sa rulam tradi~ionalul program Hello World, care este primul program scris de orice
programator. Acesta contine toate elementele de baza ale unui program J ava ~i va va ajuta
sa deveniti mai increzator, pe maSUfa ce veti invata toate subtilitatile limbajului, de-a
lungul acestei carti.
Pentru inceput, descarcati pachetul Java 2 Software Development Kit de la adresa
java.sun.com. Va trebui sa a~tepta~i eateva minute inainte ca intregul fi~ier sa fie copiat pe
calculatorul dumneavoastra. Dupa ce se termina descarcarea, executa~i clic pe pictograma
J2SDK ~i instalati setul de dezvoltare. Nu uitati sa inc1udeti in calea de acces subdirectorul
Ibin, astfel ineat puteti compila programele Java din orice director de pe calculator.
Dupa instalarea pachetului J2SDK pe calculator, sunteti gata sa scrieti primul program
Java. Va trebui sa scrie~i instructiunile Java intr-un editor de text. Majoritatea calculatoarelor
au un editor. Daca folositi un calculator Windows, deschideti programul Notepad. Daca
folositi un calculator UnixILinux, lansa~i programul vi. Introduce~i in editor textul din
figura 1-1. Acesta este programul Hello World scris in Java.
Salvati fi~ierul cu numele Hello World.java. Asigura~i-va ca numele este scris exact ca
aici. Altfel, va fi generata 0 eroare de compilare. Java face diferenta intre literele mari ~i
cele mici in numele fi~ierelor ~i ale c1aselor.

class HelloWorld {
public static void main ( String args[]
{
System.out.println("Hello world!");

Figura 1-1 Programul HelloWorld


CAPITOLUL '1 in interiorul limbajului Java

Dad! folositi programul otepad, selectati optiunea Save As. Observati ea numele
prestabilit este *. txt. Inlocuiti acest nume cu He ll oWo rld. java. Pentru a deschide
acest fi~ierin Notepad, alege~i optiunea All Files (*. *) in loc de Text Document (* .txt) din
lista File Type, astfelincat sa vedeti ~i fi~ierele care nu au extensia * . txt.

Compilarea unui program Java


Vom discuta fiecare parte a programului HelloWorld. java in seqiunea urmatoare.
Acum yom compila ~i yom rula programul. Daca folositi un calculator Windows, deschideti
o fereastra Command Prompt. Daca folositi un calculator UnixILinux, deschideti 0 fereastra
de consola.
Scrieti urmatoarea comanda in linia de comanda, apoi apasati tasta Enter:
j a vac Hel l oWo rld . java
Daea programul este compilat cu succes, pe ecran apare din nou promptul de comanda.
Daea afi~ati directorul de lucru, yeti vedea un nou fi~ier, HelloWorld.class, care
contine codul de octeti al programului. Pe un calculator Windows, afi~ati continutul
directorului scriind comanda dir ~i apasand tasta ENTER. Pe un calculator UnixILinux,
scrieti comanda Is ~i apasati tasta ENTER.
Daea programul nu a fost compilat cu succes, pe ecran apar diferite mesaje de eroare.
lata cateva dintre acestea, impreuna cu solutiile posibile:
• 'javac' is not recognized as an internal or external command, operable
program or batch file (,javac' nu este recunoscuta ca 0 comanda intema sau
extema, program executabil sau fi~ier de comenzi). Aceasta eroare are doua
cauze probabile. In primul rand, ati desearcat pachetul J2SDK, dar nu l-ati
instalat. In acest caz, trebuie ca mai intai sa instalati pachetul J2SDK. In al doilea
rand, ati instalat pachetul, dar nu ati inc1us subdirectorul bin din J2SDK In calea
de acces a calculatorului. In acest caz, trebuie sa inc1udeti subdirectorul bin In
calea de acces.
• " ... should be declared in a file named ..." (oo. ar trebui sa fie dec1arata Intr-un
fi~ier numit...) Daea vedeti acest text ca parte a mesajului afi~at pe ecran dupa
ce Incercati sa compi1ati programul Java, probabil nu ati scris numele exact a~a
cum apar in acest capitol. Numele fi~ierelor trebuie sa fie scrise exact ca aici,
tinand seama de literele mari ~i cele mici. Verificati inca 0 data numele.
• javac: invalid flag: (javac: semnalizator invalid:) Daea vedeti acest mesaj, urmat
de 0 lista lunga de cuvinte care incep cu 0 liniuta de despartire, probabil
compilatorul nu poate gasi fi~ierul sursa Java. Afi~ati directorul curent, pentru a
va asigura ea fi~ierul Hell o Wo rld. java se afla In acel director. Daca nu-l
gasiti, salvati-linea 0 data in acel director. De asemenea, este posibil sa fi scris
gre~it numele fi~ierului atunci cand ati Incercat sa-l compilati.
Java fara mistere

Incercati Inca 0 data, asigunlndu-va ca numele fi~ierului este scris cOl'ecL 0 alta
eroare frecventa este omiterea extensiei fi~ierului. La compilare trebuie sa
specificati extensia .java.
• HelloWorld.java:6: ';' expected De fiecare data cand vedeti un mesaj de eroare
care contine cuvantul expected puteti banui ca a aparut 0 eroare de sintaxa. 0
eroare de sintaxa apare atunci cand compilatorul nu Intelege ceva ce ati scris In
program. Mesajul este urmat, de obicei, de partea din program pe care
compilatorul nu a Inteles-o. lata cum rezolvati aceasta problema: numarul afi~at
In mesaj dupa numele fi~ierului indica linia din program pe care este probabil sa
fi aparut eroarea. In acest exemplu, linia 6 este cea care a generat eroarea. Dupa
numarulliniei este specificata sintaxa pe care compilatorul se a~tepta sa 0
gaseasca In program. In acest exemplu, compilatorul se a~tepta sa gaseasca un
caracter punct ~i virgula. De asemenea, uitati-va cu atentie la codul afi~at
Impreuna cu mesajul. Veti vedea un accent circumflex (1\) care indica loculin
care compilatorul a descoperit problema. Avand toate aceste indicii, nu aveti
altceva de Iacut decat sa afi~ati programul Java in editorul de text, sa faceti
corecturile necesare ~i sa recompilati programul.

Rularea unui program Java


Dupa ce ati reu~it sa compilati programul Java, este timpul sa-l rulati. Scrieti urmatoarea
comanda ~i apasati tasta ENTER:
java HelloWorld
Ar trebui sa vedeti mesajul "Hello world!" afi~at pe ecran In fereastra Command Prompt.
Daca nu vedeti acest mesaj, este posibil sa fi aparut una dintre urmatoarele probleme:
• 'java' is not recognized as an internal or external command, operable
program or batch file ('java' nu este recunoscuta ca 0 comanda intema sau
extema, program executabil sau fi~ier de comenzi). Asigurati-va ca ma~ina
virtuala Java este instalata pe calculatorul dumneavoastra. Daca nu este instalata,
descarcati ma~ina virtuala pentru calculatorul dumneavoastra de pe site-ul
pva.sun.com.
• Exception in thread "main" java.lang.NoClassDefFoundError: (Exceptie in
firul de executie "main" java.lang.NoClassDefFoundError:) Probabil ati introdus
HelloWorld. java sau HelloWorld. class in loc de HelloWorld
atunci cand ati Incercat sa rulati programul. Nu includeti extensia fi~ierului la
rularea programului Java.
CAPITOLUL 1 in interiorullimbajului Java
- -.... ,.,
Analiza pe componente a unui program Java
Ati compilat ~i rulat primul dumneavoastra program Java, a~a ca acum este timpul sa
studiem cu mai mare atentie modul de funqionare a programului HelloWorld. Programul
este format din trei parti: definitia clasei, definitia metodei ~i 0 instructiune.

Definitia
, c1asei
Definitia clasei din programul Hello World contine toate elementele necesare programului
pentru a afi~a pe ecran mesajul "Hello world !". Definitia clasei, prezentata in figura 1-2,
este compusa din urmatoarele elemente:
• Cuvantul cheie class
• Numele clasei
• Corpul clasei
Cuvantul cheie class informeaza compilatorul ca definiti 0 clasa. Cuvantul cheie
class trebuie sa fie urmat de nume1e clasei. In acest exemplu, numele clasei este
Hello World. Numele clasei din programul Hello World trebuie sa fie exact acela~i cu numele
de fi~ier al programului. Cele doua nume trebuie sa fie identice; altfel, este generata 0
eroare atunci cand compilati programul.
Observati ca numele clasei este format din doua cuvinte: Hello ~i World. Java nu permite
folosirea spatiilorin numele claselor; totu~i, este bine se scrieti cu majuscula initiala fiecare
cuvant din numele clasei. In acest fel, numele sunt mai u~or de citit, atat pentru
dumneavoastra, cat ~i pentru a1ti programatori.
Corpul c1asei este loculin care sunt declarate atributele ~i sunt definite metodele. Corpul
clasei incepe cu 0 acolada deschisa ({), ~i se termina cu 0 acolada inchisa (}).

Cuviiutul cheie class NUlllele c1asei Acolada deschisa

class HelloWorld { }

4.-------------------' Corpul c1asei

Acolada illchisa

Figura 1-2 Defini~ia clasei trebuie sa con~ina aceste elemente.


Java fara mistere

Definitia
, metodei
Mai devreme in acest capitol a~i inva~at ca 0 clasa are doua componente. Acestea sunt
atribute1e ~i comportamentele, care sunt numite mefode. Un atribut este un element de
date asociat clasei, in timp ce 0 metoda reprezinta functionalitatea clasei. Atributele sunt 0
parte optionala a claselor, dar orice aplicatie Java trebuie sa defineasca 0 metoda - main ( ) .
Metoda main ( ) , prezentata in figura 1-3, este locul din care incepe orice program Java.
Definitia unei metode include urmatoarele elemente:
• Numele metodei
• Argumentele metodei
• Corpul metodei
• Valoarea returnata de metoda
Nume1e metodei este folosit pentru identificarea metodei ~i pentru apelarea acesteia
ori de dite ori programul trebuie sa execute functionalitatea asigurata de metoda. Yeti
invata totul despre metode in capitolul6. Pentru moment, trebuie sa retineti doar ca ma~ina
virtuala Java apeleaza metoda main ( ) atunci dind rulati un program.
Argumente1e metodei sunt datele identificate intre paranteze1e din dreapta numelui
metodei ~i folosite de metoda pentru a asigura func~ionalitatea necesara. Metoda main din
programul HelloWorld are un singur argument: String args [ ]. Yeti invata despre
acest argument in capitolul 6. Pentru moment, nu yom discuta despre acest argument,
deoarece programul HelloWorld nu-l folose~te.
Corpul metodei este locul in care plasati instructiunile care cer calculatorului sa execute
functionalitatea specifica. Corpul metodei este delimitat de 0 pereche de acolade, similare
celor folosite pentru corpul clasei. Instruqiunile continute in corpul metodei sunt executate
secvential. Programul se termina atunci cand este executata ultima instruqiune din metoda
main( ).

Nllmele metodei Lista de argllmente a metodei

class HelloWorld { ....


I I
....
public static void main String args []
Corplll metodet ~
{
-}

Metoda nil retumeaza nici 0 valoare

Figura 1-3 Toate aplica~iile Java au 0 metoda main ( ) , deoarece acesta este punctui de
intrare ai apiicatiei.
CAPITOLUll In interiorullimbajului Java

Valoarea returnata de metoda reprezinta informatiile returnate de metoda catre partea


de program care i-a cerut sa execute ceva. A~a cum Yeti invata in capitolul 6, nu toate
metodele returneaza valori .1n acest exemplu, metoda main ( ) nu returneaza nici 0 valoare.
Ca urmare, trebuie sa precedali numele metodei cu cuvantul cheie void, care indica
faptul ca nu exista 0 valoare returnata.
Yeti observa alte doua cuvinte cheie folosite impreuna cu numele metodei main ( ):
public ~i static. Cuvantul cheie public insearnna ca metoda poate fi apelata din
afara definitiei clasei. Metoda main () este publica, deoarece este apelata de ma~ina
virtuala Java. Cuvantul cheie static este un subiect avansat, despre care yom discuta in
capitolu16. Pentru moment, este suficient sa retineti ca acest cuvant cheie trebuie sa apara
In definitia metodei main ( ) .

Instructiuni
,
A~a cum ati Invatat mai devreme In acest capitol, 0 instmctilll1e va permite sa cereti
ca1culatorului sa faca ceva. Exemplul nostru contine 0 singura instruqiune, care cere
ca1culatorului sa afi~eze pe ecran textul "Hello world!".
Dupa cum se poate vedea In figura 1-4, aceasta instruqiune apeleaza una din metode1e
standard din Java: pr intln ( ). Yeti Invata despre metoda pr intln ( ) In capitolu15.
Pentru moment, este important sa Intelegeti ca rolul metodei pr intln ( ) este de a afi~a
date pe ecran. Totu~i, trebuie sa-i spuneti metodei pr intln ( ) ce date vreti sa afi~eze.
Faceti acest lucru specificand datele respective Intre paranteze atunci cand apelati metoda
pr intln ( ). In acest caz, intre paranteze sunt plasate cuvintele "Hello world !", care
sunt apoi afi~ate pe ecran.
In sfar~it, toate instructiunile dintr-un program Java trebuie sa se termine cu un caracter
punct ~i virgula (;).Altfel, compilatorul nu va recunoa~te instruc\iunea ~i, probabil, va
afi~a un mesaj de eroare atunci cand Incercati sa compilati programul.

class HelloWorld {
public static void main ( String args[] )
{
Instmqillne System.out.println("Hello world!"); .... Caraeter punet
} ~ivirguUi
}

Apelarea lInei metode Textlll afi~at


pentm afi~area lInlli text pe eeran

Figura 1·4 Aceasta instruqiune cere ma~inii Java sa afi~eze pe ecran textul "Hello world!"
, e....,..- - Java fara mistere

intrebari recapitulative
1. Ce este un compilator?
2. Ce este un limbaj de programare de nivellnalt?
3. Ce este limbajul ma~ina?
4. Care este principala diferenta Intre C ~i Java ?
5. Care este principala diferenta Intre C++ ~i Java?
6. Ce este codul de octe~i?
7. Ce este ma~ina virtuala Java?
8. Care este scopul metodei main ( ) dintr-o aplica~ie Java?
9. Este obligatoriu ca orice clasa Java sa aiM declarat un atribut?
10. Ce se Intiimpla dupa ce este executata ultima instructiune din metoda main ( )?
Raspunsuri la
intrebarile
recapitulative ~i
examenul rmal
Capitolull
1. Un compilator este un program care translateaza un program scris Intr-un
limbaj de programare de nivellnalt In cod de octeti sau cod obiect, In
funqie de limbajulln care este scris programul.
2. Un limbaj de programare de nivellnalt contine cuvinte asemanatoare cu
cele din limb a engleza, folosite de programatori pentru a instrui
ca1culatorul sa execute functii specifice.
Java fara mistere

3. Limbajul ma~ina este singurullimbaj inteles de un calculator. Instructiuni1e


scrise in limbaj ma~ina sunt formate din ~iruri de zero ~i unu.
4. Principala diferenta intre C ~i Java este faptul eli Java permite programatorilor sa
defineaseli clase. In C nu pot fi definite clase.
5. Principala diferenta intre C++ ~i Java este faptul eli un program Java poate fi
rulat pe diferite tipuri de calculatoare tara a fi recompilat. Un program C++
trebuie sa fie recompilat pentru a fi rulat pe un alt tip de calculator.
6. Codul de octeti este cod Java compilat, care poate fi executat pe orice calculator
pe care ruleaza 0 ma~ina virtuala Java.
7. Ma~ina virtuala Java este un program care interpreteaza codul de octeti Java.
8. Metoda main ( ) dintr-o aplicatie Java este punctul de intrare al aplicatiei.
9. Nu. Puteti defini 0 clasa Java tara sa declarati un atribut ca membru al clasei.
10. Dupa ce este executata ultima instructiune din metoda main ( ), aplicatia Java
se termina.

Capitolul2
1. Un tip de date este un cuvant cheie folosit de un programator pentru a spune
ma~inii Java ce fel de date trebui stocate in memorie.
2. Nu. Numai variabile1e de acela~i tip pot fi declarate in aceea~i instructiune.
3. Conversiile fortate sunt 0 modalitate de transformare temporara a unei valori de
la un tip de date la un alt tip de date, pentru a asigura compatibilitatea cu 0
anumita opera tie.
4. Cea mai buna ca1e de a stabili tipul corespunzator de date pentru 0 variabila este
sa decideti valorile mini me ~i maxime care trebuie sa fie stocate in memorie,
apoi sa gasiti tipul de date al elirui domeniu de valori include valorile respective.
5. Identificatorul unei variabile este numele pe care-l dati variabilei respective.
Folositi acest nume in intregul program pentru a referi locatia de memoria pe
care Java 0 asociaza cu identificatorul variabilei.
6. 0 adresa de memorie este un numar unic care identifieli 0 locatie din memorie.
Identificatorul unei variabile este numele pe care-l folose~te programatorul
pentru a referi locatia de memorie corespunzatoare variabilei.
7. Domeniul de valabilitate al unei variabile este definit de blocul de cod in care
este declarata variabila. 0 variabila iese din domeniul de valabi litate atunci cand
programul iese din blocul de cod in care a fost declarata variabi la .
8. Precizia este numarul de cifre specificate in dreapta virgulei zecimale.
9. Atunci cand atribuiti un caracter unei variabile de tip char , in memorie este
stocata valoarea intreaga asociata caracterului respecti v In tabelul Unicode.

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