Professional Documents
Culture Documents
Versiunea 2.0.1
pentru BlueJ Versiunea 2.0.x
Michael Klling
Mrsk Institute
University of Southern Denmark
Versiune n limba romn - Marius Joldos - Universitatea Tehnic din Cluj-Napoca
Cuprins
Copyright M. Klling
Cuprins
1
Cuvnt inainte
1.1
Despre BlueJ..................................................................................................................................4
1.2
Scop si audient............................................................................................................................4
1.3
1.4
Feedback .........................................................................................................................................5
Instalarea
2.1
2.2
2.3
2.4
Probleme
legate
de
instalare...........................................................................................7
3.1
3.2
3.3
Crearea obiectelor.........................................................................................................................9
3.4
Executia........................................................................................................................................ 11
3.5
3.6
Compilarea................................................................................................................................... 13
3.7
16
4.1
Inspectia........................................................................................................................................ 16
4.2
20
5.1
5.2
Crearea claselor......................................................................................................................... 20
5.3
Crearea dependentelor.............................................................................................................. 21
5.4
Copyright M. Klling
Table of contents
6
22
6.1
6.2
6.3
Transferul de obiecte................................................................................................................. 23
6.4
6.5
Executia instructiunilor................................................................................................................ 24
6.6
6.7
6.8
Istoricul comenzilor...................................................................................................................... 26
Depanarea
27
7.1
7.2
7.3
Inspectarea variabilelor............................................................................................................... 29
7.4
Oprirea si terminarea.................................................................................................................. 30
31
Crearea appleturilor
33
10
11
9.1
9.2
9.3
Alte operatii
35
10.1
10.2
10.3
10.4
Generarea documentatiei.......................................................................................................... 36
10.5
10.6
Rezumate
Copyright M. Klling
38
1 Cuvnt nainte
Copyright M. Klling
Cuvnt inainte
1.4 Feedback
Comentarii, ntrebari, corectii, critici si orice ale reactii privind sistemul BlueJ sau acest
tutorial sunt binevenite si ncurajate activ. V rugm s le expediati lui
Michael Klling (mik@mip.sdu.dk).
Copyright M. Klling
2 Instalarea
BlueJ este distribuit n trei formate diferite: unul pentru sisteme Window, un altul
pentru MacOS si un altul pentru toate celelalte systeme. Instalarea este direct.
Cerinte
Trebuie s aveti J2SE v1.4 (JDK 1.4) sau mai nou instalat pe sistem ca s folositi
BlueJ. n general, actualizarea la ultima versiune stabil (non-beta) de Java
este recomandat. Dac nu aveti JDK instalat l puteti descrca de pe situl web al Sun
Corp. http://java.sun.com/j2se / . Pe MacOS X, este preinstalat o versiune recent de
J2SE - nu trebuie sa o instalati singur(a). Dac gsiti pagini care ofer JRE
(Java Runtime Environment) si SDK (Software Development Kit), trebuie s
descrcati SDK JRE nu este suficient.
Copyright M. Klling
Instalarea
2.2 Instalarea pe Macintosh
BlueJ ruleaza numai pe MacOS X.
Distributia pentru MacOS este in fisierul numit BlueJ-xxx.zip, unde xxx este un
numr de versiune. Spre exemplu, distributia BlueJ versiunea 2.0.0 se numeste
BlueJ-200.zip. Acest fisier poate fi distribuit pe disc sau l puteti descrca de pe web, la
http://www.bluej.org.
MacOS va decomprima (de obicei) automat acest fisier dup descrcare. Dac nu, faceti
dublu-clic pe el pentru decomprimare.
Dup decomprimare, veti avea un director numit BlueJ-xxx. Mutati acest director n directorul numit Applications (sau unde doriti sa-l pastrati). Nu mai sunt necesari alti pasi n
instalare.
Va aprea o fereastr care v permite s alegeti directorul de instalare pentru BlueJ si versiunea
de Java pe care o folositi pentru a rula BlueJ.
Dati clic pe Install. Dup terminare, BlueJ are trebui s fie instalat.
Copyright M. Klling
sau
$ bluej examples/people
Copyright M. Klling
Project Open...
Ori de cate ori mentionam un clic-dreapta in acest tutorial, utilizatorii de Macintosh vor citi ctrl-clic.
Copyright M. Klling
Dorim s crem un obiect Staff, asa c trebuie clic-dreapta pe icoana Staff (care
face s apar meniul prezentat n figura 2). Meniul prezint doi constructori pentru
crearea unui obiect Staff , unul cu parametri si altul fr. Mai nti, alegeti constructorul fr parametri. Apare dialogul din figura 3.
Acest dialog v solicit s dati un nume obiectului de creat. n acelasi timp, v sugereaz un nume implicit (staff1). Acest nume este suficient de bun deocamdat, asa c
clic pe OK. Va fi creat un obiect Staff.
Copyright M. Klling
10
Probabil c ati observat c clasa Person este etichetat <<abstract>> (este o clas abstract)
Veti observa (dac ncercati) c nu puteti crea obiecte din clase abstracte (asa si defineste
specificatia limbajului Java).
3.4 Executia
Rezumat: Pentru a executa o metod, alegeti-o din meniul vertical al obiectului.
Acum c ati creat un obiect, i puteti executa operatiile publice. (Java numeste operatiile
metode.) Clic cu butonul din dreapta pe obiect si apare un meniu cu operatiile obiectului (Figura 5). Meniul arat metodele disponibile pentru acest obiect si nc dou
operatii speciale furnizate de mediu (Inspect si Remove pe care le vom trata mai tarziu).
Acum s ne concentrm asupra metodelor.
11
Metodele mostenite dintr-o superclas sunt disponibile prin intermediul unui sub-meniu.
n partea cea mai de sus a meniului vertical al obiectului exist doua sub-meniuri, unul
pentru metodele mostenite de la Object si un altul pentru cele de la Person (Figura 5).
Puteti apela metode ale Person, cum este getName) alegndu-le din sub-menu. ncercati.
Veti observa c rspunsul este iarasi vag: (unknown name), deoarece nu am dat un nume
persoanei noastre.
Acum s ncercm s specificm un numr de birou. Aceasta ne va arta cum s apelm o
metod cu parametri. (Apelurile la getRoom si getName au valori de retur, dar nu au parametri).
Apelati functia setRoom alegnd-o din meniu. Apare un dialog care v solicit s introduceti
un parametru (Figura 7).
n partea de sus, acest dialog arat interfata metodei de apelat (inclusiv comentariile si semntura). Sub acestea se afla o csut de text unde puteti introduce parametrul. Semntura de sus
ne spune c se asteapta un parametru de tipul String. Introduceti noul numr de birou ca sir
(inclusiv ghilimelele) n campul de text si apsati butonul OK al formei.
Asta e tot de vreme ce aceasta metod nu returneaz vreun parametru, nu exist dialog rezultat.
Apelati getRoom din nou pentru a verifica faptul c identificarea biroului s-a schimbat.
Copyright M. Klling
12
n
return "room " + room;
BlueJ suport Java fr nici o modificare, asa c nu exista nimic special modul n care
s v implementati clasele.
3.6 Compilarea
Rezumat: Pentru a compila o clas, apsati butonul Compile al editorului. Pentru a
compila un proiect, apsati butonul Compile din fereastra proiectului.
Dup inserarea textului (nainte de a face orice altceva), verificati rezumatul proiectului n fereastra principala). Veti observa c icoana de clas pentru clasa Staff s-a
schimbat: acum este n dungi. Marcajul n dungi al claselor arat c acestea nu au fost
compilate de la ultima schimbare. napoi la editor.
Not: V puteti ntreba de ce icoanele claselor nu au fost dungate la prima deschidere
a acestui proiect. Acest lucru nu s-a ntmplat fiindc clasele din proiect erau deja compilate. Adesea proiectele BlueJ sunt distribuite necompilate, asa c s v asteptati s
vedeti dungate majoritatea icoanelor claselor la prima deschidere a unui proiect de acum incolo.
n bara de unelte din partea de sus a editorului exist cteva butoane cu functii folosi-.
te frecvent. Unul este Compile. Aceast functie permite compilarea acestei clase direct
din editor. Acum dati clic pe butonul Compile. Dac nu ati gresit, ar trebui s apar
Copyright M. Klling
13
Bara de unelte din fereastra peoiectului are si ea un buton Compile. Acest buton cauzeaz compilarea ntregului proiect. (De fapt, el determin care clase necesit recompilarea si le recompileaz n ordinea corespunztoare.) ncercati acest lucru prin schimbarea uneia sau mai multor clase (astfel ca dou sau mai multe clase apar dungate n diagrama de clase) si apoi apsati butonul Compile. Dac se detecteaza o eroare ntr-una
dintre clasele compilate, atunci se va deschide automat editorul si se va afisa locul erorii
si un mesaj. Puteti observa c bancul de obiecte este din nou gol. Obiectele sunt nlturate de fiecare dat cnd se schimba implementarea.
Copyright M. Klling
14
Copyright M. Klling
15
4.1 Inspectia
Rezumat: Inspectia obiectelor permite un anumit nivel de depanare prin afisarea
strii interne a unui obiect.
Atunci cnd ati executat metodele unui obiect, poate ca ati remarcat operatia Inspect
care este disponibil pentru obiecte, pe lng metodele definite de utilizator (Figura 5).
Aceast operatie permite verificarea strii variabilelor de instant (cmpuri) ale obiectelor. ncercati s creati un obiect cu cteva valori definite de utilizator (d.e. un obiect Staff folosind constructorul cu parametri). Apoi selectati Inspect din meniul objectului.
Apare un dialog care afiseaz cmpurile obiectului, tipurile si valorile acestora (Figura 9).
Inspectia este util pentru a verifica rapid dac o operatie 'mutator' (o operatie care
schimba starea obiectului) a fost executat corect. Astfel, inspectia este o unealt de
depanare simpl.
n exemplul Staff, toate cmpurile sunt tipuri simple (fie tipuri non-obiect fie siruri).
Valorile acestor tipuri pot fi afisate direct. Puteti vedea imediat dac constructorul a
efectuat atribuirile corespunztoare.
n cazuri mai complexe, valorile cmpurilor ar putea fi referinte la obiecte definite
de utilizator. Pentru a ne uita la un asemenea exemplu, vom folosi un alt proiect.
Deschideti proiectul people2, care este si el inclus in distributia standard a BlueJ.
Desktop-ul pentru people2 este prezentat n Figura 10. Cum se vede, acest al doilea
Copyright M. Klling
16
Pentru urmatorul lucru pe care dorim s-l ncercm inspectia cu cmpuri obiect
creati un obiect Staff si apoi apelati metoda setAddress pentru acest obiect (o veti gsi
n submeniul Person). Introduceti adresa. Intern, codul lui Staff creaz un obiect de
clas Address si-l memoreaz n cmpul su address.
Inspectati acum obiectul Staff. Dialogul de inspectie rezultat este artat n Figura 11.
Cmpurile din obiectul Staff includ acum address. Dup cum se vede, valoarea sa
este artat sub forma unei sgeti, lucru care semnific o referint la alt obiect. Cum
acesta este un obiect complex, definit de utilizator, valoarea sa nu poate fi artat direct
n aceast list. Pentru a examina mai departe adresa, selectati cmpul address field din
lista si dati clic pe butonul Inspect din dialog. (Sau puteti da dublu-click pe cmpul
address.) Se deschide o alt fereastr de inspectie care arat detaliile obiectului Address
(Figura 12).
Copyright M. Klling
17
Dac ati selectat un cmp public, atunci, n loc s dati clic pe Inspect, puteti alege
cmpul address si s apasati butonul Get. Aceaat operatie plaseaz obiectul ales pe
bancul de obiecte. Acolo l puteti examina mai departe prin apelarea metodelor sale.
Copyright M. Klling
18
Copyright M. Klling
19
Copyright M. Klling
20
Pentru a elimina o clas din diagram, selectati clasa si apoi selectati Remove din meniul
Edit. Puteti, de asemenea s selectati Remove din meniul vertical al clasei. Ambele optiuni
functioneaz si pentru sgeti: puteti fie alege mai nti sgeata si apoi selecta Remove din meniu
fie puteti folosi meniul vertical al sgetii.
Copyright M. Klling
21
Copyright M. Klling
22
Expresiile se pot referi la valori si obiecte Java standard, precum si la clase din proiectul
curent. Tblita de cod va afisa valoarea rezultatului, urmat de tipul su (ntre paranteze)
sau un mesaj de eroare dac expresia este incorect.
De asemenea puteti folosi obiectele pe care le aveti pe bancul de obiecte. ncercati urmtoarele: plasati un obiect de clasa Student pe bancul de obiecte (folosind meniul vertical al clasei
cum am descris mai nainte). Numiti-l student1.
n tblita de cod puteti acum scrie
student1.getName()
Similar, puteti referi toate metodele disponibile din clasele proiectului Dvs.
Dac rezultatul este un sir (string), valoarea sa va fi afisata ca rezultat, dar veti vedea si
mica icoan de obiect (deoarece sirurile sunt obiecte).
Cteva expresii pe care le puteti ncerca pentru a crea obiecte sunt:
Copyright M. Klling
23
Mica icoan de obiect poate fi acum folosit pentru a continua lucrul cu obiectul rezultat. Puteti selecta icoana si o puteti tr pe bancul de obiecte (Figure 15). Acest
lucru va plasa obiectul pe banc, unde va fi disponibil pentru apeluri ulterioare ale metodelor sale, fie prin intermediul meniului su vertical, fie via tblita de cod.
Copyright M. Klling
24
Copyright M. Klling
25
Copyright M. Klling
26
7 Depanarea
Acesat sectiune prezint cele mai importante aspecte ale functionalittii de depanare
din BlueJ. n discutiile cu profesorii de calculatoare am auzit adesea comentariul ca folosirea unei depanator la studentii din primul an ar fi bun, dar pur si simplu nu este timp
pentru a o prezenta. Studentii se lupt cu editorul, compilatorul si executia; nu este timp
ramas pentru a prezenta o alta unealta complicat.
De aceea am decis s facem depanatorul ct mai simplu cu putint. Scopul este sa avem
un depanator pe care s-l puteti explica n 15 minute si pe care studentii s-l poata folosi
din acel moment fra alte instructiuni. S vedem dac am reusit.
Mai inti, am redus functionalitatea depanatoarelor traditionale la trei sarcini:
n schimb, fiecare dintre cele trei sarcini este foarte simpl. Le vom ncerca acum pe fiecare.
Pentru a ncepe, deschideti proiectul debugdemo, care este inclus n directorul examples
din distributie. Acest proiect contine cteva clase pentru singurul scop al demonstrrii functionalittii depanatorului altfel nu prea au sens.
Copyright M. Klling
27
Depanarea
Atunci cnd se ajunge la linia de cod care are punctul de ntrerupere atasat, executia va
fi ntrerupt. S ncercm acum asta.
Creati un obiect de clasa Demosi apelati-i metoda loop cu un parametru de, sa zicem, 10.
De ndat ce s-a ajuns la punctul de ntrerupere, va fi afisat n prim plan fereastra editorului
care va sublinia linia de cod respectiv; de asemernea va aprea n prim plan o fereastr
de depanator precum cea din figura 17.
n editor este evidentiat linia urmtoare de executat. (Executia este stopat nainte
ca aceast linie s fi fost executat.)
Copyright M. Klling
28
Depanarea
7.2 Executia n modul pas cu pas
Rezumat: Pentru a executa codul pas cu pas, folositi butoanele Step si Step Into din
depanator.
Acum ca am stopat executia (ceea ce ne convinge c metoda este ntr-adevr executat si c acest punct din cod este ntr-adevr atins), putem trasa pas cu pas codul si
putem vedea cum progreseaz executia. Pentru a face acest lucru, dati clic n mod repetat pe butonul Step din fereastra depanatorului. Ar trebui s vedeti c se schimb linia surs din editor (marcajul n culoare se mut cu linia executat). De fiecare dat
cnd dati clic pe butonul Step se execut o singur linie de cod si executia se opreste
din nou. Observati si c valorile variabilelor afisate n depanator se schimb (de exemplu valoarea variabilei sum.) Astfel puteti executa codul pas cu pas si puteti observa ce
se ntmpl. Dup ce v-ati plictisit de asta, putetida clic din nou pe punctul de ntrerupere pentru a-l elimina si apoi da clic pe butonul Continue din depanator pentru a reporni executia si a continua n mod normal.
S ncercm din nou o alta metod. Setati un punct de ntrerupere n clasa Demo, metoda carTest(), n linia care contine
places = myCar.seats();
Apelati metoda. Atunci cnd se atinge acest punct, urmeaz s se execute o linie care
contine un apel al metodei seats() din clasa Car. Dac dati clic pe Step atunci se execut intreaga linie ntr-un singur pas. Sa ncercm acum Step Into. Dac psiti intr-un apel
de metod, atunci intrati n metoda curent si executati metoda nssi linie cu linie (nu
ntr-un singur pas). n acest caz, executia ajunge n metoda seats() din clasa Car. Acum
puteti psi prin metod pn la sfrsit (cu Step) si s ajungeti napoi n metoda apelant.
Observati cum se schimb afisajul depanatorului.
Step si Step Into se comporta identic daca linia curenta nu contine un apel de metod.
29
Depanarea
carTest() din nou. Pe partea stnga a ferestrei depanatorului vedeti secventa de apeluri. Acum
arat
Car.seats
Demo.carTest
Aceasta indic faptul c metoda Car.seats a fst apelat de Demo.carTest. Puteti selecta Demo.carTest din aceast list pentru a inspecta sursa si valorile curente ale variabilelor din aceast metod.
Dac psiti peste linia care contine instrcutiunea new Car(...), puteti observa ca
valoarea variabilei locale myCar este afisat ca <object reference>(referint la obiect).
Toate valorile de tipuri obiect (cu exceptia sirurilor [String]) sunt afisate n acest fel. Puteti inspecta variabila dnd dublu-clic pe ea. Daca facet asa, se va deschide o fereastr de
inspectare a obiectului identic cu aceea descris anterior (sectiunea 4.1). Nu exista o diferenta real ntre inspectarea obiectelor aici si inspectarea lor pe bancul de obiecte.
Copyright M. Klling
30
n exemplul nostru, alegerea calsei main este usoar: exist doar una. Alegeti Hello
din meniu. Daca aveti alte proiecte, alegeti clasa care contine metoda "main" pe care doriti s o executati.
De obicei nu se includ surse n fisierele executabile. Dar puteti, dac doriti sa distribuiti
si sursele. (Puteti folosi formatul jar pentru a trimite ntregul proiect altcuiva prin email
ntr-un singur fisier, de exemplu.)
Dac ati configurat BlueJ s foloseasc biblioteci ale utilizatorului (fie via setarea
Preferences/Libraries, fie folosind directorul lib/userlib) veti vedea o zon intitulat
Include user libraries n mijlocul dialogului. (Dac nu folositi nici un fel de biblioteci
aceasta zona va lipsi.) Trebuie s verificati fiecare bibliotec pe care o foloseste proiectul
Dvs. curent.
Copyright M. Klling
31
Copyright M. Klling
32
9 Crearea applet-urilor
Vedeti c aveti optinuea de a rula applet-ul ntr-un browser sau ntr-un vizualizator de
applet-uri (sau doar s generati pagina de web far a-l rula). Lsati setrile implicite si dati
clic pe OK. Dupa cteva secunde, ar trebui s apar un vizualizator de applet-uri care
sa afiseze applet-ul de conversie majuscule/minuscule.
Vizualizatorul de applet-uri este instalat mpreuna cu J2SE SDK (instalarea de Java),
asa ca este ntotdeauna garantat c se afla n aceiasi versiune ca si compilatorul Java.
Copyright M. Klling
33
Crearea applet-urilor
n general, cauzeaz mai putin probleme dect browser-ele. Browser-ul Dvs. de web poate
sa ruleze o versiune de Java diferit si, n functie de care versiune a crui browser o folositi
poate cauza probleme. Cu cele mai noi browsere ar trebui sa mearg, totusi, bine.
Pe Microsoft Windows si MacOS, BlueJ foloseste browser-ul implicit. Pe sistemele Unix
browser-ul este definit n setrile BlueJ.
Copyright M. Klling
34
10 Alte operatii
BlueJ v permite s deschideti pachete existente care au fost create n afara BlueJ.
Pentru a face aceasta selectati Project Open Non BlueJ... din meniu. Alegeti in director
care contine fisierele surs Java, apoi dati clic pe butonul Open in BlueJ. Sistemul
v va solicita s confirmati c doriti s deschideti acest director.
Copyright M. Klling
35
Alte operatii
Clic-dreapta pe clas, si veti vedea ca meniul clasei nu include doar constructorul
classei, ci si metoda static main. Puteti acum invoca main direct din acest meniu
(fr a crea mai nti un obiect).
Toate metodele statice pot fi invocate n acest fel. Metoda main standard asteapt ca
argument un tablou de siruri (Strings). Puteti transfera un tablou de siruri folosind
sintaxa Java standard pentru constante de tip tablou. Spre exemplu, puteti transfera
{"one", "two", "three"}
Copyright M. Klling
36
Alte operatii
10.6 Crearea de obiecte din clase de bibliotec
Rezumat: Pentru a crea obiecte din clase de bibliotec, folositi Tools Use Library Class.
BlueJ ofer si o functie pentru a crea obiecte din clase care nu sunt parte a proiectului
Dvs. ci sunt definite ntr-o bibliotec. Puteti, de exemplu, crea obiecte de clasa String
sau ArrayList. Aceasta poate fi foarte util pentru experimentarea rapid cu aceste
obiecte de bibliotec.
Puteti crea un obiect de bibliotec selectnd Tools Use Library Class din meniu. Se
va afisa un dialog care va cere s introduceti un nume de clas complet calificat cum
este java.lang.String. (Observati ca trebuie sa dati numele complet calificat, adic
numele inclusiv al pachetelor care contin clasa.)
Cmpul de intrare text are un meniu vertical asociat care arat clasele folosite recent.
O dat ce s-a introdus un nume de clas apsarea tastei Enter va provoca afisarea tuturor
constructorilor si a metodelor statice ale acelei clase ntr- list n dialog. Oricare dintre
acesti constructori sau metode statice poate fi acum invocat prin selectarea din aceasta list.
Invocarea continu ca orice alt apel de constructor sau de metod.
Copyright M. Klling
37
11 Rezumate
Cum se incepe
1. Pentru a deschide un proiect alegeti Open din meniul Project.
2. Pentru a crea un obiect, alegeti un constructor din meniul vertical.
3. Pentru a executa o metod, alegeti-o din meniu vertical al obiectului.
4. Rezumat: Pentru a edita sursa unei clase, dati dublu-clic pe icoana clasei.
5. Pentru a compila o clas, dati clic pe butonul Compile din editor. Pentru a compila un proiect
dati clic pe butonul Compile din fereastra proiectului.
6. Pentru a obtine ajutor pentru un mesaj de eroare al compilatorului dati clic pe semnul de ntrebare de lng mesajul de eroare.
Depanarea
21. Pentru a seta un punct de ntrerupere, dati click n zona de breakpoint din stnga editorului.
22. Pentru a executa codul pas cu pas, folositi butoanele Step si Step Into din depanator
23. Inspectarea variabilelor este usoar ele sunt automat afisate n fereastra depanatorului.
24. Halt si Terminate pot fi folosite pentru a opri executia temporar sau permanent.
Copyright M. Klling
38
Rezumate
Crearea aplicatiilor de sine stttoare
25. Pentru a crea o aplicatie de sine stttoare, folositi Project - Create Jar File...
Crearea applet-urilor
26. Pentru a rula un applet, selectati Run Applet din meniul vertical al applet-ului.
27. Pentru a crea un applet, dati clic pe butonul New Class si alegeti Applet ca tip de clas.
Alte operatii
28. Pachetele non-BlueJ pot fi deschise cu comanda Project: Open Non BlueJ... .
29. Clasele pot fi copiate ntr-un proiect din afar folosind comanda Add Class from file...
30. Metodele statice pot fi apelate din meniul vertical al clasei.
.
31. Pentru a genera documentatia unui proiect, alegeti Project Documentation din meniul Tools
32. API standard Java a clasei poate fi vizualizat selectnd Help Java Standard Libraries
33. Pentru a crea obiecte din clase de bibliotec, folositi Tools - Use Library Class.
Copyright M. Klling
39