Tutorial BlueJ

(PDF romana local)                                                               (PDF engleza local)

(PDF romana pe www.bluej.org)                                            (Originalul PDF in limba engleza)

 

Cuprins

 

1

Cuvant de inceput

3

1.1

Despre BlueJ

3

1.2

Audienta tinta

3

1.3

Copyright, licenta si redistributie

3

1.4

Feedback

3

 

 

 

2

Instalare

4

2.1

Instalare pe Windows

4

2.2

Instalare pe Macintosh

4

2.3

Instalare pe Linux/Unix si alte sisteme

5

2.4

Probleme la instalare

6

 

 

 

3

Inceputul – editarea, compilarea si executia

7

3.1

Pornirea BlueJ

7

3.2

Deschiderea unui proiect

8

3.3

Crearea obiectelor

8

3.4

Executia

10

3.5

Editarea unei clase

12

3.6

Compilarea

12

3.7

Ajutor la erorile de compilare

13

 

 

 

4

Facand mai multe...

14

4.1

Inspectie

14

4.2

Trimiterea obiectelor ca parametrii

16

 

 

 

5

Crearea unui proiect nou

18

5.1

Crearea directorului proiectului

18

5.2

Crearea claselor

18

5.3

Crearea dependentelor

18

5.4

Eliminarea elementelor

19

 

 

 

6

Utilizarea 'code pad'

20

6.1

Afisarea 'code pad'

20

6.2

Evaluarea expresiilor simple

21

6.3

Primirea obiectelor

21

6.4

Inspectarea obiectelor

22

6.5

Executia comenzilor

22

6.6

Comenzi multilinie si secvente de comenzi

23

6.7

Lucrul cu variabilele

23

6.8

Istoricul liniei de comanda

24

 

 

 

7

Depanarea (debugging)

25

7.1

Setarea de breakpoint-uri

25

7.2

Parcurgerea codului pas cu pas

27

7.3

Inspectarea variabilelor

27

7.4

Oprirea programului

28

 

 

 

8

Crearea de aplicatii de sine statatoare

29

 

 

 

9

Crearea applet-urilor

31

9.1

Rularea unui applet

31

9.2

Crearea unui applet

32

9.3

Testarea unui applet

32

 

 

 

10

Alte operatii

33

10.1

Deschiderea pachetelor non-BlueJ in BlueJ

33

10.2

Adaugarea claselor existente in proiect

33

10.3

Apelul main() si a altor metode statice

33

10.4

Generarea documentatiei

34

10.5

Lucrul cu biblioteci

34

10.6

Crearea obiectelor din clasele de biblioteca

34

 

 

 

11

Rezumat

36

 

 

 

 

1 Cuvant de inceput

 

1.1. Despre BlueJ

 

Acest tutorial este o introducere in mediul de programare BlueJ. BlueJ este un mediu de dezvoltare Java™ realizat special pentru a preda programare la un nivel introductiv. El a fost proiectat si implementat de echipa BlueJ de la Universitatea Deakin din Melbourne, Australia si de Universitatea Kent din Cantebury, UK.

Mai multe informatii despre BlueJ puteti gasi la http://www.bluej.org

 

1.2. Audienta tinta

 

Acest tutorial este destinat persoanelor care vor sa se familiarizeze cu capacitatiile acestui mediu de dezvoltare. El nu explica deciziile luate in dezvoltarea mediului sau problemele de care s-a lovit in stadiul de cercetare.

Acest tutorial nu este menit sa fie un ghid de programare in Java. Programatorii incepatori in Java sunt sfatuiti sa citeasca si un tutorial de Java sau sa ia parte la un curs Java.

Acesta nu e un tutorial atotcuprinzator. Multe detalii au fost omise pentru a se accentua asupra unei introduceri scurte si concise in locul unei prezentari amanuntite. Pentru detalii ulterioare consultati The BlueJ Environment Reference Manual disponibil pe site-ul BlueJ.

Fiecare sectiune incepe cu o fraza care rezuma continutul sectiunii. Acest lucru permite cititorilor care cunosc parti din sistem sa decida daca vor sa citeasca acea sectiune sau daca trec mai departe. Sectiunea 11 repeta aceste fraze, pentru a fi mai usor de urmarit structura tutorialului.

 

1.3. Copyright, licenta si redistributie

 

Sistemul BlueJ si tutorialul sunt distribuite 'asa cum sunt', gratuit pentru folosire sau redistributie non-comerciala. Dezasamblarea sistemului este interzisa.

Nici o parte a sistemuluiBlueJ sau a documentatiei nu poate fi vanduta sau inclusa intr-un pachet care este vandut fara aprobarea in scris a autorilor.

Copyright-ul © pentru BlueJ este detinut de M. Kolling si J. Rosenberg.

 

1.4. Feedback

 

Comentarii, corectii, intrebari si critici legate de sistemul BlueJ sau de tutorial sunt bine venite si incurajate. Va rugam sa le trimiteti lui Michael Kolling (mik@mip.sdu.dk)

 

2. Instalare

 

BlueJ e distribuit in 3 formate distincte: unul pentru Windows, unul pentru MacOS, si unul pentru restul sistemelor. Instalarea este destul de simpla.

 

Elemente necesare

 

Trebuie sa aveti instalat inainte Java2SE v 1.4 (adica JDK 1.4) sau o versiune mai noua pentru a folosi BlueJ. In general este recomandata trecerea la cea mai noua versiune stabila (non-beta). Daca nu aveti un JDK instalat, puteti sa-l downloadati de pe site-ul Sun: http://java.sun.com/j2se/ . Pe MacOS X o versiune recenta de J2SE e preinstalata – asa ca nu mai e nevoie sa o instalati manual. Daca gasiti o pagina care va ofera sa downloadati JRE (Java Runtime Environment) si SDK (Software Development Kit), trebuie sa downloadati SDK deoarece JRE nu e suficient.

 

2.1. Instalare pe Windows

 

Fisierul prin care e distribuit BlueJ pe sisteme Windows se numeste bluejsetup-xxx.exe, unde xxx e numarul versiunii. De exemplu, BlueJ versiunea 2.0.0 are fisierul bluejsetup-200.exe. Puteti obtine fisierul de pe un disc, sau il puteti incarca de la site-ul BlueJ – http://www.bluej.org. Lansati in executie installer-ul.

Installer-ul va permite sa alegeti directorul in care vreti sa instalati. Va oferi si posibilitatea de a creea o scurtatura pe Desktop sau in Start Menu.

Dupa ce se incheie instalarea, puteti gasi fisierul bluej.exe in directorul de instalare a BlueJ-ului.

Prima data cand lansati BlueJ, el va cauta un sistem JDK. Daca descopera mai mult de un sistem JDK potrivit (de exemplu aveti instalat JDK 1.4.2 si JDK 1.5.0) o fereastra de dialog va va intreba pe care doriti sa-l folositi. Daca nu gaseste nici unul va va ruga sa ii specificati manual calea catre JDK (acest lucru se poate intampla cand un JDK a fost instalat, dar intrarile acestuia din registry au fost sterse).

Installer-ul BlueJ instaleaza si un program numit vmselect.exe. Folosind acest program puteti hotara mai tarziu ce masina virtuala sa foloseasca BlueJ-ul.

