Sunteți pe pagina 1din 102

Advanced Java Programming

1. Programarea avansat orientat pe obiecte....................................................................................... 2


1. Tipurile generice de date...................................................................................................................... 2
2. Reflexia............................................................................................................................................. 91
3. Evenimente........................................................................................................................................ 91
4. Expresii regulate................................................................................................................................. 92
5. Operaii avansate cu clase................................................................................................................... 92
6. abloane de proiectare....................................................................................................................... 92
2. Lucrul cu o baz de date..................................................................................................................... 94
7. Introducere n lucrul cu bazele de date................................................................................................ 94
8. Lucrul cu baza de date MySQL............................................................................................................. 94
3. Manipularea reelei............................................................................................................................ 95
9. Introducere n protocoalele de reea Internet...................................................................................... 95
10. Programarea TCP Socket................................................................................................................... 95
11. Programarea UDP Socket.................................................................................................................. 95
12. Manipularea protocolului HTTP......................................................................................................... 96
13. JavaMail........................................................................................................................................... 96
4. Threads............................................................................................................................................... 98
14. Introducere n threads...................................................................................................................... 98
15. Manipularea thread-urilor................................................................................................................. 98
16. Concurena i sincronizarea thread-urilor........................................................................................... 99
5. AWT i Java 2D................................................................................................................................... 100
17. Introducere n grafica 2D i AWT....................................................................................................... 100
18. Java AWT Layouts............................................................................................................................ 100
19. Controalele Java AWT ..................................................................................................................... 100
20. Java 2D - gestionarea geometriei .................................................................................................... 101
21. Manipularea textului i a imaginilor................................................................................................. 102
22. Tiprirea........................................................................................................................................ 102

1 / 102

1. Programarea avansat orientat pe obiecte


1. Tipurile generice de date

manipularea tipurilor generice reprezint cel mai nalt nivel de abstractizare i dinamic n crearea unei arhitecturi de
clas a programului arhitectur care s fie orientat pe obiect

cu tipurile generice se specific tipul de date ca o clas parametru


numele tipurilor sunt plasate n cadrul parantezelor <>
diamond operator (<>) elimin necesitatea de a declara n mod explicit tipul argumentului n apelul constructorului
tipurilor generice
simbolul wildcard este un semn de ntrebare (?) i reprezint un tip necunoscut

2 / 102

3 / 102

4 / 102

5 / 102

6 / 102

7 / 102

8 / 102

9 / 102

10 / 102

11 / 102

12 / 102

13 / 102

14 / 102

15 / 102

16 / 102

17 / 102

18 / 102

19 / 102

20 / 102

21 / 102

22 / 102

23 / 102

24 / 102

25 / 102

26 / 102

27 / 102

28 / 102

29 / 102

30 / 102

31 / 102

32 / 102

33 / 102

34 / 102

35 / 102

36 / 102

37 / 102

38 / 102

39 / 102

40 / 102

41 / 102

42 / 102

43 / 102

44 / 102

45 / 102

46 / 102

47 / 102

48 / 102

49 / 102

50 / 102

51 / 102

52 / 102

53 / 102

54 / 102

55 / 102

56 / 102

57 / 102

58 / 102

59 / 102

60 / 102

61 / 102

62 / 102

63 / 102

64 / 102

65 / 102

66 / 102

67 / 102

68 / 102

69 / 102

70 / 102

71 / 102

72 / 102

73 / 102

74 / 102

75 / 102

76 / 102

77 / 102

78 / 102

79 / 102

80 / 102

81 / 102

82 / 102

83 / 102

84 / 102

85 / 102

86 / 102

87 / 102

88 / 102

89 / 102

90 / 102

manipularea tipurilor generice reprezint cel mai nalt nivel de abstractizare i dinamic n proiectarea orientat pe
obiecte, programul de arhitectur de clas
tipurile generice se realizeaz prin specificarea tipului de date ca o clas parametru
denumirile tipurilor se pun n cadrul parantezelor! !! ss ww!
operatorul diamond (! ss!! ww!) elimin necesitatea de specificare explicit a tipului argumentului n apelul
constructorului tipurilor generice
simbolul wildcard se marcheaz cu caracterul semnului de ntrebare (?) i reprezint un tip necunoscut

