Documente Academic
Documente Profesional
Documente Cultură
Obiective
Deprinderea principalelor concepte ale limbajelor de programare
nvarea modului de aprofundare a unui limbaj
nvarea conceptelor paradigmei obiectuale
Deprinderea de aptitudini pe programare n Java si .NET
Organizare
Laborator: 418/419
Echipa: Conf. Dr. Mircea Moca, Asist. Drd. Alexandru Butoi
Limbaje de programare
Cerine, evaluare
Prob teoretic: 50% - din care
Bibliografie
Bruce Eckel, Thinking in Java, 4th edition, Prentice Hall 2006
(handouts la fiecare curs)
Organizarea codului
Pentru fiecare clasa compilata se produce un fisier .class
Un program este compus dintr-o colectie de fisiere .class
Acestea pot fi arhivate: fisier .jar
Fiecare fisier .java incepe cu mentiunea package: se indica numele
packageului din care vor face parte clasele
Clasele utilizate care fac parte din alt package se importa cu import
Toate clasele dintr-un package vor fi colectate intr-un singur
subdirector
Conventie pentru denumirea packageurilor: utilizarea domeniilor de
internet in ordine inversa
Calea root pentru directorare: variabila sistem CLASSPATH
CLASSPATH poate include directoare sau fisiere .jar
Tipurile primitive
Variabile de dimensiune mica, salvate direct pe stiva,
Nu necesita new la alocare
boolean, char, byte, short, int, long, float, double si void
Fiecare din acestea are un wrapper type pentru construirea obiectului
din tipul corespondent
Clase
class ATypeName { /* class body */}
Clasele contin:
- Campuri
- Metode
Modul de accesare a unui camp/metoda
objectReference.member
Pentru datele din tipuri primitive se garanteaza initializarea la valori
implicite (false si 0)
Vizibilitatea numelor
Pentru a produce nume de biblioteci unice, s-a realizat conventia ca
fiecare programator sa isi utilizeze propriul nume de domeniu de
internet ca si nume de biblioteca
ex: ro.ubbcluj.econ.gsilaghi
Punctul in numele bibliotecii reprezinta un subdirector de pe disc
Utilizarea altor componente: import
import java.util.ArrayList; // se importa o clasa
import java.util.*; // se importa tot packageul java.util
Operatori
Toti operatorii produc o valoare prin aplicarea lor
Ei pot produce si side-effects (modificarea valorii operanzilor)
Operatorul de atribuire =
n1.equals(n2);
Controlul executiei
if-then-else
while, do-while, for
foreach: pentru a selecta un element dintr-un array si a efectua o
prelucrare pe acel element
Initializarea obiectelor
In fiecare clasa se garanteaza initializarea obiectelor prin
scrierea unui constructor
La crearea unui obiect, Java apeleaza automat constructorul
clasei respective
Numele constructorului este identic cu numele clasei
Constructorul default: nu are argumente
Constructorul nu are tip de return
Daca se creaza o clasa fr nici un constructor, compilatorul
creaz in mod automat constructorul default
Supraincarcarea metodelor
Utilizarea aceluiasi nume de metoda pentru mai multe metode cu
argumente diferite
Cum diferentiaza Java intre metodele supraincarcate: aceste metode
trebuie s difere prin lista argumentelor
La supraincarcare, primitivele din lista de argumente sunt
promoted catre tipurile mai largi
Metodele nu se pot supraincarca pe tipul de return
Distrugerea obiectelor
Garbage collector-ul dezaloca memoria alocata prin new, atunci cand
obiectele nu mai sunt folosite
Metoda finalize(): permite operatii de stergere inainte ca obiectele sa fie
supuse garbage collectorului
Metoda finalize(): Java nu garanteaza apelarea acestei metode,
programatorul nu are control asupra momentului cand se apeleaza
garbage collectorul
Daca obiectele noastre agrega alte obiecte, garbage collectorul se ocupa
de dezalocarea obiectelor agregate
Finalize se utilizeaza in general pentru a implementa termination
conditions pentru un obiect (de exemplu inchiderea unui fisier)
Blocul static
static {/* initializari */};
Blocul static este apelat o singura data, la prima creare a unui obiect
din clasa respectiva sau la apelarea unei membre statice din acea clasa
Blocul static poate sa initializeze doar date statice
Initializarea sirurilor
Sirurile sunt definite prin operatorul de indexare: int[] a;
Pentru a se crea spatiu de memorie pentru sir, sirul trebuie initializat
Fiecare sir are un membru intrinsec: length (lungimea sirului)
Elementele sunt indexate de la 0 la length-1
Private: