Informatica
Programare concurenta si paralelaProgramare concurenta si paralela
Laborator 1 I. Creati un director pcp in contul personal. Acest director va fi stabilit ca spatiu de lucru (workspace) la punctul II. II. Deschideti mediul de dezvoltare Eclipse, observati perspectivele si view-urile existente. Observatii : Vom utiliza IDE-ul (Integrated Development Environment) Eclipse. Asigurati-va ca in fisierul eclipse.ini se afla urmatoarele valori ale argumentelor, inlocuind corespunzator sirurile de caractere Your_Path si Your_Name: -vm C:ProgramFilesj2sdk1.5.0_01binjavaw -clean -data Your_Pathpcp -vmargs -Duser.name=Your_Name -Declipse.cvs.anon=true -Dide.gc=true -Xms40m -Xmx256m Compilatorul Java va fi cel aferent versiunii 1.5. Compilatoarele necesare dezvoltarii proiectelor se precizeaza fie in argumentul -vm, fie se indica in configuratiile Run stabilite pentru executie. Pentru modificarea spatiului de lucru dupa deschiderea lui Eclipse, se utilizeaza optiunea Switch Workspace a meniului File. III. Recapitulare Java 1. Ce este masina virtuala Java ? Java Virtual Machine (JVM) este un calculator abstract care executa programe Java compilate. JVM este "virtuala" pentru ca, de obicei, este implementata (in software) peste o platforma hardware "reala" si un sistem de operare. Toate programele Java sunt compilate pentru JVM. Prin urmare, pe o platforma particulara trebuie implementata mai intai JVM pentru ca programele Java sa poata rula pe acea platforma. JVM asigura portabilitatea programelor Java. Programele Java sunt compilate intr-o forma denumita Java bytecodes. JVM executa Java bytecodes, asadar putem considera Java bytecodes ca pe limbajul masina al JVM. Compilatorul Java citeste fisiere sursa scrise in limbajul Java (.java), traduce aceste surse in Java bytecodes si plaseaza aceasta forma in fisiere clasa (.class). Compilatorul genereaza cate un fisier clasa pentru fiecare clasa specificata in fisierele sursa.
2. Ce este o clasa ? Dar un obiect ?
Clasa - o colectie de invarianti, comuni unei multimi de obiecte. Obiectul - instanta a unei clase. Care sunt elementele componente ale unei clase ? 3. Tipuri de date primitive in Java. Limbajul Java ofera 8 tipuri de date primitive : - byte (pe 8 biti) - short (pe 16 biti) - int (pe 32 biti) - long (pe 64 biti) - float (virgula mobila, 32 biti) - double (virgula mobila, dubla precizie, 64 biti) - boolean (true si false) - char ( 16-bit Unicode character) Pe langa aceste 8 tipuri primitive, limbajul Java ofera support pentru sirurile de caractere prin intermediul clasei java.lang.String. Obs: Pentru mai multe informatii, consultati http://java.sun.com/docs/books/tutorial/java/nutsandbolts/datatypes.html 4. Clase infasuratoare pentru tipurile de date primitive. In pachetul java.lang exista clase care "infasoara" (wrap) tipurile de date primitive expuse anterior. Aceste clase sunt Character, Integer, Byte, Short, Long, Boolean, Float, Double. 5. Instructiuni. if - then -else if (isAllowed) elseswitch switch (month)while-do si do-while
for for(int i=1; i<11; i++)Instructiunea are o forma particulara pentru iterarea asupra colectiilor si a vectorilor: int[] numbers = ;for (int item : numbers) break Aceasta instructiune poate fi etichetata sau
neetichetata. In cazul in care este neetichetata, ea determina
iesirea din cea mai interna instructiune for (i = 0; i < arrayOfInts.length; i++) } } 6. Pachete. Un pachet este o grupare de tipuri (clase si interfete). Pachetul permite protectia accesului si faciliteaza gestionarea spatiului de nume (name space). Tipurile care fac parte din platforma Java sunt membre ale diferitelor pachete care impart clasele dupa functionalitati : clasele fundamentale se afla in pachetul java.lang, clasele pentru citire si scriere se afla in pachetul java.io s.a.m.d. 7. Modificatori de acces. Care este intelesul cuvintelor cheie public, protected, private ?
8. Ce este o variabila statica ? Ce este o metoda statica ? In anumite situatii sunt necesare variabile care sa fie comune tuturor obiectelor unei clase. Astfel de campuri se obtin cu ajutorul modificatorului static in declaratia campului si se numesc campuri statice sau variabile clasa. Aceste campuri sunt asociate cu clasa si nu cu vreun obiect particular. Fiecare instanta a clasei partajeaza variabila clasa, care se afla intr-o locatie de memorie fixata. Fiecare obiect poate schimba valoarea variabilei clasa, iar aceste variabile pot fi accesate fara a creea o instanta a clasei. Referirea se face prin : NumeClasa.numeVariabila Analog, metodele statice nu depind de starea vreunei instante a clasei si pot fi accesate fara a fi necesara instantierea clasei: NumeClasa.numeMetoda(lista_argumente); Puteti da un exemplu de metoda statica? 9. Intrari / iesiri Pentru citirea unui text de la intrarea standard, se poate utiliza urmatorul fragment de cod : try} catch (IOException e) Pentru citirea unui text dintr-un fisier, se poate utiliza urmatorul fragment de cod: tryin.close(); } catch (IOException e) IV. Exercitii 1. Creati un program Java care citeste de la tastatura un sir de valori numerice. Citirea se opreste la introducerea unei valori care nu reprezinta un numar. Afisati suma valorilor introduse. Observatii Scrieti clasa corespunzatoare (SumaNumere) intr-un pachet numit executabile, creat in cadrul unui proiect nou, denumit pcp1. Testati daca o valoare nu este numerica utilizand metoda Double.isNaN(), dupa ce s-a utilizat in prealabil constructia try - catch pentru tratarea exceptiilor care pot aparea la parsarea unui sir de caractere (atunci cand se incearca obtinerea valorii reale reprezentate de acesta). Importarea claselor necesare se face automat prin Ctrl + Shift + O. 2. Sa se citeasca o matrice dintr-un fisier (pentru simplificarea problemei, considerati doar matrici de dimensiune cel mult 3). Inversati matricea sau afisati un mesaj de eroare, daca matricea nu este inversabila. 3. Se considera fisierul XML cu un continut de forma : <students> <student> <name>Anton</name> <marks>10, 6</marks> </student> <student> <name>Balan </name> <marks>5, 7, 9</marks> </student> <student> <name>Ion </name> <marks>9, 4</marks> </student> </students> Parcurgandu-se fisierul, sa se determine studentii care nu au situatia scolara incheiata, stiind ca numarul de note necesare este egal cu numarul maxim de note corespunzatoare tuturor studentilor. De asemenea, sa se afiseze studentii care au sustinut examene, dar nu le-au promovat. Pentru rezolvare, se va creea o clasa separata, denumita StudentListDescriptor, care va contine : - campul _studentMap - constructorii StudentListDescriptor(File pFile), StudentListDescriptor(String pFilePath), StudentListDescriptor(InputStream pInputStream), StudentListDescriptor(URL pUrl) - metodele publice getMarks(String pStudentName), getAverage(String pStudentName) - metodele protected getStudents(Document pDocument, Map pMap), load(InputStream pInputStream), load(File pFile), load(String pFilePath), load(URL pUrl). Obs - In principiu, un fisier XML contine elemente si atribute. - Incepand cu versiunea 1.5, in Java sunt permise tipurile generice. Astfel, in loc de declaratia Map pMap, vom scrie: Map<String, List<String>> pMap - Pentru lucrul cu fisiere XML se poate utiliza modelul DOM (Document Object Model). Acesta defineste o modalitate standard pentru accesarea si manipularea documentelor XML. DOM prezinta documentul ca o structura arborecenta cu elemente, atribute si text in nodurile frunza. - Pentru utilizarea acestui model, este necesara integrarea in proiect a unei librarii suplimentare (jdom-1.0.jar). De obicei, aceste librarii se introduc intr-un director lib in cadrul proiectului si se adauga corespunzator si in classapth. Parsarea fisierului se face in cadrul metodei load(InputStream pInputStream), in modul urmator : protected Map<String, List<String>> load(InputStream pInputStream) catch (Exception e) return map; }
|