2. Reflexia

capacitatea limbajului de programare de a manipula arhitectura claselor n timpul executrii programului se numete
reflexie
n limbajul de programare Java funcionalitatea reflexiei se afl n pachetul java.lang.reflect
clasa Class se utilizeaz pentru a reprezenta clase concrete
clasa Field reprezint cmpul clasei, clasa Method reprezint metodele n timp ce clasa Parametar reprezint
parametrii metodei

3. Evenimente
programarea care include monitorizarea i manipularea evenimentelor n timpul executrii aplicaiei se numete
programare Event Based
n Java, clasa de baz care reprezint un eveniment este EventObject
pentru a crea un eveniment funcional, mai nti crem clasa Event
alt element n crearea obiectului este crearea interfeei Listener
interfaa Listener trebuie s fie implementat de ctre clasa Listener

91 / 102

ultimul pas n manipularea evenimentelor este crearea clasei principale, respectiv generatorul evenimentelor

4. Expresii regulate

expresiile regulate reprezint un mod de definire a unui set de caractere cu care se formeaz aa-numitul ablon

pentru crearea expresiilor regulate este necesar stpnirea sintaxei expresiilor regulate

funcionalitatea expresiilor regulate se afl n pachetul java.util.regex


pentru definirea abloanelor n Java se folosete clasa Pattern
expresiile regulate folosesc caractere speciale pentru definirea regulilor

5. Operaii avansate cu clase

clasele care se declar independent, n afara oricrei alte clase, sunt cunoscute i ca clase de nivel nalt (top-level
classes)
n limbajul de programare Java putem crea o clas care se afl n cadrul altei clase; astfel de clase sunt numite clase
imbricate
clasele imbricate statice reprezint membri ai clasei n care sunt definite i pot fi instaniate fr o instaniere
prealabil; aceste clase nu au acces la membrii clasei n care sunt definite

clasele nestatice imbricate sau clasele interioare reprezint membri nestatici ai clasei n care se afl i obiectele acestor
clase exist numai n cadrul obiectelor clasei n care se afl; aceste clase au acces la membrii clasei n care se afl;
clasele locale sunt clasele definite n cadrul blocului; de cele mai multe ori, aceste clase se afl n cadrul corpului
metodei
clasele anonime sunt clasele fr nume; ele permit ca declararea i instanierea s fie fcute n cadrul unei structuri
expresiile lambda permit o reprezentare precis i clar a interfeei cu o singur metod ca expresie; reprezint un
substitut pentru clasele anonime cu o singur metod

6. abloane de proiectare

92 / 102

abloanele de proiectare sunt o soluie standard pentru o problem de programare


singleton pattern este un ablon creativ care garanteaz c n cod va fi posibil s se creeze numai o singur instan a
unui anumit obiect
ablonul pattern observer ofer difuzarea strii unui obiect (Subject) la diferite obiecte (Subscribers) care
supravegheaz acel obiect
ablonul factory este utilizat atunci cnd trebuie s se creeze o clas intermediar, care va servi pentru crearea
centralizat a obiectului
decorator este un model structural care permite modificarea funcionalitii clasei existente, n timp ce clasa Decorator
nu este n legtur direct ierarhic cu clasa pe care o decoreaz
modelul MVC este un model arhitectural pentru crearea de aplicaii n care exist trei pri clar difereniate: Model,
View i Controler

93 / 102

2. Lucrul cu o baz de date


7. Introducere n lucrul cu bazele de date

baza de date (database sau prescurtat db) reprezint o colecie organizat de date

bazele de date sunt manipulate cu sistemele de manipulare a bazelor de date (database management system) sau
prescurtat DBMS

JDBC este acronimul de la JavaDatabaseConnectivity, ce reprezint o bibliotec pentru efectuarea tuturor


operaiunilor de manipulare a bazei de date

ncepnd cu ediia 6, Java vine cu un sistem integrat de manipulare a bazelor de date: Java DB

