Documente Academic
Documente Profesional
Documente Cultură
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.
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.
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.
class HelloWorld {
public static void main ( String args[]
{
System.out.println("Hello world!");
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.
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.
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 (}).
class HelloWorld { }
Acolada illchisa
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( ).
Figura 1-3 Toate aplica~iile Java au 0 metoda main ( ) , deoarece acesta este punctui de
intrare ai apiicatiei.
CAPITOLUll In interiorullimbajului Java
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
}
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
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.