Alegerea JDK-ului este salvata pentru fiecare versiune de BlueJ. Daca aveti versiuni diferite de BlueJ instalate, puteti folosi o versiune cu JDK 1.4.2 si alta cu JDK 1.5.0. Schimbarea versiunii Java pentru BlueJ va modifica versiunea pentru toate instalarile BlueJ de aceeasi versiune pentru un user.

 

2.2. Instalare pe Macintosh

 

Aveti in vedere ca BlueJ ruleaza doar pe MacOS X.

Fisierul prin care e distribuit BlueJ pentru MacOS se numeste BlueJ-xxx.zip, unde xxx este versiunea. De exemplu, BlueJ versiunea 2.0.0 are fisierul BlueJ-200.zip. Puteti obtine fisierul de pe un disc, sau il puteti incarca de la site-ul BlueJ – http://www.bluej.org.

MacOS de obicei decomprima fisierul imediat dupa download. Daca nu a facut asta, efectuati un dublu-click pe fisier pentru a-l decomprima.

Dupa decompresie veti obtine un director numit BlueJ-xxx. Mutati acest director in directorul Apllications (sau oriunde doriti sa il tineti). Nu mai este nevoie de alte actiuni pentru instalare.

 

2.3. Instalare pe Linux/Unix si alte sisteme

 

Formatul general in care e distribuit BlueJ pentru astfel de sisteme este un fisier jar executabil. El e numit bluej-xxx.jar, unde xxx e versiunea. De exemplu, BlueJ versiunea 2.0.0 are fisierul bluej-200.jar. Puteti obtine fisierul de pe un disc, sau il puteti incarca de la site-ul BlueJ – http://www.bluej.org.

Rulati installer-ul executand urmatoarea comanda. NOTA: Pentru exemplu am folosit fisierul bluej-200.jar – trebuie sa folositi numele fisierului pe care l-ati obtinut (cu versiunea corecta).

<calea_catre_j2se>/bin/java -jar bluej-200.jar

<calea_catre_j2se> e calea catre directorul in care a fost instalat J2SE SDK.

Va aparea o fereastra in care puteti alege locul in care se va face instalarea si versiunea de Java ce va fi folosita de BlueJ.

Apasati Install. Dupa ce termina, BlueJ ar trebui sa fie instalat.

 


 

2.4. Probleme la instalare

 