8. Lucrul cu baza de date MySQL

MySQL este o baz de date multirelaional, foarte popular n diferite domenii de programare
pentru a gestiona baza de date MySQL, folosim MySQL connector/JDBC
pentru a defini interogri SQL, putem utiliza interfaa Statement
pentru a defini o interogare cu parametri dinamici, putem folosi interfaa PreparedStatement
interfaa CallableStatement este folosit pentru a apela procedura stored

94 / 102

3. Manipularea reelei
9. Introducere n protocoalele de reea Internet

protocolul de reea este un set de reguli care permite comunicarea ntre dou calculatoare conectate
o clasificare pe Internet n straturi care include patru straturi: Link, Internet, Transport i Application
protocolul TCP este protocolul pentru lucru ntr-un mediu conectat care este caracterizat printr-un grad nalt de
fiabilitate i o garanie de livrare de pachete
protocolul UDP nu necesit o conexiune persistent ntre end point-urile comunicrii. Acest protocol este rapid i
eficient, dar nu foarte sigur din punct de vedere al integritii datelor, deoarece nu garanteaz livrarea pachetelor
socket reprezint un endpoint n comunicarea ntre cele dou procese care este definit de adresa IP i numrul de
porturi

10. Programarea TCP Socket

conectarea la protocolul TCP este bidirecional i sincronizat i necesit dou pri: client i server
serverul are rol de asculttor care monitorizeaz toate activitile pe un port dat i dup ce activitatea a avut loc,
serverul iniializeaz Socket-ul i execut activitile definite

clientul iniializeaz comunicarea cu serverul i dup ce i transmite cererea, ateapt de la server un rspuns cu care
se stabilete schimbul reciproc de informaii
pentru a crea un server socket se folosete clasa ServerSocket, iar pentru crearea unui client socket se folosete clasa
Socket

11. Programarea UDP Socket

UDP este abrevierea de la User Datagram Protocol


datagram este un mesaj a crui livrare nu este garantat de nimic, respectiv cnd trimitem un astfel de mesaj nu

95 / 102

putem fi complet siguri c va ajunge acolo unde trebuie i c va conine tot ce am trimis n el
n Java pentru lucrul cu UDP exist dou clase: DatagramSocket i DatagramPacket
DatagramSocket este clasa care ascult i ateapt pachetele UDP
DatagramPacketreprezint nsui mesajul UDP i instana acestei clase este obiectul care se folosete pentru
reprezentarea mesajelor care intr i ies

12. Manipularea protocolului HTTP

Hyper Text Transfer Protocol este un protocol de cel mai nalt nivel (Application) care se poate folosi pentru schimbul
de orice tip de informaii ntre diferite tipuri de aplicaii, dar principala sa menire este schimbul de informaii n
aplicaiile web

aplicaiile comunic reciproc prin procesul care se numeteResponse-Request (cerere i rspuns)

partea principal a cererii este linia cererii (Request Line) care conine metoda HTTP, documentul i versiunea
protocolului HTTP folosit

n cadrul rspunsului serverului exist statusul rspunsului pe baza cruia clientul tie dac rspunsul este valid sau nu;
acest status este reprezentat prin coduri (numere de trei cifre) de la 100 pn la 600, unde nu toate numerele sunt
folosite

web server este n esen un server TCP cu logica pentru manipularea protocolului HTTP

13. JavaMail

JavaMail API se folosete pentru crearea i citirea e-mail-urilor ntr-un mod independent de platform
funcionalitile JavaMail API se afl n pachetul javax.mail
obiectul de tip Session va reprezenta sesiunea curent cu serverul mail
clasa abstract Message se folosete pentru crearea clasei mesajelor concrete; MimeMessage este clasa folosit
pentru a reprezenta mesajeleconform standardului Mime

96 / 102

clasa Store reprezint depozitul de mesajepe server, iar clasa Folder, folderul concret, prin care mesajele sunt grupate
pe server

97 / 102

4. Threads
14. Introducere n threads

capacitatea software-ului de a efectua mai multe aciuni distincte n acelai timp se numete de concuren
(Concurrency)

