Examen Java Hatz

5
Examen Restante: 1. Cuvântul cheie „static” este folosit în java pentru a de ni o variabilă sau o metodă care poate accesata prin intermediul numelui clasei, fără a nevoie să se construiască obiecte de tipul respectiv. În construirea unei aplicaii orientate pe obiecte utili!area atributelor sau metodelor statice trebuie să e evitată "i acestea să e folosite doar în ca!uri de strictă necesitate 2. De sig n patte rnul Factor yMe tho d: #n loc sa se apele!e un constructor in mod direct, pentru crearea unui obiect se apelea!a o metoda de creere a obiectului dintr$o clasa %actor& . Clasa %actor& impl ementea!a o interf ata care specica metoda de creere' (stfel, se po ate schimba la runtime o impl emen ta re a unei functionalitati cu alta ). Inner classes: *e plasea!a clase in interiorul altor clase' #nner classes repre!inta un concept diferit de compo!itie' +e obicei, clasa eterioara are o metoda care returnea!a un obiect din clasa inner'  -ipul obiectului din clasa interioara se specica precum /uterClass.#nnerClass' /biectul clasei interioar e are un lin0 referinta2 catr e obiectul clasei eterioare care l$a creat' /biectul clasei interioare poate accesa membrii obiectului clasei eterioare fara ca sa e nevoie de calicare dreptul de a accesa este asupra tuturor obiectelor membre ale clasei eterioare' 3entru a se obtine referinta la obiectul clasei eterioare din obiectul clasei inner2 se utili!ea!a /uter-&pe.this ' 3entru a crea un obiect din clasa inner pornind de la un obiect din clasa outer se poate utili!a obiect/uter.ne4 ' Clasele inner sunt potrivit e pentru a implementa interfete se reali!ea !a ascunderea implementarii 5. Obiectul Class:  6ava reali! ea!ă 7 --# prin intermediul obiectului Class'

Transcript of Examen Java Hatz

Page 1: Examen Java Hatz

7/26/2019 Examen Java Hatz

http://slidepdf.com/reader/full/examen-java-hatz 1/5

Examen Restante:

1. Cuvântul cheie „static” este folosit în java pentru a deni ovariabilă sau o metodă care poate accesata prinintermediul numelui clasei, fără a nevoie să seconstruiască obiecte de tipul respectiv. În construirea uneiaplicaii orientate pe obiecte utili!area atributelor saumetodelor statice trebuie să e evitată "i acestea să efolosite doar în ca!uri de strictă necesitate

2. Design patternul FactoryMethod:

• #n loc sa se apele!e un constructor in mod direct, pentru crearea

unui obiect se apelea!a o metoda de creere a obiectului dintr$o

clasa %actor&. Clasa %actor& implementea!a o interfata care

specica metoda de creere'• (stfel, se poate schimba la runtime o implementare a unei

functionalitati cu alta

). Inner classes: 

• *e plasea!a clase in interiorul altor clase'• #nner classes repre!inta un concept diferit de compo!itie'• +e obicei, clasa eterioara are o metoda care returnea!a un obiect din clasa

inner'•  -ipul obiectului din clasa interioara se specica precum

/uterClass.#nnerClass'• /biectul clasei interioare are un lin0 referinta2 catre obiectul clasei

eterioare care l$a creat'• /biectul clasei interioare poate accesa membrii obiectului clasei eterioare

fara ca sa e nevoie de calicare dreptul de a accesa este asupra tuturor

obiectelor membre ale clasei eterioare'• 3entru a se obtine referinta la obiectul clasei eterioare din obiectul clasei

inner2 se utili!ea!a /uter-&pe.this '• 3entru a crea un obiect din clasa inner pornind de la un obiect din clasa outer

se poate utili!a obiect/uter.ne4 '• Clasele inner sunt potrivite pentru a implementa interfete se reali!ea!a

ascunderea implementarii5. Obiectul Class:

•  6ava reali!ea!ă 7--# prin intermediul obiectului Class'

Page 2: Examen Java Hatz

7/26/2019 Examen Java Hatz

http://slidepdf.com/reader/full/examen-java-hatz 2/5

