Documente Academic
Documente Profesional
Documente Cultură
Curs 1 ................................................................................ 6
Principii de baza in obiectualitate ....................................... 6
Clasa: ........................................................................... 6
Interfaa: ....................................................................... 6
Implementarea: .............................................................. 6
Ascunderea implementarii: ................................................. 7
SPECIFICATORII DE ACCES: ............................................ 7
Private: ......................................................................... 7
Public: .......................................................................... 7
Protected: ...................................................................... 7
REUTILIZAREA IMPLEMENTARII COMPOZIT IE .............. 7
-
Compozitie:............................................................... 7
EXTERNALIZARE .......................................................... 36
EVITAREA SERIALIZAR II ANUMIT OR COMPONEN TE ALE
OBIECTELOR................................................................. 37
CURS 9. ........................................................................... 38
RTTI ............................................................................. 38
OBIECTUL CLASS .......................................................... 38
CLASS LITERAL ............................................................ 38
GENERIC CLASS REFERENCE ......................................... 39
COMPARAREA OBIECTELOR DE TIP CLASS .................... 39
REFLECTION ................................................................. 39
DESIGN PATTERNUL PROXY .......................................... 40
CURS 10 .......................................................................... 41
CONCURENTA IN JAVA ................................................. 41
INTRODUCERE IN PROGRAMAREA CONCURENTA: ......... 41
EXECUTIA MAI RAPIDA A PROGRAMELOR ..................... 41
ABORDARI ALE LP ........................................................ 42
CODE DESIGN ............................................................... 42
THREADING IN JAVA .................................................... 42
TERMINOLOGIE ............................................................ 43
CLASA THREAD ............................................................ 43
VARIAT II LA CREAREA TASKURILOR ............................ 43
EXECUTORS .................................................................. 44
CREAREA DE THREADURI PT EXECUTORS ..................... 44
RETURNAREA DE VALORI DIN THREADURI ................... 44
THREADURI DAEMON ................................................... 45
CREAREA UNOR INTERFETE GRAFICE RESPONSIVE ....... 45
PRINDEREA E XCEPTIILOR ............................................. 45
CURS 11 .......................................................................... 47
Partajarea resurselor .......................................................... 47
PARTAJAREA RESURSELOR MUTEX ............................ 47
PARTAJAREA RESURSELOR SYNCHRONIZED ............... 47
MECANISM MUTEX EXPLIC IT: LOCK .............................. 47
AVANTAJELE MECANISMULUI LOCK ............................. 47
ATOMIC ITATE SI VOLAT ILITATE ................................... 48
SECTIUNI CRIT IC E ........................................................ 48
4
Teo rie Ja va
Curs 1
Cuprins:
Principiile programarii obiectuale;
Notiunea de obiect;
Reprezentarea claselor:
Nume Tip(numele clasei) -> Light
Interfata (Functionalitatiile Clasei )-> On();
Off();
Brighten();
Dim();
Definirea unui obiect din clasa Light:
Light it = new Light();
Apelarea unei functii din clasa light cu ajutorul obiectului
definit in clasa respectiva:
It.on();
Ascunderea implementarii:
Exista doua tipuri de programatori:
-
SPECIFICATORII DE ACCES:
Private: elementele private pot fi accesate doar de creatorul
clasei in cadrul metodelor acelei clase
Public: elementele publice sunt disponibile oricaror alte
clase
Protected: similar cu private, utilizat in mostenire, clasele
care mostenesc pot accesa elemente private din clasele de baza.
CONTAINERE
-
CU RS 2- 3
-
ORGANIZAREA CODULUI
-
TIPURI DE DATE
Tipurile primitive:
-
BigInteger si BigDecimal
Sunt vazute ca sic lase de tip Wrapper insa nu au un tip
primitive correspondent;
J A V A : l i m b a j d e p r o g r a m a r e o r i e n t a t s a f e t y;
La crearea unui Array se creaza un sir de referinte
fiecare initializata la valoarea null => Fiecare membru al
sirului trebuie initializat;
JAVA nu permite utilizare a unui indice in afara range ului array-ului (se arunca o exceptie)
CLASE!!!!
-
11
VIZIBILITATEA NUMELOR
-
OPERATORI
-
Aliasing: la transmiterea unui obiect ca si argument intro metoda, se transmite o referinta, deci modificarea
valorii in metoda afecteaza valoarea obiectului din afara
metodei;
Operatorii ++ si au forma postfixata (similar cu
C/C++);
Operatorii == si =! Aplicati pe referinte de obiecte,
compara referintele, si nu continutul obiectelor.
Pentru compararea continutului obiectelor, metoda
equals: n1.equals(n2).
Pentru clasa String se pot folosi + si +=;
CONTROLUL EXECUTIEI
-
If-then-else
While, do-while, for
Foreach: pentru a selecta un element d intr-un array si a
efectua o prelucrare pe acel element:
Foreach functioneaza pentru orice sir de obiecte
Iterabile
Intreruperea executiei unei secvente: return, break,
continue;
Switch: intstructiunea de selectie din mai multe
alternative.
INITIALIZAREA OBIECTELOR
-
SUPRAINCARCAREA METODELOR
-
13
DISTRUGEREA OBIECTELOR
-
15
BLOCUL STATIC
-
Static{/*initializari*/}
Blocul static este apelat o singura data, la prima creare a
unui obiect din clasa respective sau la apelearea unei
member statice din acea clasa;
Blocul static poate sa initializeze doar date statice
INITIALIZAREA SIRURILOR
-
Public:
Membrii publici pot fi referiti din afara claselor;
Specifica interfata claselor;
Private:
Pot fi referiti doar din interiorul claselor de definire;
Specifica interfata claselor;
Fara specificator de acces acces package;
16
17
CU RS 4.
REALIZAREA CLASELOR
-
COMPOZIT IE;
MOSTENIRE;
ALEGEREA INTRE MOSTERNIRE SI COMPOZIT IE
MECANISMUL DE UPCAST
SINTAXA MOSTENIRII:
-
IS-A vs Is-Like-A
-
OPERATIA DE DELEGARE
-
FINAL
-
MECANISMUL UPCAST
-
DOWNCAST
-
21
CU RS 5
Interfete
Cuprins:
CLASE ABSTRACTE
INTERFETE
DESIGN PATTERNUL STRATEGY SI ADAPTER
DESIGN PATERNUL FACTORY
CLASE ABSTRACTE
-
CONCEPTUL DE INTERFATA
-
22
MOSTENIREA MULTIPLA
-
24
CU RS 6
CLASE INTERIOARE
INNER CLASSES
-
25
DE CE CLASE INNER
-
26
CONTROL FRAMEWORKS
-
27
CU RS 7
COLECTII, EXCEPTII
S i r u r i l e d e o b i e c t e ( a r r a ys ) : r e p r e z i n t a c e l m a i e f i c i e n t m o d
pentru a pastra obiecte.
Neajuns: Au dimensiunea fixata la compilare
-
CONTAINERE GENERICE
-
TipContainer<TipDeBaza>
In container se pot pastra doar obiecte din tipul de baza
Se obtine eroare la compilare daca se incearca stocarea
unui obiect dintr-un alt tip
Nu mai este necesara operatia de cast( conversie) la
regasirea obiectelor
Operatii de efectuat la utilizarea containerelor:
Definirea obiectului de tip container;
Inserarea de obiecte in container ( de ex: Metoda add )
Regasirea obiectelor(de ex Metoda get)
Daca sunt containere generice nu mai este
nevoie de cast;
La containere pre -JavaSE, trebuie
conversie.
LUCRUL CU CONTAINERE
-
ITERATORI
-
EXCEPTII
-
GUARDED REGIONS
Try
{
//codul care este susceptibil sa genereze exceptie
} c a t c h ( T yp e 1 t p 1 ) {
//exceptii de tipul 2
} c a t c h ( T yp e 2 ) {
//exceptii de tipul2}
Finall y{
//cod care se executa indiferent de tipul de exceptie aruncat( sau
nu)
}
-
30
SPECIFICAREA EXCEPTIEI
-
INLANTUIREA EXCEPTIILOR
-
31
EXCEPTII PIERDUTE
-
RESTRICTII LA EXCEPTII
-
GUIDELINES:
-
32
CU RS 8
I/O Java
SISTEMUL DE I/O INTR-UN LIMBAJ DE PROGRAMARE
-
CLASA FILE
-
INPUT si OUTPUT
-
TIPURI DE InputStream
-
TIPURI DE OutputStream
-
TIPURI DE FilterInputStream
-
TIPURI DE FilterOutputStream
-
34
READER si WRITER
-
RANDOM AccessFile
-
FISIERE JAR
-
35
SERIALIZARE:
-
EXTERNALIZARE
-
36
37
CU RS 9.
RTTI
RTTI
-
R u n T i m e T yp e I d e n t i f i c a t i o n
Descoperirea tipului la executie si utilizarea acestuia
2 Tipuri de RTTI:
Traditional la compilare;
Reflection la executie;
Upcast: necesita realizarea automata a RTTI pentru
invocarea automata(polimorfica) a metodei suprascrise
Prin RTTI se poate identifica tipul exact al unui obiect la
executie (limbajul de programare are metode pentru a
realiza acest lucru)
OBIECTUL CLASS
-
CLASS LITERAL
-
Boolean.class == boolean.TYPE
Crearea unei referinte prin .class nu ini tializeaza
obiectul de tip Class corespunzator.
Pregatirea unui obiect pentru utilizare se face in 3
moduri:
Incarcarea clasei, realizata de class loader, se gaseste
b yt e c o d u l p e d i s c s i s e c r e a z a o b i e c t u l d e c l a s a c a t r e
alte clase;
Linking: se aloca sp atiu de stocare pentru membrii
statici si se rezolva toate referintele realizate de clasa
catre alte clase.
Initializare: se executa initializatorii statici si
blocurile statice de initializare. Initializarea este
intarziata pana la prima referinta la o metoda statica
sau un camp non-static.
Initializarea obiectului Class este amanata atata timp cat
este posibil.
REFLECTION
-
39
P r o x y: U n o b i e c t s u b s t i t u t , t a n s m i s i n l o c u l u n u i o b i e c t
real, pentr a furniza prelucrari aditionale inainte de a
transmite operatiile catre obiectul real.
D yn a m i c p r o x y: s e c r e a z a o b i e c t u l p r o x y d i n a m i c s i s e
trateaza apelurile catre metodele proxied in mod dinamic.
40
CU RS 10
CONCURENTA IN JAVA
INTRODUCERE IN PROGRAMAREA CONCURENTA:
-
41
ABORDARI ALE LP
Taskurile concurente sa fie izolate unele de altele ( fiecare
functie concurenta nu produce side efects) modelul distributed
m e m o r y.
-
CODE DESIGN
-
THREADING IN JAVA
-
42
TERMINOLOGIE
-
CLASA THREAD
-
43
EXECUTORS
-
T h r e a d F a c t o r y: i n t e r f a t a p e n t r u c r e a r e a d e t h r e a d u r i l a
cerere. Threadurile pot fi personalizate ( de exemplu,
threaduri daemon)- metoda newThread
Obiecte implementand ThreadFactory pot fi furnizate ca
si constructori pentru Executori; executor service -ul
rezultat va utiliza acest threadFactory pentru crearea
noilor threaduri
44
THREADURI DAEMON
-
PRINDEREA EXCEPTIILOR
-
45
46
CU RS 11
Partajarea resurselor
PARTAJAREA RESURSELOR MUTEX
-
C u v a n t u l c h e i e s yn c h r o n i z e d : r e a l i z e a z a m u t u a l
exclusion pentru o resursa
Resursa partajata se incapusleaza intr -un obiect
Toate metodele care utilizeaza resursa sunt marcate ca si
s yn c h r o n i z e d
M e c a n i s m u l s yn c h r o n i z e d : f i e c a r e o b i e c t a r e u n m o n i t o r .
Cand un thread intra in zon a de cod sync. , threadul
achizitioneaza monitorul, si nici un alt thread nu va mai
p u t e a i n t r a i n t r - o z o n a s yn c a a c e l u i a s o b i e c t
Daca primul thread care a achizitionat monitorul intra
intr-o noua zona sync a aceluias obiect, se tine un contor
a numatului de monitoare achizitionate de thread
E x i s t a s i u n m o n i t o r l a n i v e l d e c l a s a p t s yn c l a m e t o d e
statice
A v a n t a j u l L o c k a s u p r a s yn c : i n m e t o d e l e s yn c . P o t a p a r e a
exceptii, si atunci nu exista nici o sansa sa se readuca
sistemul in stare valida
C u L o c k , s e u t i l i z e a z a m e c a n i s m u l t r y - f i n a l l y, s i f i n a l l y
se executa in orice situatie ( chiar si la o exceptie)
Sansa pt erori cu sync este mai redusa, se voi utiliza
Lock doar in cazuri speciale
47
ATOMICITATE SI VOLATILITATE
-
SECTIUNI CRITICE
-
Metoda Sleep
Metoda wait, threadul devine runnable dupa ce primeste
un notify sau signal
Threadul asteapta o operatie de I/O sa fie finalizata
T h r e a d u l a p e l e a z a o m e t o d a s yn c s i s e a s t e a p t a a c h i z i t i a
monitorului.
INTRERUPEREA TASKURILOR
-
49
DEADLOCK
-
50