n Java,cele mai importante funcionaliti sunt plasate n cadrul pachetului java.util.concurrent

procesele sunt de obicei sinonime cu aplicaia sau programul

un thread este cea mai mic secven a instruciunilor de program cu care se poate manipula n mod independent;
threads mpart aceleai resurse respectiv partajeaz resursele procesului

faptul c threads mpart acelai spaiu de memorie, pe lng avantaje creeaz i anumite probleme, cum ar fi
concurena, adic dreptul la anumite resurse

fiecare program Java este alctuit din cel puin un thread, care se numete programul principal, respectiv, main thread

15. Manipularea thread-urilor

exist dou moduri n care un cod se poate executa ntr-un thread separat: implementarea interfeei Runnable sau
motenirea clasei Thread
metoda runeste primul punct care se va executa dup activarea thread-ului indiferent de modul n care utilizm
crearea thread-ului i putem porni de aici pentru a activa celelalte funcionaliti
prin implementarea interfeei Runnable, clasa Threadservete drept nveli pentru clasa Runnable cu ajutorul creia
putem s manipulm clasa Runnable n contextul unui thread
un thread se iniializeaz cu metoda start a clasei Thread
executarea unui thread se poate pune pe pauz pentru un timp folosind metoda sleep
thread-urile se pot parametriza n aceleai moduri n care acest lucru se realizeaz cu clasele obinuite (constructor,
setarea cmpurilor)

98 / 102

oprirea unui thread folosind metoda stop se considernesigur i se recomand oprirea prin controlul valorilor
cmpurilor thread-ului
metodele de suspendare (suspend) i repornire a unui thread (resume) sunt metode care, de asemenea, se consider
nesigure

16. Concurena i sincronizarea thread-urilor

threads comunic n primul rnd prin partajarea accesului la cmpuri, precum i prin referinele la obiecte
atunci cnd threads comunic pot aprea nite probleme poteniale, care se rezolv utiliznd sincronizarea
pentru ca o resurs din Java s fie sincronizat, se folosete modificatorul Synchronizedsau declaraia cu aceeai
denumire
cnd marcm o metod drept sincronizat, nseamn c atunci cnd un thread obine drepturi asupra ei, niciun alt
thread nu o va mai puteafolosipn cnd primul thread nu o elibereaz
putem anuna n mod explicit un thread s atepte pn cnd primete comanda s continue. n acest scop folosim
cuvintele cheie Wait, NotifyiNotifyAll

99 / 102

5. AWT i Java 2D
17. Introducere n grafica 2D i AWT

Java Abstract Window Toolkit este o bibliotec de clase care asigur gestionarea interfeei grafice de utilizator n Java
AWT folosete o astfel de abordare, acolo unde se implementeaz elementele interfeei grafice de utilizator cu
ajutorul controalelor de sistem native
conceptul de interfa grafic de utilizator AWT (GUI) se bazeaz pe componente (Components) plasate n
cadrulcontainerelor organizate prin layout
componentele permit utilizatorului s interacioneze cu programul; unele dintre componente sunt butoane, scroll bar,
label, cmpul textual
componentele care conin alte componente n coninutul lor se numesc containere
ordinea componentelor se stabilete folosind layout-ul
componentele se adaug n container folosind metoda add
evenimentele componenteise realizeaz n AWT prin clase Java standard de evenimente i asculttorii (listeners) lor

18. Java AWT Layouts

modul n care controalele vor fi poziionate ntr-un container se poate regla cu ajutorul layout-urilor
cnd crem un container, se subnelege c el are by default activat un BorderLayout
Border layout mparte ntreaga fereastr n cinci uniti: nord, vest, est, centru i sud sau echivalentele lor: Page Start,
Page End, Line Start, Center i Line End.
FlowLayoutordoneaz toate comenzile, una dup alta, pe plan orizontal, pn la sfritul containerului, dup care
trece la urmtorul rnd i continu ordonarea
GridLayoutcreeaz un tabel n container, unde fiecare celul a tabelului reprezint o fereastr pentru un control
CardLayout poate conine mai multe containere, ns doar unul va fi afiat pe rnd