• (cesta contine informatie referitoare la tip, informatie care poate

intero8ată'• 3entru ecare clasă pe care o avem in pro8ram, eistă un obiect Class

asociat' 9a compilarea unei noi clase, acest obiect este creat si salvat in

sierul .class'• 9a crearea unui obiect dintr$o clasă, 6:; utili!ea!ă un subsistem numit class

loader'•  -oate clasele sunt incarcate in mod dinamic de către 6:; la prima utili!are a

acestora anume cand se face prima referinta la un membru static al clasei2'• 9a incarcarea unei clase, se verică daca obiectul Class al tipului respectiv

este incarcat, daca nu, se identică sierul .class pe disc, si octetii acestuia

sunt vericati inainte să e incarcati

<. -hread

=. >ceptii

Examen sesiune:

1. ClasspathCalea root pentru directorare variabila sistem C9(**3(-?C9(**3(-? poate include directoare sau siere .jarclasspath e variabila aia de sistem care o setezi in windows ca sa ti mearga java

@. Polimorfism:

• (celasi nume se poate referi la @ metode diferite.• >ste de @ feluri• /verridin8 A metoda cu acceasi semnatura cu o alta din clasa parinte'• /verridin8 A doua sau mai multe metode in acelasi clasa cu acelasi nume, dar

semnaturi diferite.

). Design patternul Iterator

*ablonul #terator asi8ura o cale de accesare secventiala a elementelorunui obiect a8re8at, fara a epune repre!entarea lui de ba!a.

 ;etodele #teratorului pot avea nume diferite

 6ava #terator net2, hasBet2, remove2

 C #>numerator Current, ;oveBet2, 7eset2

Page 3: Examen Java Hatz

7/26/2019 Examen Java Hatz

http://slidepdf.com/reader/full/examen-java-hatz 3/5

 >istă #teratori interni "i eterni

 #teratorul etern este controlat de client, ca în eemplul precedent cumetoda net2

 #teratorul intern este controlat de #teratorul însu"i, căruia trebuie să i sespună ce operaii să efectue!e cu elementele pe care le parcur8e

Dablonul se utili!ea!ă pentru

 ( accesa coninutul unui obiect a8re8at fără a epune repre!entareainternă

 ( asi8ura suport pentru mai multe traversări ale obiectelor a8re8ate

 ( furni!a o interfaă uniformă pentru traversarea structurilor a8re8ate

diferite

 3entru a suporta o iteraie polimorcă

*uportă variaii în traversarea unui a8re8at

 /biectele a8re8ate pot traversate în mai multe feluri "i de mai multe ori

 /biectele #terator simplică interfaa (8re8at

 (8re8atul are nevoie de o metodă unică pentru crearea #teratorului

 *cade cuplarea dintre client "i obiectele a8re8ate

 Cre"te coe!iunea obiectului a8re8at prin eliminarea necesităii de aasi8ura el însu"i traversarea

4. Synchronized si lock 

(dau8area cuvantului re!ervat synchronized in fata unei metode face ca in timpul

eecutiei, la un moment dat, aceasta metoda sa nu poata eecutata pe acelasi

obiect decat de un sin8ur thread. (ltfel spus, un sin8ur thread poate eecuta

aceasta metoda la un moment dat. >ste important de notat faptul ca, o

metoda synchronized poate apelata in acelasi timp pe doua obiecte diferite,

dar daca o apelam pe acelasi obiect, ea nu se poate eecuta simultan in doua

Page 4: Examen Java Hatz

7/26/2019 Examen Java Hatz

http://slidepdf.com/reader/full/examen-java-hatz 4/5

threaduri. +atorita modului in care masina virtuala java 6:;2 sincroni!ea!a

metodele. /rice obiect instanta a unei clase2 din cadrul masinii virtuale java are

asociat un Eblocaj invi!ibilE loc0 $ puteti sa va 8anditi la acest loc0 ca la o variabila

boolean privata a obiectului care ia valoarea true cand obiectul este folositFblocat si

false cand nu este folositFdeblocat2. Cand apele! o metoda a unei clase totdeauna oapele! pe un anumit obiect. Cand apele! o metoda synchronized intr$un thread,

masina virtuala java incearca intai sa obtina blocajul loc02 pe obiectul pe care este

apelata metoda. +aca acest obiect este blocat deja de catre alt apel de

metoda synchronized in alt thread2, threadul va intra in asteptare pana cand

obiectul va deblocat. +aca obiectul nu este blocat, threadul curent va bloca

obiectul, va rula metoda s&nchroni!ed, iar apoi va debloca obiectul.

:om face acum cateva observatii relative la mecanismul synchronized.

. / metoda sincroni!ata apelata pe doua obiecte diferite, in doua threaduri diferite,

nu va sincroni!a cele doua threaduri. 3entru ca blocajele loc0$ul2 se va obtine

independent pe doua obiecte diferite.

!. Glocarea se face totdeauna pe obiectul !ic si nu pe referinte la acesta. (stfel ca,

nu este bine sa se modice obiectul dupa care se sincroni!ea!a, in interiorul codului

". ;etodele sincroni!ate se scriu, in 8eneral, in afara claselor -hread.

#. Sleep si $ait  Metoda  wait() face aproximativ acelasi lucru ca si metoda  sleep, cu doua diferente

esentiale:

  metoda  wait  elibereaza blocajul (lock-ul) pe obiect, spre deosebire de

metoda  sleep() care nu elibereaza blocajul. Practic, prin aceasta eliberare a blocajului pecare o face wait(), alte threaduri care asteapta dupa blocajul aceluiasi obiect, pot sa intre

in lucru, evitand astfel deadlock-ul. ncercati sa rulati pro!ramul cu wait() in loc

de  sleep() si veti vedea ca el se va termina cu succes si nu va mai ajun!e la deadlock.  metoda  wait() se poate "trezi" mai repede decat este specificat in parametrul de

timeout, "dormind" astfel un numar variabil de secunde, spre deosebire de

metoda  sleep care "doarme" intotdeauna un numar fix de secunde. Metoda wait() se poate

trezi mai repede decat este specificat prin parametru, daca un alt thread apeleaza

metoda notify() sau notifyAll()

%. Eternali!e:etinde interfata *eriali!able'

Page 5: Examen Java Hatz

7/26/2019 Examen Java Hatz

http://slidepdf.com/reader/full/examen-java-hatz 5/5

9a obiectele deseriali!ate cu >ternali!able, obiectele sunt construite obisnuit

cu default constructor2 si apoi se apelea!a metoda read>ternal'9a obiectele >ternali!able, subobiectele componente trebuie seriali!ate

manual in 4rite>ternal2 iar la deseriali!are, ele trebuie recuperate de pe

disc'9a mostenire dintr$o clasa >ternali!able, se apelea!a 4rite>ternal si

read>ternal a clasei de ba!a pentru a se asi8ura seriali!are F deseriali!are

corecta