Daca aveti orice fel de probleme, vizitati sectiunea Frequently Asked Questions (FAQ) de pe site-ul BlueJ (http://www.bluej.org/help/faq.html) si cititi sectiunea How to ask for help (http://www.bluej.org/help/ask-help.html).

 

3. Inceputul – editarea, compilarea si executia

 

3.1. Pornirea BlueJ

 

Pe sistemele Windows si MacOS se instaleaza un program numit BlueJ. Rulati-l.

Pe sisteme UNIX installer-ul creeaza un script numit bluej in directorul instalarii. Dintr-o interfata grafica dati dublu click pe fisier. Din linia de comanda puteti lansa BlueJ cu sau fara un proiect ca argument:

$ bluej

sau

$ bluej examples/people

 


Fig 1. Fereastra centrala BlueJ

 

3.2 Deschiderea unui proiect

 

Rezumat: Pentru a deschide un proiect, selectati Open din meniul Project.

 

Proiectele BlueJ, ca si pachetele standard Java, sunt directoare ce contin fisierele incluse in proiect.

Dupa pornirea BlueJ, folositi meniul Project – Open... pentru a selecta si deschide un proiect.

Cateva proiecte sunt incluse pe post de exemple in distributia BlueJ standard in directorul examples.

In aceasta sectiune de tutorial, deschideti proiectul people, care este inclus in acest director. Puteti gasi directorul examples in directorul de instalare al BlueJ. Dupa ce deschideti proiectul puteti vedea ceva similar cu Fig 1. Fereastra nu va arata exact la fel pe sistemul dumneavoastra, dar diferentele sunt minore.

 

3.3. Crearea obiectelor

 

Rezumat: Pentru a creea un obiect, selectati un constructor din meniul pop-up al clasei.

 

O caracteristica fundamentala a BlueJ-ului este ca puteti executa o aplicatie intreaga, dar puteti si interactiona direct cu obiecte ale oricarei clase si le puteti executa metodele publice. Executia in BlueJ este facuta de obicei prin crearea unui obiect si apoi invocarea unei metode a obiectului. Acest lucru este foarte util in timpul dezvoltarii aplicatiei – puteti testa clasele imediat ce au fost scrise. Nu este nevoie sa fie scrisa toata aplicatia de la inceput.

 

NOTA: Metodele statice pot fi executate direct, fara a necesita crearea unui obiect. Una din metodele statice poate fi main(), asa ca putem face aceleasi lucruri care se petrec intr-o aplicatie Java normala – pornirea aplicatiei prin rularea unei metode statice. Vom reveni la acest aspect mai tarziu. In primul rand vom face anumite lucruri, mai interesante, ce nu pot fi facute in mod normal intr-un mediu Java.

 

Dreptunghiurile ce pot fi observate in fereastra centrala (numite Database, Person, Staff si Student) sunt pictograme ce reprezinta clasele implicate in aplicatie. Puteti obtine un meniu cu actiuni referitoare la o clasa apasand pe pictograma ei cu butonul drept (Macintosh: ctrl+click1) (Fig 2). Operatiunile aratate apeleaza new pentru fiecare din constructorii definiti pentru aceasta clasa (prima) urmate de diferite operatii puse la dispozitie de mediu.

 


Fig 2. Operatiuni cu clasa (meniu pop-up)

 

Dorim sa creem un obiect Staff asa ca trebuie sa dam click dreapta pe pictograma Staff (ceea ce duce la afisarea meniului din figura 2). Meniul indica doi constructori pentru a creea un obiect Staff, unul cu parametrii si altul fara. Mai intai alegeti constructorul fara parametrii. Va aparea fereastra din figura 3.


Fig 3. Crearea obiectelor fara parametrii

Fereastra de dialog va cere un nume pentru obiectul creat. In acelasi timp un nume implicit (staff1) este sugerat. Numele implicit este suficient de bun pentru acum, asa ca apasati Ok. Un obiect Staff va fi creeat.

Imediat ce obiectul este creeat, el va fi plasat in object bench (Fig 4). La asta se rezuma crearea obiectelor: selectati un constructor din meniul clasei, executati-l si va alegeti cu un obiect in object bench.


Fig 4. Un obiect in object bench

 

Probabil ca ati observat ca clasa Person e etichetata <<abstract>> (e o clasa abstracta). Veti observa (daca incercati) ca nu puteti creea obiecte din clase abstracte (specificatia Java interzice acest lucru).

 

3.4. Executia

 

Rezumat: Pentru a executa o metoda, selectati-o din meniul pop-up al obiectului.

 

Acum ca ati creeat un obiect, puteti sa-i executati metodele publice. Dati un click cu butonul drept al mouse-ului pe obiect si un meniu cu metodele obiectului va aparea (Fig 5). Meniul indica metodele disponibile pentru acest obiect si doua operatii speciale specificate de mediu (Inspect si Remove). Acestea vor fi discutate mai tarziu. Mai intai sa ne concentram asupra metodelor.


Fig 5. Meniul obiectului

 

Se vede ca exista metodele setRoom() si getRoom() care seteaza si returneaza numarul camerei pentru acest membru Staff. Incercati sa apelati getRoom(). Selectati-o din meniul obiectului si ea va fi executata. O fereastra de dialog va aparea si va afisa rezultatele apelului (Fig 6). In acest caz este returnat “unknown room” pentru ca nu am specificat o camera pentru aceasta persoana.


Fig 6. Afisarea rezultatului unei metode

 

Metodele mostenite de la o superclasa sunt disponibile printr-un submeniu. Deasupra meniului pop-up pentru obiect sunt doua submeniuri, unul pentru metode mostenite de la Object si altul pentru metode mostenite de la Person (fig 5). Puteti apela metode ale clasei Person (cum ar fi getName()) selectandu-le din submeniu. Incercati asta. Veti observa ca raspunsul este la fel de vag: raspunsul este “unknown name” deoarece nu am dat persoanei noastre un nume.

Acum sa incercam sa specificam un numar al camerei. Acest lucru va indica cum sa apelam o metoda cu parametrii. (Apelurile catre getRoom() si getName() aveau tip de date de intoarcere, dar nu aveau parametrii). Apelati metoda setRoom() selectand-o din meniu. Va aparea o casuta de dialog care va cere un parametru (fig 7).


Fig 7: Fereastra pentru apelul metodei cu parametrii

 

Deasupra, fereastra indica interfata metodei ce va fi chemata (incluzand comentariul si semnatura). Mai jos exista un camp de text in care poate fi introdus parametrul. Semnatura de deasupra ne informeaza ca se asteapta un parametru de tip String. Introduceti valoarea pentru o camera noua inclusiv ghilimelele si apasati Ok.

Gata. Deoarece metoda nu returneaza nimic, nu mai apare fereastra cu rezultatele. Apelati getRoom() din nou pentru a vedea ca s-a facut o schimbare.

Experimentati o vreme cu crearea obiectelor si apelul metodelor. Incercati sa apelati un constructor cu parametrii si apelati mai multe metode pana va familiarizati cu aceste operatii.

 

3.5. Editarea unei clase

 

Rezumat: Pentru a edita sursa unei clase, dati dublu click pe pictograma clasei.

 

Pana acum am lucrat doar cu interfata unui obiect. Acum e momentul sa privim inauntru. Puteti sa aveti acces la codul clasei selectand Open Editor din meniul clasei (dand click dreapta pe pictograma clasei se obtine meniul clasei). Daca dati dublu click pe pictograma clasei veti apela automat Open Editor. Editorul nu este prezentat in mare detaliu in acest tutorial, dar se presupune ca e usor de folosit. Detalii legate de editor vor fi prezentate mai tarziu. Pentru moment deschideti implementarea clasei Staff. Gasiti implementarea metodei getRoom(). Ea returneaza, asa cum sugereaza numele, numarul camerei in care este obiectul. Sa modificam metoda adaugand prefixul “room” rezultatului metodei (pentru ca metoda sa returneze, sa zicem “room M.3.18” in loc de “M.3.18”). Putem face acest lucru modificand linia

return room;

la

return “room “ + room;

BlueJ suporta Java nativ, asa ca nu exista nici o particularitate asupra cum va implementati clasele.

 

3.6. Compilarea

 

Rezumat: Pentru a compila o clasa, apasati butonul Compile din editor. Pentru a compila un proiect, apasati Compile din fereastra proiectului.

 

Dupa ce ati inserat textul, si inainte de a face altceva verificati proiectul principal (fereastra principala). Puteti observa ca pictograma pentru clasa Staff s-a modificat: acum este dungata. Acest mod de reprezentare indica clasele care nu au fost recompilate de la ultima modificare. Intorceti-va la editor.

 

 

NOTA: Probabil ca va intrebati de ce pictogramele claselor nu erau dungate cand ati incarcat proiectul. Acest lucru se datoreaza faptului ca clasele din proiectul people au fost distribuite deja compilate. De obicei proiectele BlueJ sunt distribuite necompilate, asa ca obisnuiti-va sa vedeti pictogramele claselor dungate de acum inainte

 

In bara de butoane a editorului sunt reprezentate functiile cele mai des folosite. Una dintre ele este Compile. Acest buton va permite sa compilati clasa direct din editor. Acum apasati pe Compile. Daca nu ati facut nici o greseala trebuie sa apara un mesaj in zona informationala a editorului, instiintandu-va ca nu este nici o eroare. (In cazul in care compilarea a mers cu succes, introduceti o eroare in codul sursa – cum ar fi un ';' lipsa doar ca sa vedeti cum arata).

Dupa ce ati compilat clasa cu succes, inchideti editorul.

 

NOTA: Nu e nevoie sa salvati explicit sursa java. Sursele sunt salvate automat cand mediul considera ca e necesar (de ex cand se inchide editorul, sau cand e compilata clasa). Puteti salva explicit daca doriti (este o functie in meniul Class al editorului), dar nu este necesar decat daca sistemul dvs este foarte nesigur si se blocheaza frecvent, iar dvs doriti sa nu pierdeti modificarile.

 

Bara de butoane a ferestrei proiectului are un buton Compile. Aceasta operatiune compileaza tot proiectul. (De fapt afla care clase trebuiesc recompilate si le compileaza in ordinea impusa). Incercati acest lucru modificand doua-trei clase (astfel incat sa apara hasurate in diagrama de clase) si apoi apasati butonul Compile. Daca se detecteaza o eroare intr-una din clasele compilate, editorul va fi deschis si se va afisa linia eronata si va fi afisat un mesaj de eroare.

Puteti observa ca zona 'object bench' este goala din nou. Obiectele sunt eliminate de fiecare data cand se schimba implementarea.

 

3.7. Ajutor la erorile de compilare

 

Rezumat: Pentru a obtine ajutor in cazul unei erori de compilare, apasati pe semnul intrebarii de langa mesajul de eroare.

 

Destul de des studentii incepatori au problemele in a intelege mesajele de eroare furnizate de compilator. Noi incercam sa oferim putin ajutor suplimentar.

Deschideti editorul din nou, introduceti o eroare in fisierul sursa si compilati. Un mesaj de eroare va fi afisat in bara de informatii a editorului. In partea dreapta a zonei informationale apare un semn de intrebare ce poate fi apasat pentru a afla mai multe informatii despre eroare (Fig 8).


Fig 8: O eroare de compilare si butonul Help

 

In acest moment nu au fost scrise texte pentru toate mesajele de eroare. Unele texte explicative trebuie sa fie scrise. Dar merita sa incercati – erorile uzuale au texte explicative. Restul textelor vor fi adaugate pe parcurs, in versiunile urmatoare de BlueJ.

 

 

4. Facand mai multe...

 

In aceasta sectiune vom prezenta o serie de lucruri ce pot fi facute in mediul de dezvoltare. Aceste lucruri nu sunt esentiale, dar sunt folosite adesea.

 

4.1. Inspectie

 

Rezumat: Inspectia permite efectuarea unui debugging simplu, afisand starea interna a obiectelor.

 

Cand executati metode ale unui obiect, puteti observa operatiunea Inspect care este disponibila pentru obiecte, in afara metodelor definite de utilizator (Fig 5). Aceasta operatie permite verificarea starii interne a variabilelor de instanta (“campuri”) ale obiectelor. Incercati sa creeati un obiect cu niste valori definite de utilizator (de ex un obiect Staff instantiat cu constructorul care ia parametrii). Apoi alegeti Inspect din meniul obiectului. Apare o casuta de dialog care prezinta campurile obiectului, tipurile lor si valorile lor (Fig 9).

 


Fig 9: Fereastra de dialog Object Inspector

 

Inspectarea e folosita pentru a afla rapid daca o operatie mutator (o operatie care schimba starea interna a obiectului) a fost executata corect. Astfel, inspectia e o unealta simpla pentru debugging.

In exemplul Staff toate campurile sunt tipuri simple (ori nu sunt obiecte, ori sunt string-uri). Valoarea acestora poate fi afisata direct. Se poate observa cu ochiul liber daca constructorul a facut asocierile necesare.

In cazuri mai complexe, valorile campurilor pot fi referinte catre obiecte create de utilizator. Pentru a vedea un asemenea exemplu, vom folosi un alt proiect. Deschideti proiectul people2, care este inclus de asemenea in distributia standard BlueJ. Clasele proiectului people2 sunt prezentate in Fig 10. Cum puteti observa, acest exemplu are in plus o clasa Address pe langa cele prezentate inainte. Unul din campurile din Person e de tipul Address.


Figura 10: Fereastra proiectului people2

 

Urmatorul lucru pe care vrem sa-l incercam – inspectarea obiectelor cu alte obiecte in campuri – necesita crearea unui obiect de tip Staff si apelarea metodei setAddress() a acestui obiect (o veti gasi in submeniul Person). Introduceti o adresa. In interior codul clasei Staff creeaza un obiect de clasa Address si il asociaza variabilei address.

Acum inspectati obiectul Staff. Fereastra de dialog afisata e prezentata in Fig 11. Campurile din obiectul Staff includ acum si campul address. Precum vedeti, valoarea sa e reprezentata de o sageata, ceea ce reprezinta o referinta catre un alt obiect. Deoarece reprezinta un obiect complex, definit de utilizator, valoarea sa nu poate fi prezentata direct in lista. Pentru a examina in continuare adresa, apasati pe campul address si apoi pe butonul Inspect. (De asemenea, puteti da dublu click pe campul address). Va fi deschisa alta fereastra de inspectie, aratand detaliile obiectului Address (Fig 12).


Fig 11: Inspectarea unui obiect cu referinte


Fig 12: Inspectarea unui obiect intern

 

Daca campul selectat este public, in loc de a da click pe Inspect puteti selecta campul de adresa si sa apasati butonul Get. Aceasta operatie aduce obiectul selectat in 'object bench'. De acolo il puteti examina mai in detaliu, apelandu-i metodele.

 

2.      Trimiterea obiectelor ca parametrii

 

Rezumat: Un obiect poate fi trimis ca parametru al unei metode dand click pe pictograma obiectului

 

Obiectele pot fi trimise ca parametrii metodelor altor obiecte. Sa incercam urmatorul lucru. Creati un obiect al clasei Database. (Veti observa ca clasa Database nu are decat un singur constructor fara parametrii, deci crearea obiectului nu ar trebui sa puna probleme). Obiectul Database are abilitatea de a stoca o lista de persoane. Are operatii de adaugare de persoane si de listare a tuturor persoanelor memorate. (Numirea aceste clase Database este totusi o exagerare!).

Daca nu aveti deja un obiect Staff sau Student in object bench, creati unul. In continuare aveti nevoie de un obiect Database si de un obiect Staff sau Student.

Acum apelati metoda addPerson() al obiectului Database. Semnatura va spune ca se asteapta un obiect de tip Person. (Retineti: clasa Person e abstracta, asa nu exista obiecte directe de tip Person. Dar, din cauza mostenirii obiectele Student si Staff pot tine locul unui obiect Person. Asadar este corect sa trimitem ca parametru un obiect Student sau Staff acolo unde se asteapta un obiect Person). Pentru a trimite un obiect deja existent in object bench unei metode, ii puteti tasta numele, sau mai scurt, puteti da click pe obiectul respectiv. Acest lucru ii introduce numele in fereastra de dialog. Apasati Ok si se face apelul metodei. Deoarece aceasta metoda nu are tip de date de intoarcere, nu vedem imediat un rezultat. Puteti apela metoda listAll() a obiectului Database pentru a verifica ca actiunea a fost indeplinita. Metoda listAll() afiseaza continutul la iesirea standard. Veti observa ca un terminal de text se va deschide automat.

Incercati acest lucru din nou cu mai mult de o persoana introdusa in “baza de date”.

 

5. Crearea unui proiect nou

 

Acest capitol va face un tur rapid in crearea proiectelor noi.

 

5.1. Crearea directorului proiectului

 

Rezumat: Pentru a creea un proiect selectati New... din meniul Project.

 

Pentru a creea un proiect nou selectati Project – New... din meniu. O fereastra de dialog se va deschide si va lasa sa specificati numele si locatia unde va fi salvat proiectul. Dupa ce dati Ok, un director va fi creeat cu numele specificat, iar fereastra principala va afisa un proiect nou gol.

 

5.2. Crearea claselor

 

Rezumat: Pentru a creea o clasa, apasati butonul New Class si specificati un nume de clasa.

 

Puteti creea clase noi apasand butonul New Class din bara de butoane a proiectului. Veti fi intrebat care este numele acestei clase – acest nume trebuie sa fie un identificator valid Java.

Puteti de asemenea sa alegeti intre patru tipuri de clase: abstracte, interfete, applet sau “standard”. Acest lucru impune ce cod de baza va fi scris initial in clasa dvs. Puteti modifica tipul clasei mai tarziu editand codul sursa (de exemplu adaugand cuvantul “abstract” in definitia clasei).

Dupa crearea unei clase, ea e reprezentata de o pictograma in proiect. Daca nu e o clasa standard, tipul (abstract, interfata sau applet) e indicat in pictograma. Daca vizualizati codul sursa al unei clase nou create, puteti observa ca contine un cod schelet care va permite sa va apucati rapid de munca. Codul implicit e corect din punct de vedere sintactic (dar nu face mai nimic). Incercati sa faceti mai multe clase si sa le compilati.

 

5.3. Crearea dependentelor

 

Rezumat: Pentru a creea o sageata, apasati simbolul sageata si trasati sageata in diagrama, sau doar scrieti codul sursa in editor.

 

Diagrama de clase arata dependenta intre clase prin sageti. Relatii de tip mostenire (“extends” sau “implements”) sunt indicate ca sageti cu capat gol; relatii de tip “foloseste” sunt indicate de sageti punctate cu capat gol.

Puteti adauga dependente noi in mod grafic (direct in diagrama) sau textual in codul sursa. Daca adaugati o sageata in mod grafic, codul este actualizat; daca modificati codul, diagrama este actualizata.

Pentru a adauga grafic o sageata, apasati butonul cu sageata (sageata goala pentru “extends” sau “implements” si sageata punctata pentru “foloseste”) si trageti sageata de la o clasa la cealalta.

Adaugarea unei sageti de mostenire adauga codul “extends” sau “implements” in codul sursa al clasei (in functie de tipul tintei: clasa sau interfata).

Adaugarea unei sageti de folosire nu modifica imediat codul sursa (decat daca tinta e o clasa din alt pachet. In acest caz se genereaza o comanda import dar nu am intalnit inca acest lucru in exemplele noastre). Existenta unei sageti de folosire in diagrama indicand o clasa care nu e folosita, va genera un avertisment mai tarziu spunand ca o relatie de tip “foloseste” a fost definita catre o clasa, dar acea clasa nu a fost folosita.

Adaugarea sagetilor textual e usor: tastati codul in mod normal. Imediat ce clasa e salvata, diagrama este actualizata. (Retineti ca inchiderea editorului duce la salvarea automata).

 

5.4. Eliminarea elementelor

 

Rezumat: Pentru a elimina o clasa sau o sageata, alegeti optiunea Remove din meniul ei popup.

 

Pentru a elimina o clasa din diagrama, selectati clasa si alegeti Remove din meniul Edit. Puteti selecta Remove si din meniul popup al clasei. Ambele optiuni functioneaza si pentru sageti: Puteti inlatura o sageata selectand-o iar apoi apeland Remove din meniul Edit, sau apeland Remove din meniul popup.

 

 

6. Utilizarea 'code pad'

 

Unealta 'code pad' din BlueJ permite analizarea rapida si usoara a unor diferite bucatele de cod. Astfel code pad poate fi folosit pentru a investiga detaliile semanticii Java si pentru a ilustra si experimenta sintaxa Java.

 

6.1. Afisarea 'code pad'

 

Rezumat: Pentru a incepe sa folositi code pad, selectati Show code pad din meniul View.

 

Code pad nu e afisat implicit. Pentru a-l afisa folositi Show code pad din meniul View. Fereastra principala va include interfata code pad in coltul din dreapta jos, langa object bench (Fig 13). Limitele orizontale si verticale pot fi modificate pentru a schimba dimensiunea code pad sau a object bench.

Zona code pad poate fi folosita acum pentru a insera expresii sau blocuri de prelucrare. Cand se apasa Enter fiecare linie e evaluata si e posibil sa apara un rezultat.


Fig 13: Fereastra principala impreuna cu zona code pad

 

6.2. Evaluarea expresiilor simple

 

Rezumat: Pentru a evalua expresii Java, introduceti-le in code pad.

 

Zona code pad poate fi folosita pentru a evalua expresii simple. Incercati sa introduceti de exemplu:

4 + 45

hello”.length()

Math.max(33,4)

(int) 33.7

javax.swing.JOptionPane.showInputDialog(null, “Name:”)

Expresiile se pot referi la valori Java standard si obiecte, dar si la clase din proiectul curent. Zona code pad va afisa valoarea de intoarcere, dar si tipu acesteia (in paranteza), sau un mesaj de eroare daca expresia e incorecta.

Puteti folosi si obiectele pe care le aveti in object bench. Incercati urmatoarele: pozitionati un obiect de tip Student in object bench (folosind meniul popup al clasei, asa cum am descris anterior). Numiti-l student1.

In code pad puteti tasta:

student1.getName()

In mod similar puteti apela toate metodele disponibile din clasele proiectului dvs.

 

6.3. Primirea obiectelor

 

Rezumat: Pentru a transfera obiecte din code pad in object bench, trageti de pictograma obiectului.

 

Unele rezultate ale expresiilor sunt obiecte, si nu simple primitive. In acest caz, rezultatul e afisat ca <object reference>, urmat de tipul obiectului si de o mica pictograma desenata langa linia cu rezultat (Fig 14).


Fig 14: Un obiect rezultat in urma unei operatii in code pad

 

Daca valoarea returnata e un string, atunci valoarea ei va fi afisata ca rezultat, dar veti vedea si o pictograma mica, deoarece string-urile sunt obiecte.

Puteti incerca urmatoarele expresii pentru a creea obiecte:

new Student()

marmelade”.substring(3,8)

new java.util.Random()

hello” + “world”

Mica pictograma rezultata poate fi folosita pentru a lucra in continuare cu obiectul. Puteti trage pictograma peste object bench (Fig 15). Aceasta actiune va pozitiona obiectul in object bench, de unde i se vor putea apela metodele prin meniul popup sau din code pad.


Fig 15: Pozitionarea obiectului peste object bench

 

6.4. Inspectarea obiectelor

 

Rezumat: Pentru a inspecta obiecte in code pad, dati dublu click pe mica pictograma

 

Daca doriti sa inspectati un obiect care a fost returnat in urma unei expresii din code pad, puteti face asta fara sa-l plasati in object bench: puteti da dublu click pe pictograma obiectului pentru a deschide fereastra de inspectie.

 

6.5. Executia comenzilor

 

Rezumat: Comenzile tastate in code pad sunt executate.

 

Puteti folosi code pad pentru a executa comenzi (adica instructiuni Java care nu returneaza o valoare). Incercati aceste comenzi:

System.out.println("Gurkensalat");

System.out.println(new java.util.Random().nextInt(10));

Comenzile sunt evaluate corect fie ca au sau nu punct si virgula la sfarsit.

 

6.6. Comenzi multilinie si secvente de comenzi

 

Rezumat: Folositi Shift + Enter la sfarsitul unei linii pentru a introduce comenzi pe mai multe linii.

 

Puteti introduce secvente de comenzi, sau comenzi scrise pe mai multe linii folosind Shift + Enter la sfarsitul unei linii. Folosind Shift + Enter veti pozitiona cursorul la inceputul unei linii, dar nu va executa (inca) comanda. La sfarsitul ultimei linii, apasati Enter pentru a evalua toate liniile impreuna. Incercati, de exemplu, o bucla for:

for (int i=0; i<5; i++) {

System.out.println("number: " + i);

}

 

7.      Lucrul cu variabilele

 

Rezumat: Variabilele locale pot fi folosite intr-o singura comanda multilinie. Numele obiectelor din object bench e folosit drept campuri de instanta.

 

Variabilele – campuri de instanta sau variabile locale – pot fi folosite in code pad intr-o maniera restransa.

Puteti declara variabile locale in code pad, dar nu sunt utile decat in comenzi multilinie, deoarece variabilele se pierd intre linii succesive. De exemplu, puteti introduce acest bloc ca o comanda multilinie si el va functiona asa cum va asteptati:

int sum;

sum = 0;

for (int i=0; i<100; i++) {

sum += i;

}

System.out.println("The sum is: " + sum);

Daca introduceti acelasi cod ca si linii individuale, nu va produce un rezultat, deoarece variabila sum nu este retinuta dupa ce ati introdus prima linie.

Puteti considera ce tastati pe o linie ca fiind corpul unei metode. Tot codul ce poate fi scris in corpul unei metode, poate fi scris si in code pad. Totusi, fiecare linie noua (separata de Enter) formeaza o metoda noua, asa ca nu puteti face referiri la o variabila declarata intr-o linie anterioara.

Puteti considera obiectele din object bench ca si campuri de instanta. Nu puteti defini noi campuri de instanta din interiorul corpului unei metode (sau din code pad), dar puteti apela obiectele si campurile acestora.

Puteti creea o instanta noua creeand un obiect in code pad si tragandu-l in object bench.

6.8 Istoricul liniei de comanda

 

Rezumat: Folositi sageata-sus si sageata-jos pentru a cicla prin instoricul liniei de comanda.

 

Code pad retine comenzile introduse. Folositi sageata sus si jos pentru a rescrie rapid o linie anterioara, ce poate fi modificata inainte de a fi relansata in executie.

 

 

7. Depanare (debugging)

 

Aceasta sectiune introduce cele mai importante aspecte ale debugging-ului in BlueJ. In discutiile noastre cu profesorii care predau programarea am constatat ca este de dorit sa se predea un instrument de debugging in primul an, dar de multe ori nu mai este timp pentru asta. Studentii se chinuie cu editorul, compilatorul si cu executia – nu mai au timp si pentru un instrument complicat.

De aceea am hotarat sa facem debuger-ul cat mai simplu cu putinta. Telul e sa ai un debugger pe care il poti explica in 15 min, si care sa poata fi folosit de studenti de acum inainte fara ajutor suplimentar. Sa vedem daca am reusit.

In primul rand, am redus functionalitatea debuger-ilor traditionali la trei elemente:

·         setarea de breakpoint-uri

·         executia pas cu pas

·         inspectarea variabilelor

In schimb, fiecare din acest element este foarte simplu. Acum vom verifica fiecare element.

Pentru a incepe, deschideti proiectul debugdemo, care este inclus in directorul examples din distributie. Acest proiect include cateva clase menite sa demonstreze functionalitatea debuger-ului – altfel nu fac nimic util.

 

7.1. Setarea de breakpoint-uri

 

Rezumat: Pentru a seta un breakpoint, dati click in zona de breakpoint din stanga textului, din editor.

 

Setarea unui breakpoint va permite sa opriti executia intr-un anumit punct din cod. Cand se intrerupe executia, puteti investiga starea obiectelor dvs. De regula va ajuta sa intelegeti ce se intampla in codul dvs.

In editor, in stanga textului este zona pentru breakpoint-uri (Fig 16). Puteti stabili un breakpoint dand un click acolo. Un simbol mic de stop va aparea sa marcheze acest lucru. Acum deschideti clasa Demo, gasiti metoda loop si puneti un breakpoint undeva in bucla for. Simbolul de stop ar trebui sa apara in editorul dvs.

 


Fig 16: Un breakpoint

Cand se atinge linia care are breakpoint-ul atasat, exeutia va fi intrerupta. Sa incercam acest lucru.

Creati un obiect din clasa Demo si apelati-i metoda loop() cu un parametru de, sa zicem 10. Imediat ce se atinge breakpoint-ul, se va deschide editorul indicand linia curenta de cod si se va deschide si fereastra debugger-ului. Veti vedea ceva ca in fig 17.


Fig 17: Fereastra debugger-ului

 

Linia subliniata din editor indica linia ce se va executa in continuare. (Executia s-a oprit inainte ca aceasta linie sa fie executata).

 

7.2. Parcurgerea codului pas cu pas

 

Rezumat: Pentru a parcurge codul pas cu pas, folositi butoanele Step sau Step Into din debugger.

 

Acum ca s-a oprit executia (ceea ce ne convinge ca metoda se executa si se poate ajunge la acest punct din cod), putem executa pas cu pas sa vedem ce se intampla. Pentru a face asta apasati in mod repetat pe butonul Step din fereastra debugger-ului. Ar trebui sa vedeti ca se modifica linia sursa din editor (linia subliniata se modifica in functie de linia ce se va executa). De fiecare data cand apasati Step, o singura linie de cod se va executa si executia se va opri. Observati si ca variabilele din debugger se modifica (de exemplu valoarea pentru sum). Asa ca puteti executa pas cu pas si veti observa ce se intampla. Dupa ce va plictisiti de asta, puteti apasa pe breakpoint din nou pentru a-l sterge, si apoi apasati butonul Continue din debugger pentru a continua executia normal.

Sa incercam acelasi lucru cu alta metoda. Stabiliti un breakpoint in clasa Demo, in metoda carTest(), la linia:

places = myCar.seats();

Apelati metoda. Cand se atinge breakpoint-ul, sunteti pe cale sa apelati o linie ce contine apleul catre metoda seats() din clasa Car. Daca apasati Step va trece peste toata linia. Sa incercam sa apasam Step Into de data asta. Daca apasati acest buton pentru o metoda, veti intra in metoda si veti executa linie cu linie metoda respectiva (nu intr-un singur pas). In acest caz sunteti dus in metoda seats() din clasa Car. Puteti parcurge intreaga metoda pana cand ajungeti la sfarsitu ei si va intoarceti la metoda apelanta. Observati ca debugger-ul afiseaza lucruri modificate.

Step si Step Into se comporta identic daca linia curenta nu contine un apel de metoda.

 

7.3. Inspectarea variabilelor

 

Rezumat: Inspectarea variabilelor e usoara: ele sunt afisata automat in debugger.

 

Cand faceti debugging, este important sa puteti inspecta starea obiectelor (variabile locale sau de instanta).

Sa faceti acest lucru e trivial – deja ati vazut mare parte. Nu aveti nevoie de comenzi speciale pentru a inspecta variabilele; variabilele statice, de instanta ale obiectului curent si cele locale ale metodei curente sunt afisate automatic.

Puteti selecta metode din secventa de apeluri pentru a vedea variabilele altor obiecte si metode active in mod curent. Stabiliti de exemplu un breakpoint in metoda carTest() din nou. In partea stanga a debugger-ului puteti vedea secventa de metode. Momentan arata:

Car.seats

Demo.carTest

Acest lucru indica faptul ca Car.seats a fost apelat de Demo.carTest. Puteti selecta Demo.carTest din aceasta lista pentru a inspecta sursa si variabilele curente ale acestei metode.

Daca treceti de linia cu new Car(...), puteti observa ca valoarea variabilei myCar e indicata ca <object reference>. Toate variabilele de tip obiect (cu exceptia string-urilor) sunt afisate in acest mod. Puteti inspecta aceasta variabila, dand dublu click pe ea. Acest lucru va deschide o fereastra de inspectare a obiectelor identica cu cele descrise anterior (sectiunea 4.1). Nu e nici o diferenta in a inspecta obiecte aici sau a le inspecta in object bench.

 

7.4. Oprirea programului

 

Rezumat: Comenzile Halt si Terminate pot fi folosite pentru a opri executia programului temporar sau permanent.

 

Cateodata un program ruleaza de mult timp si va intrebati daca este ok. Poate ca a intrat intr-o bucla infinita sau poate ca e normal sa dureze atat. Pai putem verifica. Apelati metoda longloop() din clasa Demo. Executia codului va dura ceva vreme.

Acum vrem sa aflam ce se intampla. Afisati debugger-ul daca cumva nu e afisat. Acum apasati butonul Halt. Executia se opreste ca si cum ar fi ajuns la un breakpoint. Puteti parcurge cativa pasi, sa observati variabilele si sa va convingeti ca totul e in ordine si metoda are nevoie de ceva timp sa termine. Puteti apasa Continue si Halt de cateva ori pentru a vedea cat de repede numara. Daca nu vreti sa continuati (de exemplu, ati descoperit ca sunteti intr-o bucla infinita) puteti apasa Terminate pentru a opri intreaga executie. Terminate nu trebuie folosit prea des – pot ramane obiecte care au fost bine gandite intr-o stare inconsistenta, asa ca e recomandabil sa nu folositi aceasta optiune decat ca un mecanism de urgenta.

 

 

8. Crearea de aplicatii de sine statatoare

 

Rezumat: Pentru a creea aplicatii de sine statatoare folositi Project – Create Jar File...

 

BlueJ poate creea fisiere executabile jar. Aceste fisiere pot fi executate pe unele sisteme doar prin dublu click (de exemplu pe Windows si MacOS), sau prin apelarea comenzii java -jar <numefisier.jar> (in UNIX sau in DOS).

Vom incerca acest lucru cu proiectul hello. Deschideti-l (e in directorul examples). Asigurati-va ca ati compilat proiectul. Selectati Create Jar File... din meniul Project.

Va aparea o fereastra de dialog care va cere sa specificati clasa principala (Fig 18). Aceasta clasa trebuie sa aiba o metoda main valida (cu semnatura public static void main(String[] args)).


Fig 18: Fereastra “Create Jar File”

 

In exemplul nostru, alegerea unei clase principale e usor – avem o singura clasa. Alegeti Hello din meniul pop-up. Daca aveti alte proiecte, alegeti metoda main pe care doriti sa o executati.

In mod normal nu veti include sursele in proiectele executabile. Dar puteti, daca vreti, sa va distribuiti si sursele. (Puteti folosi proiectul jar pentru a trimite tot proiectul altcuiva prin e-mail, intr-un singur fisier).

Daca ati configurat BlueJ sa foloseasca biblioteciile user-ului (ori prin setarea Preferences/Libraries sau folosind directorul lib/userlib) veti vedea o zona numita Include user libraries in mijlocul ferestrei. (Daca nu folositi alte biblioteci, aceasta zona va lipsi). Trebuie sa bifati toate biblioteciile pe care le foloseste proiectul dvs.

Apasati Continue. In continuare veti vedea o fereastra de dialog in care puteti stabili numele fisierului jar pe care doriti sa-l creeati. Tastati hello si apoi Create.

Daca nu aveti alte biblioteci ce trebuiesc incluse, va fi creeat un fisier numit hello.jar. Daca aveti biblioteci de inclus, va fi creeat un director hello si in interiorul lui un fisier hello.jar. Directorul va contine si biblioteciile necesare. Fisierul jar se asteapta sa gaseasca biblioteciile in aceeasi structura, asa ca aveti grija sa le distribuiti impreuna.

Puteti lansa in executie fisierul jar doar daca aplicatia foloseste o interfata GUI. Exemplul nostru foloseste o interfata text asa ca va trebui pornit din linia de comanda. Sa incercam sa rulam fisierul jar acum.

Deschideti un terminal si navigati pana in directorul unde e salvat fisierul jar (ar trebui sa vedeti un fisier hello.jar). Presupunand ca Java e instalat corect in sistemul dvs, ar trebui sa puteti tasta

java -jar hello.jar

pentru a executa fisierul.

 

9. Crearea applet-urilor

 

9.1. Rularea unui applet

 

Rezumat: Pentru a rula un applet, selectati Run applet din meniul context al applet-ului.

 

BlueJ permite crearea si rularea appleturilor si a aplicatiilor. Am inclus un applet in directorul examples al distributiei. Mai intai dorim sa incercam sa executam un applet. Deschideti proiectul appletdemo din exemple.

Veti observa ca acest proiect are o singura clasa numita CaseConverter. Puteti observa ca pictograma clasei e marcata cu <<applet>>. Dupa compilare selectati Run applet din meniul context al clasei.

Va aparea o fereastra de dialog ce va permite sa faceti niste selectii (Fig 19).


Fig 19: Fereastra de dialog “Run Applet”

 

Aici vedeti ca aveti de ales intre rularea applet-ului intr-un browser sau intr-un appletviewer (sau doar sa generati codul html fara sa rulati applet-ul). Lasati setarile implicite si apasati Ok. In cateva secunde trebuie sa porneasca un applet viewer cu applet-ul incarcat.

Appletviewer-ul e instalat odata cu J2SE SDK, asa ca e garantat sa aiba aceeasi versiune cu compilatorul dvs Java. Acest lucru genereaza de obiecei mai putine probleme decat browserele. Browser-ul dvs web poate rula o versiune diferita de java, si acest lucru poate duce la probleme. Totusi, ar trebui sa mearga bine cu browserele curente.

Pe Microsoft Windows si in MacOs, BlueJ foloseste browser-ul implicit. Pe sistemele UNIX browser-ul e definit in setari.

 

9.2. Crearea unui applet

 

Rezumat: Pentru a creea un applet, selectati butonul New Class si apoi selectati Applet ca tip de clasa

 

Dupa ce am vazut cum ruleaza un applet, vrem sa creeam unul.

Creati o clasa noua de tipul Applet (puteti stabili tipul in dialogul New Class). Compilati si rulati applet-ul. Nu a fost asa de greu, nu-i asa?

Applet-urile (ca si alte clase) sunt generate cu un cod schelet valid. Pentru applet-uri, acest cod va afisa un applet simplu cu doua linii de text. Puteti deschide editorul si puteti insera propriul cod.

Veti vedea ca toate apelurile uzuale pentru applet-uri sunt aici, fiecare cu cate un comentariu care ii explica scopul. Codul care se executa e in metoda paint().

 

9.3. Testarea applet-ului

 

In anumite situatii e util sa se creeze un obiect Applet in object bench (ca si obiectele normale). Puteti face acest lucru – constructorul e afisat in meniul context al clasei respective. Din object bench nu puteti rula intreg appletul, dar puteti rula unele metode. Acest lucru e util daca vreti sa testati metode scrise in implementarea applet-ului dvs.

Daca stabiliti breakpoint-uri in applet-ul dvs, ele nu vor avea efect cand rulati applet-ul intr-un browser sau appletviewer. Acest lucru se intampla deoarece si web browser-ul si appletviewer-ul folosesc masini java diferite pentru a rula applet-ul si acestea nu inteleg breakpoint-urile stabilite de BlueJ.

Daca doriti sa folositi breakpoint-uri si executie pas cu pas intr-un applet, puteti folosi clasa AppletWindow, scrisa de Michael Trigoboff. Clasa va pune la dispozitie un cadru in care sa rulati applet-ul direct din BlueJ, astfel incat sa poata fi aplicate metodele clasice de debugging. Puteti gasi aceasta clasa si un demo in sectiunea Resurse de pe site-ul BlueJ.

10. Alte operatii

 

10.1. Deschiderea pachetelor non-BlueJ in BlueJ

 

Rezumat: Pachetele non-BlueJ pot fi deschise cu comanda Project – Open non BlueJ...

 

BlueJ va permite sa deschideti pachete existente creeate in afara mediului BlueJ. Pentru a face asta, selectati Project – Open non BlueJ... din meniu. Selectati directorul care contine fisierele sursa Java si apoi apasati butonul Open in BlueJ. Sistemul va cere confirmarea ca doriti sa deschida acel director.

 

10.2. Adaugarea claselor existente in proiect

 

Rezumat: Clase pot fi incarcate din exteriorul unui proiect folosind comanda Add Class from File...

 

Adeseori doriti sa folositi o clasa intr-un proiect BlueJ pe care ati obtinut-o din alta sursa. De exemplu, un profesor da o clasa Java studentilor sa o foloseasca intr-un proiect. Puteti introduce usor o clasa existenta intr-un proiect selectand Edit – Add Class from File... Astfel puteti selecta si importa o sursa java (cu extensia .java).

Cand se importa o clasa externa, i se face o copie si se pastreaza in directorul curent. Are acelasi efect ca si cand ati fi creat clasa si ati fi scris tot codul ei sursa.

Alternativa e sa adaugati codul sursa al clasei din afara BlueJ. Data viitoare cand deschideti proiectul, noua clasa va aparea in diagrama.

 

10.3. Apelul main() si a altor metode statice

 

Rezumat: Metodele statice pot fi apelate din meniul context al clasei.

 

Deschideti proiectul hello din directorul examples. Singura clasa din proiect (clasa Hello) are o metoda statica main.

Daca dati click dreapta pe clasa veti observa ca meniul nu contine doar constructorul dar si metoda statica main(). Puteti apela acum metoda main din acest meniu (fara sa creeati mai intai un obiect).

Toate metodele statice pot fi apelate astfel. Metoda main standard asteapta un vector de elemente String ca argument. Puteti trimite ca parametru un vector de elemente String folosind sintaxa Java:

{“one”, “two”, “three”}

Incercati acest lucru!

 

NOTA: In Java nu e permisa trimiterea ca parametru a unui vector pentru metode. Nu pot fi folositi decat ca initializatori. In BlueJ, pentru a putea apela metodele statice in mod interactiv, permitem pasarea ca argumente a vectorilor constanti.

 

10.4. Generarea documentatiei

 

Rezumat: Pentru a genera documentatie pentru un proiect, selectati Project Documentation din meniul Tools.

 

Puteti genera documentatie in formatul standard javadoc din interiorul BlueJ. Pentru a face asta selectati Tools – Project Documentation din meniu. Aceasta functie va genera documentatia pentru toate clasele dintr-un proiect, bazandu-se pe codul lor sursa si va deschide un browser cu rezultatul final.

Puteti genera si vizualiza documentatia pentru o singura clasa direct in editorul BlueJ. Pentru a face acest lucru, deschideti editorul si folositi meniul lui. Schimbati selectia din Implementation in Interface. Acest lucru va arata documentatia in format javadoc (interfata clasei) in editor.

 

10.5. Lucrul cu biblioteci

 

Rezumat: Biblioteciile standard Java (Java API) pot fi vizualizate selectand Help – Java Class Libraries

 

In mod uzual, cand scrieti aplicatii Java, aveti nevoie de informatii din biblioteca standard. Puteti deschide un browser web cu API-ul Java selectand Help – Java Class Libraries din meniu (daca sunteti online).

Documentatia JDK poate fi instalata si folosita si offline. Detaliile sunt explicate in sectiunea Help de pe site-ul BlueJ.

 

10.6. Crearea obiectelor din clasele de biblioteca

 

Rezumat: Pentru a creea obiecte din clasele de biblioteca folositi Tools – Use Library Class

 

BlueJ ofera de asemenea facilitatea de a creea obiecte din clase care nu fac parte din proiect, dar tin de o biblioteca. De exemplu, puteti creea obiecte de tip String sau ArrayList. Acest lucru e util pentru o experimentare rapida cu aceste obiecte de biblioteca.

Puteti creea un obiect din clasele de biblioteca selectand Tools – Use Library Class. Va aparea o fereastra de dialog care va va cere numele complet al clasei, de exemplu java.lang.String. (Aveti grija pentru ca trebuie sa tastati numele complet al clasei, adica numele clasei plus al pachetelor)

Casuta de text are un meniu asociat al claselor folosite anterior. Dupa ce ati tastat numele clasei si ati dat Enter, va fi afisata lista constructorilor disponibili si a metodelor statice ale clasei. Orice constructor sau metoda statica a clasei poate fi apelata selectand-o din lista.

Invocarea se petrece la fel cu orice apel de constructor.

 

 

11. Rezumat

Inceputul

1.      Pentru a deschide un proiect, selectati Open din meniul Project.

2.      Pentru a creea un obiect, selectati un constructor din meniul pop-up al clasei.

3.      Pentru a executa o metoda, selectati-o din meniul pop-up al obiectului.

4.      Pentru a edita sursa unei clase, dati dublu click pe pictograma clasei.

5.      Pentru a compila o clasa, apasati butonul Compile din editor. Pentru a compila un proiect, apasati Compile din fereastra proiectului.

6.      Pentru a obtine ajutor in cazul unei erori de compilare, apasati pe semnul intrebarii de langa mesajul de eroare.

Facand mai multe...

7.      Inspectia permite efectuarea unui debugging simplu, afisand starea interna a obiectelor.

8.      Un obiect poate fi trimis ca parametru al unei metode dand click pe pictograma obiectului

Crearea unui proiect nou

9.      Pentru a creea un proiect selectati New... din meniul Project.

10.  Pentru a creea o clasa, apasati butonul New Class si specificati un nume de clasa.

11.  Pentru a creea o sageata, apasati simbolul sageata si trasati sageata in diagrama, sau doar scrieti codul sursa in editor.

12.  Pentru a elimina o clasa sau o sageata, alegeti optiunea Remove din meniul ei popup.

Utilizarea 'code pad'

13.  Pentru a incepe sa folositi code pad, selectati Show code pad din meniul View.

14.  Pentru a evalua expresii Java, introduceti-le in code pad.

15.  Pentru a transfera obiecte din code pad in object bench, trageti de pictograma obiectului.

16.  Pentru a inspecta obiecte in code pad, dati dublu click pe mica pictograma

17.  Comenzile tastate in code pad sunt executate.

18.  Folositi Shift + Enter la sfarsitul unei linii pentru a introduce comenzi pe mai multe linii.

19.  Variabilele locale pot fi folosite intr-o singura comanda multilinie. Numele obiectelor din object bench e folosit drept campuri de instanta.

20.  Folositi sageata-sus si sageata-jos pentru a cicla prin instoricul liniei de comanda.

Depanare (debugging)

21.  Pentru a seta un breakpoint, dati click in zona de breakpoint din stanga textului, din editor.

22.  Pentru a parcurge codul pas cu pas, folositi butoanele Step sau Step Into din debugger.

23.  Inspectarea variabilelor e usoara: ele sunt afisata automat in debugger.

24.  Comenzile Halt si Terminate pot fi folosite pentru a opri executia programului temporar sau permanent.

Crearea de aplicatii de sine statatoare

25.  Pentru a creea aplicatii de sine statatoare folositi Project – Create Jar File...

Crearea applet-urilor

26.  Pentru a rula un applet, selectati Run applet din meniul context al applet-ului.

27.  Pentru a creea un applet, selectati butonul New Class si apoi selectati Applet ca tip de clasa

Alte operatii

28.  Pachetele non-BlueJ pot fi deschise cu comanda Project – Open non BlueJ...

29.  Clase pot fi incarcate din exteriorul unui proiect folosind comanda Add Class from File...

30.  Metodele statice pot fi apelate din meniul context al clasei.

31.  Pentru a genera documentatie pentru un proiect, selectati Project Documentation din meniul Tools.

32.  Biblioteciile standard Java (Java API) pot fi vizualizate selectand Help – Java Class Libraries

33.  Pentru a creea obiecte din clasele de biblioteca folositi Tools – Use Library Class

 

 

 

Tutorial BlueJ – Tradus de Dumitrascu Irina si Popa Adrian