100 / 102

19. Controalele Java AWT

Java AWTconine clase care reprezint controalele sistemului de operare


Label este un control de afiare a textuluicare se creeaz prin instanierea clasei Label, unde se folosete un
constructor gol, un constructor care primete textul etichetei sau constructor care primete textul etichetei sau
alinierea
Button este un control prin care efectum o aciune ntr-o aplicaie. Vizualizarea lui este foarte similar cu un control
Label, dar funcionalitatea lui este ceva mai complex, deoarece este capabil s genereze o aciune
Checkbox-urile sunt controale care se comport ca ntreruptoarele. Ele pot s aib una dintre aceste dou stri:
activat sau dezactivat (true sau false)
Checkbox-urile sunt seturi de controale interdependente care se comport astfel nct doar un singur control s poate
fi activat, n timp ce celelalte sunt dezactivate automat. Un astfel de tip de control Checkbox se numete Radio Group
sau taste radio
Controlul Choice este cunoscut drept list drop-down i include o list de date din care utilizatorul poate s aleag una,
adic poate fi selectat doar un element pe rnd
Controlul List, spre deosebire de meniul drop-down, are nlime fix iface posibil alegerea mai multor opiuni
TextField i TextArea sunt controale de introducere a textului cu caracteristici foarte similare, dar i cu deosebirea c
TextArea are opiunea de introducere a unui text multi-liniar, pe cndTextField nu are aceast opiune

20. Java 2D - gestionarea geometriei

Java 2D API permite crearea graficelor bidimensionale, utiliznd textul i imaginile n programele Java implementate
prin extinderea lui AWT
pentru a desena orice pe o component, acea component trebuie s permit s se deseneze pe ea, respectiv s
conin metoda paint care trebuie reimplementat
clasa Graphics conine metode de desen pentru majoritatea formelor geometrice, pentru care utilizeaz parametrii
generali pentru toate formele
poziionarea formelor grafice ntr-un container se face n comparaie cu acel container, ceea ce nseamn c o anumit
form, care ncepe din punctul x: 0 i y: 0, va ncepe dincolulstnga sus al ferestei
metodadrawLine se folosete pentru a desena o linie, drawOvalpentru desenul cercul sau elipsa, drawPolygonpentru
desenarea poligoanelor
este posibil desenarea i umplerea formelor cu metoda fill

101 / 102

obiectul desenat poate fi transformat prin transformare, translaie i rotaie, unde transformarea este schimbarea
formei, translaia - schimbarea poziiei, iar rotaia - rotaia obiectului

21. Manipularea textului i a imaginilor

pe componentele de desen putem desena geometrie, dar i un text


majoritatea claselor necesare pentru desenarea textului se afl n pachetul java.awt.font. Pe lng acest pachet, vom
folosi, de asemenea, i clasa java.awt.Font care ofer posibilitatea de gestionare a fonturilor
clasele Graphics2D i Graphics conin metoda drawString care asigur desenarea textului n spaiul de desenare;
aceast metod este eficient pentru un rezultat rapid
un mod mai serios de randare a textului include folosireaclasei TextLayout cu instanele clasei Font i clasele
FontRenderContext
tehnologia care se folosete pentru atenuarea marginilor zimate, precum i a textului se numete Antialiasing, i
aceasta include adugarea de puncte a cror culoare reprezint valoarea medie ntre culoarea fundalului i culoarea
desenului
pentru a ncrca o imagine ntr-o aplicaie, se folosete metodagetImagea clasei Toolkit care returneaz un obiect
Image

22. Tiprirea

Java AWT are opiunea de a trimite obiecte Graphics ctre imprimant utiliznd drivere de sistem i comenzi de
tiprire
funcionalitile destinate tipririi se afl n pachetul java.awt.print
obiectul de baz al tipririi este obiectul clasei PrinterJob
poatefitrimis la tiprireorice obiect care implementeaz interfaa Printable
tiprirea se activeaz cu metoda printa clasei PrinterJob

102 / 102

S-ar putea să vă placă și